docs: protected void parseRootElement() {
      collectElementIds();
      parseDefinitionsAttributes();
      parseImports();
      parseMessages();
      parseSignals();
      parseErrors();
      parseEscalations();
      parseProcessDefinitions();
      parseCollaboration();
  
      // Diagram interchange parsing must be after parseProcessDefinitions,
      // since it depends and sets values on existing process definition objects
      parseDiagramInterchangeElements();
  
      for (BpmnParseListener parseListener : parseListeners) {
        parseListener.parseRootElement(rootElement, getProcessDefinitions());
      }
    }