# File lib/rcodetools/completion.rb, line 226
  def prepare_line(expr, column)
    set_expr_and_postfix!(expr, column){|c| /^.{#{c}}/ }
    @prefix = expr
    case expr
    when /^\$\w*$/              # global variable
      __prepare_line 'nil', 'global_variables', '%n'
    when /^@@\w*$/              # class variable
      __prepare_line 'nil', 'Module === self ? class_variables : self.class.class_variables', '%n'
    when /^@\w*$/               # instance variable
      __prepare_line 'nil', 'instance_variables', '%n'
    when /^([A-Z].*)::([^.]*)$/    # nested constants / class methods
      @prefix = $2
      __prepare_line $1, "#$1.constants | #$1.methods(true)",
      %Q[#$1.constants + #$1.methods(true).#{methods_map_code($1)}]
    when /^[A-Z]\w*$/           # normal constants
      __prepare_line 'nil', 'Module.constants', '%n'
    when /^(.*::.+)\.(.*)$/       # toplevel class methods
      @prefix = $2
      __prepare_line $1, "#$1.methods",
      %Q[%n.#{methods_map_code($1)}]
    when /^(::.+)::(.*)$/       # toplevel nested constants
      @prefix = $2
      __prepare_line $1, "#$1.constants | #$1.methods",
      %Q[#$1.constants + #$1.methods.#{methods_map_code($1)}]
    when /^::(.*)/              # toplevel constant
      @prefix = $1
      __prepare_line 'nil', 'Object.constants', '%n'
    when /^(:[^:.]*)$/          # symbol
      __prepare_line 'nil', 'Symbol.all_symbols.map{|s| ":" + s.id2name}', '%n'
    when /\.([^.]*)$/           # method call
      @prefix = $1
      recv = Regexp.last_match.pre_match
      __prepare_line recv, "(#{recv}).methods(true)",
      %Q[%n.#{methods_map_code(recv)}]
    else                        # bare words
      __prepare_line 'self', "methods | private_methods | local_variables | self.class.constants",
      %Q[(methods | private_methods).#{methods_map_code('self')} + local_variables | self.class.constants]
    end
  end