def slot_type_for(name)
      if @callable.arguments_type.variable_index(name)
        slot_def = [:arguments]
      elsif @callable.frame_type.variable_index(name)
        slot_def = [:frame]
      elsif @method.arguments_type.variable_index(name)
        slot_def = [:caller , :caller ,:arguments ]
      elsif @method.frame_type.variable_index(name)
        slot_def = [:caller ,:caller , :frame ]
      elsif
        raise "no variable #{name} , need to resolve at runtime"
      end
      slot_def << name
    end
def slot_type_for(name)
      if @callable.arguments_type.variable_index(name)
        slot_def = [:arguments]
      elsif @callable.frame_type.variable_index(name)
        slot_def = [:frame]
      elsif @method.arguments_type.variable_index(name)
        slot_def = [:caller , :caller ,:arguments ]
      elsif @method.frame_type.variable_index(name)
        slot_def = [:caller ,:caller , :frame ]
      elsif
        raise "no variable #{name} , need to resolve at runtime"
      end
      slot_def << name
    end
determine how given name need to be accsessed.
 For blocks the options are args or frame
 or then the methods arg or frame