originalPositionFor(aArgs) {
    const needle = {
      generatedLine: util.getArg(aArgs, 'line'),
      generatedColumn: util.getArg(aArgs, 'column'),
    };

    // Find the section containing the generated position we're trying to map
    // to an original position.
    const sectionIndex = binarySearch.search(
      needle,
      this._sections,
      function (aNeedle, section) {
        const cmp =
          aNeedle.generatedLine - section.generatedOffset.generatedLine;
        if (cmp) {
          return cmp
        }

        return aNeedle.generatedColumn - section.generatedOffset.generatedColumn
      }
    );
    const section = this._sections[sectionIndex];

    if (!section) {
      return {
        source: null,
        line: null,
        column: null,
        name: null,
      }
    }

    return section.consumer.originalPositionFor({
      line: needle.generatedLine - (section.generatedOffset.generatedLine - 1),
      column:
        needle.generatedColumn -
        (section.generatedOffset.generatedLine === needle.generatedLine
          ? section.generatedOffset.generatedColumn - 1
          : 0),
      bias: aArgs.bias,
    })
  }
Returns the original source, line, and column information for the generated
source's line and column positions provided. The only argument is an object
with the following properties:

  - line: The line number in the generated source.  The line number
    is 1-based.
  - column: The column number in the generated source.  The column
    number is 0-based.

and an object is returned with the following properties:

  - source: The original source file, or null.
  - line: The line number in the original source, or null.  The
    line number is 1-based.
  - column: The column number in the original source, or null.  The
    column number is 0-based.
  - name: The original identifier, or null.