anchor.diff:    erruby_boolean:new_false(Env);
   
   eval_ast({ast, type, array, children, Args}, Env) ->
  -  [_ |Envs] = scanl(fun eval_ast/2, Env, Args),
  -  EvaledArgs = lists:map( fun erruby_rb:ret_val/1, Envs),
  -  LastEnv = lists:last(Envs),
  +  {EvaledArgs, LastEnv} = eval_args(Args, Env),
     erruby_array:new_array(LastEnv, EvaledArgs);
   
   eval_ast({ast, type, int, children, [N]}, Env) ->
  
positive.code: 
  eval_ast({ast, type, casgn, children, [ParentConstAst, Name, ValAst] }, Env) ->
    ParentConstEnv = parent_const_env(ParentConstAst, Env),
    #{ret_val := ParentConst} = ParentConstEnv,
    NewEnv = eval_ast(ValAst, ParentConstEnv),
    #{ret_val := Val} = NewEnv,
    erruby_object:def_const(ParentConst, Name, Val),
    NewEnv;
  
  %TODO throw error when not_found
  eval_ast({ast, type, const, children, [ParentConstAst, Name]}, Env) ->
    ParentConstEnv = parent_const_env(ParentConstAst, Env),
    #{ret_val := ParentConst} = ParentConstEnv,
    LocalConst = erruby_object:find_const(ParentConst, Name),
    Const = case LocalConst of
              not_found -> erruby_object:find_const(erruby_object:object_class(), Name);
  
negative.code:   [Receiver | [Msg | Args]] = Children,
    ReceiverFrame = receiver_or_self(Receiver, Env),
    Target = erruby_rb:ret_val(ReceiverFrame),
    {EvaledArgs, LastEnv} = eval_args(Args, ReceiverFrame),
    Method = erruby_object:find_instance_method(Target, Msg),
    process_eval_method(Target,Method, EvaledArgs, LastEnv);
  
  