@Override
    public void startElement(
        String namespaceURI, String localName, String qualifiedName, Attributes attributes)
        throws SAXException {
      super.startElement(namespaceURI, localName, qualifiedName, attributes);

      // Parse locations in attributes
      // TODO: Method configurable.
      if (addParseLocationAttributes) {
        AttributeParseLocation pp =
            // moduleGenerated.newParseLocation(elementIdentifier); new
            new AttributeParseLocation(
                currentLine,
                currentColumn,
                currentLine = locator.getLineNumber(),
                currentColumn = locator.getColumnNumber());
        ppStack.push(pp);
      }
      // parse location in elements
      ParseLocationElement ple = (ParseLocationElement) currentElement;
      ple.elementStartTagBeginningLine = currentLine;
      ple.elementStartTagBeginningColumn = currentColumn;
      ple.elementStartTagEndLine = (currentLine = locator.getLineNumber());
      ple.elementStartTagEndColumn = (currentColumn = locator.getColumnNumber());
    }