code: private ISyntaxElement processXMLEvent(XMLEvent event, Stack<IElementParser> parsersStack) throws ModelException
      {
          for (IElementParser parser : parsers)
          {
              if (parser.canParse(event))
              {
                  IElementParser newParser = parser.createNewInstance();
                  ISyntaxElement parsedElement = newParser.parse(event);
                  if (!parsersStack.empty())
                  {
                      parsersStack.peek().assignParsedElement(newParser.name(), parsedElement);
                  }
                  if (event.isStartElement())
                  {
                      parsersStack.push(newParser);
                  }
                  return parsedElement;
              }
          }
          return null;
      }
docs: /*
  Parses an XMLEvent, delegating on the configured parsers.
  The parsersStack is used to hold the ancestor elements whose properties or contained elements are being parsed.