# File lib/rcodetools/doc.rb, line 19
  def prepare_line(expr, column)
    set_expr_and_postfix!(expr, column){|c| 
      withop_re = /^.{#{c-1}}[#{OPERATOR_CHARS}]+/
      if expr =~ withop_re
        withop_re
      else
        /^.{#{c}}[\w#{OPERATOR_CHARS}]*/
      end
    }
    recv = expr

    # When expr already knows receiver and method,
    return(__prepare_line :recv => expr.eval_string, :meth => expr.meth) if expr.eval_string

    case expr
    when /^(?:::)?([A-Z].*)(?:::|\.)(.*)$/    # nested constants / class methods
      __prepare_line :klass => $1, :meth_or_constant => $2
    when /^(?:::)?[A-Z]/               # normal constants
      __prepare_line :klass => expr
    when /\.([^.]*)$/             # method call
      __prepare_line :recv => Regexp.last_match.pre_match, :meth => $1
    when /^(.+)(\[\]=?)$/                   # [], []=
      __prepare_line :recv => $1, :meth => $2
    when /[#{OPERATOR_CHARS}]+$/                   # operator
      __prepare_line :recv => Regexp.last_match.pre_match, :meth => $&
    else                        # bare words
      __prepare_line :recv => "self", :meth => expr
    end
  end