docs: function(err, frame) {
    var _frame, column, line, match, origin, position, source;
    if (coffeePrepare && (match = coffeeStackRegex.exec(coffeePrepare(err, [frame])))) {
      _frame = clone(frame);
      _frame.getFileName = function() {
        return match[1] + '.coffee';
      };
      _frame.getLineNumber = function() {
        return match[2];
      };
      _frame.getColumnNumber = function() {
        return match[3] - 1;
      };
      _frame.getScriptNameOrSourceURL = function() {
        return match[1] + '.coffee';
      };
      return _frame;
    }
    source = frame.getFileName() || frame.getScriptNameOrSourceURL();
    if (source) {
      line = frame.getLineNumber();
      column = frame.getColumnNumber() - 1;
      if (line === 1 && !frame.isEval()) {
        column -= 62;
      }
      position = sourceMapSupport.mapSourcePosition({
        source: source,
        line: line,
        column: column
      });
      _frame = clone(frame);
      _frame.getFileName = function() {
        return position.source;
      };
      _frame.getLineNumber = function() {
        return position.line;
      };
      _frame.getColumnNumber = function() {
        return position.column + 1;
      };
      _frame.getScriptNameOrSourceURL = function() {
        return position.source;
      };
      return _frame;
    }
    origin = frame.isEval() && frame.getEvalOrigin();
    if (origin) {
      origin = mapEvalOrigin(origin);
      _frame = clone(frame);
      _frame.getEvalOrigin = function() {
        return origin;
      };
      return _frame;
    }
    return frame;
  }