docs: protected void parseNodeTypeOptions( TokenStream tokens,
                                           JcrNodeTypeTemplate nodeType ) throws ConstraintViolationException {
          // Set up the defaults ...
          boolean isOrderable = false;
          boolean isMixin = false;
          boolean isAbstract = false;
          boolean isQueryable = true;
          String primaryItem = null;
          while (true) {
              // Keep reading while we see a valid option ...
              if (tokens.canConsumeAnyOf("ORDERABLE", "ORD", "O")) {
                  tokens.canConsume('?');
                  isOrderable = true;
              } else if (tokens.canConsumeAnyOf("MIXIN", "MIX", "M")) {
                  tokens.canConsume('?');
                  isMixin = true;
              } else if (tokens.canConsumeAnyOf("ABSTRACT", "ABS", "A")) {
                  tokens.canConsume('?');
                  isAbstract = true;
              } else if (tokens.canConsumeAnyOf("NOQUERY", "NOQ")) {
                  tokens.canConsume('?');
                  isQueryable = false;
              } else if (tokens.canConsumeAnyOf("QUERY", "Q")) {
                  tokens.canConsume('?');
                  isQueryable = true;
              } else if (tokens.canConsumeAnyOf("PRIMARYITEM", "!")) {
                  primaryItem = removeQuotes(tokens.consume());
                  tokens.canConsume('?');
              } else if (tokens.matches(CndTokenizer.VENDOR_EXTENSION)) {
                  List<Property> properties = new LinkedList<Property>();
                  parseVendorExtensions(tokens, properties);
                  applyVendorExtensions(nodeType, properties);
              } else {
                  // No more valid options on the stream, so stop ...
                  break;
              }
          }
          nodeType.setAbstract(isAbstract);
          nodeType.setMixin(isMixin);
          nodeType.setOrderableChildNodes(isOrderable);
          nodeType.setQueryable(isQueryable);
          // nodeType.setOnParentVersion();
          if (primaryItem != null) {
              nodeType.setPrimaryItemName(string(primaryItem));
          }
      }