let get_internal =
  Internals.memo
    (fun kf ->
      match kf.fundec with
      | Definition (f,_) ->
          (try
             Stack.iter
               (fun g -> if kf == g then begin
                  Cil.warn
                    "recursive call detected during deref analysis of %a. Ignoring it is safe if the value analysis suceeded without problem."
                    Kernel_function.pretty_name kf;
                  raise Ignore
                end
               )
               call_stack;

             (* No deref to compute if the values were not computed for [kf] *)
             (* if not (Value.is_accessible kf) then raise Ignore; *)

             Stack.push kf call_stack;
             let computer = new do_it in
             ignore (visitCilFunction (computer:>cilVisitor) f);
             let _ = Stack.pop call_stack in
             computer#result
           with Ignore -> 
             Zone.bottom)
      | Declaration _ -> 
          Zone.bottom)