def find_method_with_line(cm, line)
      unless cm.kind_of?(Rubinius::CompiledMethod)
        return nil
      end

      lines = lines_of_method(cm)
      return cm if lines.member?(line)
      scope = cm.scope
      return nil unless scope and scope.current_script
      cm  = scope.current_script.compiled_code
      lines = lines_of_method(cm)
      until lines.member?(line) do
        child = scope
        scope = scope.parent
        unless scope
          # child is the top-most scope. Search down from here.
          cm = child.current_script.compiled_code
          pair = locate_line(line, cm)
          ## pair = cm.locate_line(line)
          return pair ? pair[0] : nil
        end
        cm = scope.current_script.compiled_code
        lines = lines_of_method(cm)
      end
      return cm
    end
def find_method_with_line(cm, line)
      unless cm.kind_of?(Rubinius::CompiledMethod)
        return nil
      end

      lines = lines_of_method(cm)
      return cm if lines.member?(line)
      scope = cm.scope
      return nil unless scope and scope.current_script
      cm  = scope.current_script.compiled_code
      lines = lines_of_method(cm)
      until lines.member?(line) do
        child = scope
        scope = scope.parent
        unless scope
          # child is the top-most scope. Search down from here.
          cm = child.current_script.compiled_code
          pair = locate_line(line, cm)
          ## pair = cm.locate_line(line)
          return pair ? pair[0] : nil
        end
        cm = scope.current_script.compiled_code
        lines = lines_of_method(cm)
      end
      return cm
    end
Returns a CompiledMethod for the specified line. We search the
 current method +meth+ and then up the parent scope.  If we hit
 the top and we can't find +line+ that way, then we
 reverse the search from the top and search down. This will add
 all siblings of ancestors of +meth+.