code: @Override
      public GeneratedPosition generatedPositionFor(String source, int line, int column, Bias bias) {
          for (int i = 0; i < this._sections.size(); i++) {
              ParsedSection section = this._sections.get(i);
  
              // Only consider this section if the requested source is in the list of
              // sources of the consumer.
              if (section.consumer.sources().indexOf(source) == -1) {
                  continue;
              }
              GeneratedPosition generatedPosition = section.consumer.generatedPositionFor(source, line, column, bias);
              if (generatedPosition != null) {
                  GeneratedPosition ret = new GeneratedPosition(generatedPosition.line + (section.generatedOffset.generatedLine - 1),
                          generatedPosition.column
                                  + (section.generatedOffset.generatedLine == generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0),
                          null);
                  return ret;
              }
          }
  
          return new GeneratedPosition();
      }
docs: Returns the generated line and column information for the original source, line, and column positions provided. The only argument is an object
  with the following properties:
  <ul>
  <li>source: The filename of the original source.</li>
  <li>line: The line number in the original source.</li>
  <li>column: The column number in the original source.</li>
  </ul>
  and an object is returned with the following properties:
  <ul>
  <li>line: The line number in the generated source, or null.</li>
  <li>column: The column number in the generated source, or null.</li>
  </ul>