docs: public static MessageSchema parse(final InputSource is, final ParserOptions options) throws Exception
      {
          final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  
          if (options.xIncludeAware())
          {
              factory.setNamespaceAware(true);
              factory.setXIncludeAware(true);
              factory.setFeature("http://apache.org/xml/features/xinclude/fixup-base-uris", false);
          }
  
          final Document document = factory.newDocumentBuilder().parse(is);
          final XPath xPath = XPathFactory.newInstance().newXPath();
  
          final ErrorHandler errorHandler = new ErrorHandler(options);
          document.setUserData(ERROR_HANDLER_KEY, errorHandler, null);
  
          final Map<String, Type> typeByNameMap = findTypes(document, xPath);
          errorHandler.checkIfShouldExit();
  
          final Map<Long, Message> messageByIdMap = findMessages(document, xPath, typeByNameMap);
          errorHandler.checkIfShouldExit();
  
          final Node schemaNode = (Node)xPath.compile(MESSAGE_SCHEMA_XPATH_EXPR).evaluate(document, XPathConstants.NODE);
          final MessageSchema messageSchema = new MessageSchema(schemaNode, typeByNameMap, messageByIdMap);
          errorHandler.checkIfShouldExit();
  
          return messageSchema;
      }