anchor.diff:  refine_leaf_stmts : (identifier_stmt |must_stmt | default_stmt | config_stmt | mandatory_stmt | description_stmt | reference_stmt )*;
   refine_container_stmts : (identifier_stmt |must_stmt | presence_stmt | config_stmt | description_stmt | reference_stmt )*;
   refine_pom : (refine_container_stmts | refine_leaf_stmts | refine_leaf_list_stmts | refine_list_stmts | refine_choice_stmts | refine_case_stmts | refine_anyxml_stmts);
  +// string validated in YangModelBasicValidationListener.enterRefine_stmt()
   refine_stmt : REFINE_KEYWORD string (SEMICOLON | (LEFT_BRACE  (refine_pom) RIGHT_BRACE));
  +// string validated in YangModelBasicValidationListener.enterUses_stmt()
   uses_stmt : USES_KEYWORD string (SEMICOLON | (LEFT_BRACE  (identifier_stmt |when_stmt | if_feature_stmt | status_stmt | description_stmt | reference_stmt | refine_stmt | uses_augment_stmt )* RIGHT_BRACE));
  +// string validated in YangModelBasicValidationListener.enterAnyxml_stmt()
   anyxml_stmt : ANYXML_KEYWORD string (SEMICOLON | (LEFT_BRACE  (identifier_stmt |when_stmt | if_feature_stmt | must_stmt | config_stmt | mandatory_stmt | status_stmt | description_stmt | reference_stmt )* RIGHT_BRACE));
  +// string validated in YangModelBasicValidationListener.enterCase_stmt()
   case_stmt : CASE_KEYWORD string (SEMICOLON | (LEFT_BRACE  (identifier_stmt |when_stmt | if_feature_stmt | status_stmt | description_stmt | reference_stmt | data_def_stmt )* RIGHT_BRACE));
   short_case_stmt : container_stmt | leaf_stmt | leaf_list_stmt | list_stmt | anyxml_stmt;
  +// string validated in YangModelBasicValidationListener.enterChoice_stmt()
   choice_stmt : CHOICE_KEYWORD string (SEMICOLON | (LEFT_BRACE  (identifier_stmt |when_stmt | if_feature_stmt | default_stmt | config_stmt | mandatory_stmt | status_stmt | description_stmt | reference_stmt | short_case_stmt | case_stmt)* RIGHT_BRACE));
  +// string validated in YangModelBasicValidationListener.enterUnique_stmt()
   unique_stmt : UNIQUE_KEYWORD string stmtend;
  +// string validated in YangModelBasicValidationListener.enterKey_stmt()
   key_stmt : KEY_KEYWORD string stmtend;
  +// string validated in YangModelBasicValidationListener.enterList_stmt()
   list_stmt : LIST_KEYWORD string LEFT_BRACE  (when_stmt | if_feature_stmt | must_stmt | key_stmt | unique_stmt | config_stmt | min_elements_stmt | max_elements_stmt | ordered_by_stmt | status_stmt | description_stmt | reference_stmt | typedef_stmt | grouping_stmt | data_def_stmt | identifier_stmt)* RIGHT_BRACE;
  +// string validated in YangModelBasicValidationListener.enterLeaf_list_stmt()
   leaf_list_stmt : LEAF_LIST_KEYWORD string LEFT_BRACE  (identifier_stmt |when_stmt | if_feature_stmt | type_stmt | units_stmt | must_stmt | config_stmt | min_elements_stmt | max_elements_stmt | ordered_by_stmt | status_stmt | description_stmt | reference_stmt )* RIGHT_BRACE;
  +// string validated in YangModelBasicValidationListener.enterLeaf_stmt()
   leaf_stmt : LEAF_KEYWORD string LEFT_BRACE  (identifier_stmt |when_stmt | if_feature_stmt | type_stmt | units_stmt | must_stmt | default_stmt | config_stmt | mandatory_stmt | status_stmt | description_stmt | reference_stmt )* RIGHT_BRACE;
  +// string validated in YangModelBasicValidationListener.enterContainer_stmt()
   container_stmt : CONTAINER_KEYWORD string (SEMICOLON | (LEFT_BRACE  (when_stmt | if_feature_stmt | must_stmt | presence_stmt | config_stmt | status_stmt | description_stmt | reference_stmt | typedef_stmt | grouping_stmt | data_def_stmt | identifier_stmt)* RIGHT_BRACE));
  +// string validated in YangModelBasicValidationListener.enterGrouping_stmt()
   grouping_stmt : GROUPING_KEYWORD string (SEMICOLON | (LEFT_BRACE (status_stmt | description_stmt | reference_stmt | typedef_stmt | grouping_stmt | data_def_stmt | identifier_stmt)* RIGHT_BRACE));
  +// string validated in ParserListenerUtils.createEnumPair()
   value_stmt : VALUE_KEYWORD string stmtend;
  -max_value_arg : /*UNBOUNDED_KEYWORD |*/ string;
  -min_value_arg : /*UNBOUNDED_KEYWORD |*/ string;
  +// string validated in ParserListenerUtils.parseMaxElements()
  +max_value_arg : string;
  +// string validated in ParserListenerUtils.parseMinElements()
  +min_value_arg : string;
   max_elements_stmt : MAX_ELEMENTS_KEYWORD max_value_arg stmtend;
   min_elements_stmt : MIN_ELEMENTS_KEYWORD min_value_arg stmtend;
  +// string validated in ParserListenerUtils.parseMust()
   error_app_tag_stmt : ERROR_APP_TAG_KEYWORD string stmtend;
  +// string validated in ParserListenerUtils.parseMust()
   error_message_stmt : ERROR_MESSAGE_KEYWORD string stmtend;
  +// string validated in ParserListenerUtils.parseMust()
   must_stmt : MUST_KEYWORD string (SEMICOLON | (LEFT_BRACE  (identifier_stmt |error_message_stmt | error_app_tag_stmt | description_stmt | reference_stmt )* RIGHT_BRACE));
  -ordered_by_arg : string; /*USER_KEYWORD | SYSTEM_KEYWORD;*/
  +// string validated in YangModelBasicValidationListener.enterOrdered_by_arg() as USER_KEYWORD | SYSTEM_KEYWORD
  +ordered_by_arg : string;
   ordered_by_stmt : ORDERED_BY_KEYWORD ordered_by_arg stmtend;
  +// string not validated
   presence_stmt : PRESENCE_KEYWORD string stmtend;
  -mandatory_arg :string; // TRUE_KEYWORD | FALSE_KEYWORD;
  +// string validated in YangModelBasicValidationListener.enterMandatory_arg() as TRUE_KEYWORD | FALSE_KEYWORD
  +mandatory_arg :string;
   mandatory_stmt : MANDATORY_KEYWORD mandatory_arg stmtend;
  -config_arg : string; //  TRUE_KEYWORD | FALSE_KEYWORD;
  +// string validated in YangModelBasicValidationListener.enterConfig_arg() as TRUE_KEYWORD | FALSE_KEYWORD
  +config_arg : string;
   config_stmt : CONFIG_KEYWORD config_arg stmtend;
  -status_arg : string; /*CURRENT_KEYWORD | OBSOLETE_KEYWORD | DEPRECATED_KEYWORD; */
  +// string validated in YangModelBasicValidationListener.enterStatus_arg() as CURRENT_KEYWORD | OBSOLETE_KEYWORD | DEPRECATED_KEYWORD
  +status_arg : string;
   status_stmt : STATUS_KEYWORD status_arg stmtend;
  +// string validated in ParserListenerUtils.parseBit()
   position_stmt : POSITION_KEYWORD string stmtend;
  +// string validated in ParserListenerUtils.parseBit()
   bit_stmt : BIT_KEYWORD string (SEMICOLON | (LEFT_BRACE  (identifier_stmt |position_stmt | status_stmt | description_stmt | reference_stmt )* RIGHT_BRACE));
   bits_specification : bit_stmt (bit_stmt | identifier_stmt)*;
   union_specification : type_stmt (identifier_stmt | type_stmt )*;
   identityref_specification : base_stmt  ;
   instance_identifier_specification : (require_instance_stmt )?;
  -require_instance_arg :string; // TRUE_KEYWORD | FALSE_KEYWORD;
  +// string validated in ParserListenerUtils.isRequireInstance() as TRUE_KEYWORD | FALSE_KEYWORD
  +require_instance_arg :string;
   require_instance_stmt : REQUIRE_INSTANCE_KEYWORD require_instance_arg stmtend;
  +// string validated in ParserListenerUtils.parseLeafrefPath()
   path_stmt : PATH_KEYWORD string stmtend;
   leafref_specification : path_stmt;
  +// string validated in ParserListenerUtils.createEnumPair()
   enum_stmt : ENUM_KEYWORD string (SEMICOLON | (LEFT_BRACE  (identifier_stmt |value_stmt | status_stmt | description_stmt | reference_stmt )* RIGHT_BRACE));
   enum_specification : enum_stmt (identifier_stmt | enum_stmt )*;
  +// string not validated
   default_stmt : DEFAULT_KEYWORD string stmtend;
  +// string validated in ParserListenerUtils.parsePatternConstraint()
   pattern_stmt : PATTERN_KEYWORD string (SEMICOLON | (LEFT_BRACE  (identifier_stmt |error_message_stmt | error_app_tag_stmt | description_stmt | reference_stmt )* RIGHT_BRACE));
  +// string validated in ParserListenerUtils.parseLengthConstraints()
   length_stmt : LENGTH_KEYWORD string (SEMICOLON | (LEFT_BRACE  (identifier_stmt |error_message_stmt | error_app_tag_stmt | description_stmt | reference_stmt )* RIGHT_BRACE));
   string_restrictions : (length_stmt | pattern_stmt )*;
  +// string validated in ParserListenerUtils.parseFractionDigits()
   fraction_digits_stmt : FRACTION_DIGITS_KEYWORD string stmtend;
   decimal64_specification : (numerical_restrictions? (identifier_stmt)* fraction_digits_stmt | fraction_digits_stmt (identifier_stmt)* numerical_restrictions?);
  +// string validated in ParserListenerUtils.parseRangeConstraints()
   range_stmt : RANGE_KEYWORD string (SEMICOLON | (LEFT_BRACE  (identifier_stmt |error_message_stmt | error_app_tag_stmt | description_stmt | reference_stmt )* RIGHT_BRACE));
   numerical_restrictions : range_stmt ;
   type_body_stmts : (identifier_stmt)* (numerical_restrictions | decimal64_specification | string_restrictions | enum_specification | leafref_specification | identityref_specification | instance_identifier_specification | bits_specification | union_specification) (identifier_stmt)*;
  +// string validated in YangModelBasicValidationListener.enterType_stmt()
   type_stmt : TYPE_KEYWORD string (SEMICOLON | (LEFT_BRACE  type_body_stmts RIGHT_BRACE));
  +// string validated in YangModelBasicValidationListener.enterTypedef_stmt()
   typedef_stmt : TYPEDEF_KEYWORD string LEFT_BRACE  (identifier_stmt | type_stmt | units_stmt | default_stmt | status_stmt | description_stmt | reference_stmt )+ RIGHT_BRACE;
  +// string validated in YangModelBasicValidationListener.enterIf_feature_stmt()
   if_feature_stmt : IF_FEATURE_KEYWORD string stmtend;
  +// string validated in YangModelBasicValidationListener.enterFeature_stmt()
   feature_stmt : FEATURE_KEYWORD string (SEMICOLON | (LEFT_BRACE  (identifier_stmt | if_feature_stmt | status_stmt | description_stmt | reference_stmt )* RIGHT_BRACE));
  +// string validated in YangModelBasicValidationListener.enterBase_stmt()
   base_stmt : BASE_KEYWORD string stmtend;
  +// string validated in YangModelBasicValidationListener.enterIdentity_stmt()
   identity_stmt : IDENTITY_KEYWORD string (SEMICOLON | (LEFT_BRACE  (identifier_stmt | base_stmt | status_stmt | description_stmt | reference_stmt )* RIGHT_BRACE));
  -yin_element_arg : string; // TRUE_KEYWORD | FALSE_KEYWORD;
  +// string validated in YangModelBasicValidationListener.enterYin_element_arg() as TRUE_KEYWORD | FALSE_KEYWORD
  +yin_element_arg : string;
   yin_element_stmt : YIN_ELEMENT_KEYWORD yin_element_arg stmtend;
  +
  +// string validated in YangModelBasicValidationListener.enterArgument_stmt()
   argument_stmt : ARGUMENT_KEYWORD string (SEMICOLON | (LEFT_BRACE identifier_stmt* yin_element_stmt? identifier_stmt* RIGHT_BRACE));
  +// string validated in YangModelBasicValidationListener.enterExtension_stmt()
   extension_stmt : EXTENSION_KEYWORD string (SEMICOLON | (LEFT_BRACE  (argument_stmt | status_stmt | description_stmt | reference_stmt | unknown_statement)* RIGHT_BRACE));
  +// string validated in YangModelBasicValidationListener.enterRevision_date_stmt()
   revision_date_stmt : REVISION_DATE_KEYWORD string stmtend;
  +// string validated in YangModelBasicValidationListener.enterRevision_stmt()
   revision_stmt : REVISION_KEYWORD string (SEMICOLON | (LEFT_BRACE stmtsep* (description_stmt )? (reference_stmt )? RIGHT_BRACE));
  +// string not validated
   units_stmt : UNITS_KEYWORD string stmtend;
  +// string not validated
   reference_stmt : REFERENCE_KEYWORD string stmtend;
  +// string not validated
   description_stmt : DESCRIPTION_KEYWORD string stmtend;
  +// string not validated
   contact_stmt : CONTACT_KEYWORD string stmtend;
  +// string not validated
   organization_stmt : ORGANIZATION_KEYWORD string stmtend;
  +// string validated in YangModelBasicValidationListener.enterBelongs_to_stmt()
   belongs_to_stmt : BELONGS_TO_KEYWORD string LEFT_BRACE  stmtsep* prefix_stmt  RIGHT_BRACE;
  +// string validated in YangModelBasicValidationListener.enterPrefix_stmt()
   prefix_stmt : PREFIX_KEYWORD string stmtend;
  +// string validated in YangModelBasicValidationListener.enterNamespace_stmt()
   namespace_stmt : NAMESPACE_KEYWORD string stmtend;
  +// string validated in YangModelBasicValidationListener.enterInclude_stmt()
   include_stmt : INCLUDE_KEYWORD string (SEMICOLON | (LEFT_BRACE stmtsep* (revision_date_stmt )? RIGHT_BRACE));
  +// string validated in YangModelBasicValidationListener.enterImport_stmt()
   import_stmt : IMPORT_KEYWORD string LEFT_BRACE stmtsep* prefix_stmt  (revision_date_stmt )? RIGHT_BRACE;
  +// string validated in YangModelBasicValidationListener.enterModule_header_stmts() and/or YangModelBasicValidationListener.enterSubmodule_header_stmts()
   yang_version_stmt : YANG_VERSION_KEYWORD string stmtend;
   data_def_stmt : container_stmt | leaf_stmt | leaf_list_stmt | list_stmt | choice_stmt | anyxml_stmt | uses_stmt;
   body_stmts : (( identifier_stmt| extension_stmt | feature_stmt | identity_stmt | typedef_stmt | grouping_stmt | data_def_stmt | augment_stmt | rpc_stmt | notification_stmt | deviation_stmt) )*;
  
positive.code:    placed outside of body_stmt.
   */
  stmtsep : IDENTIFIER string? (stmtend | (LEFT_BRACE unknown_statement* RIGHT_BRACE));
  deviate_replace_stmt : DEVIATE_KEYWORD string /* REPLACE_KEYWORD */ (SEMICOLON | (LEFT_BRACE (identifier_stmt |type_stmt | units_stmt | default_stmt | config_stmt | mandatory_stmt | min_elements_stmt | max_elements_stmt )* RIGHT_BRACE));
  deviate_delete_stmt : DEVIATE_KEYWORD string /* DELETE_KEYWORD */ (SEMICOLON | (LEFT_BRACE (identifier_stmt |units_stmt | must_stmt | unique_stmt | default_stmt )* RIGHT_BRACE));
  deviate_add_stmt : DEVIATE_KEYWORD string /*ADD_KEYWORD*/ (SEMICOLON | (LEFT_BRACE (identifier_stmt |units_stmt | must_stmt | unique_stmt | default_stmt | config_stmt | mandatory_stmt  | min_elements_stmt  | max_elements_stmt )* RIGHT_BRACE));
  deviate_not_supported_stmt : DEVIATE_KEYWORD string /*NOT_SUPPORTED_KEYWORD*/ (SEMICOLON | (LEFT_BRACE identifier_stmt? RIGHT_BRACE));
  deviation_stmt : DEVIATION_KEYWORD string LEFT_BRACE (identifier_stmt |description_stmt | reference_stmt | deviate_not_supported_stmt | deviate_add_stmt | deviate_replace_stmt | deviate_delete_stmt)+ RIGHT_BRACE;
  notification_stmt : NOTIFICATION_KEYWORD string (SEMICOLON | (LEFT_BRACE (identifier_stmt |if_feature_stmt | status_stmt | description_stmt | reference_stmt | typedef_stmt | grouping_stmt | data_def_stmt )* RIGHT_BRACE));
  output_stmt : OUTPUT_KEYWORD LEFT_BRACE (identifier_stmt |typedef_stmt | grouping_stmt | data_def_stmt )* RIGHT_BRACE;
  input_stmt : INPUT_KEYWORD LEFT_BRACE (identifier_stmt |typedef_stmt | grouping_stmt | data_def_stmt )* RIGHT_BRACE;
  rpc_stmt : RPC_KEYWORD string (SEMICOLON | (LEFT_BRACE (identifier_stmt |if_feature_stmt  | status_stmt | description_stmt | reference_stmt | typedef_stmt | grouping_stmt | input_stmt | output_stmt )* RIGHT_BRACE));
  when_stmt : WHEN_KEYWORD string (SEMICOLON | (LEFT_BRACE (identifier_stmt |description_stmt | reference_stmt )* RIGHT_BRACE));
  
  augment_stmt : AUGMENT_KEYWORD string LEFT_BRACE  (identifier_stmt |when_stmt | if_feature_stmt | status_stmt | description_stmt | reference_stmt | data_def_stmt | case_stmt)* RIGHT_BRACE;
  uses_augment_stmt : AUGMENT_KEYWORD string LEFT_BRACE  (identifier_stmt |when_stmt | if_feature_stmt | status_stmt | description_stmt | reference_stmt | data_def_stmt | case_stmt)* RIGHT_BRACE;
  refine_anyxml_stmts : (identifier_stmt |must_stmt | config_stmt | mandatory_stmt | description_stmt | reference_stmt )*;
  refine_case_stmts : (identifier_stmt |description_stmt | reference_stmt )*;
  refine_choice_stmts : (identifier_stmt |default_stmt | config_stmt | mandatory_stmt | description_stmt | reference_stmt )*;
  
negative.code: meta_stmts : (organization_stmt stmtsep* | contact_stmt stmtsep* | description_stmt stmtsep* | reference_stmt stmtsep*)*;
  submodule_header_stmts : (yang_version_stmt stmtsep* | belongs_to_stmt stmtsep*)+ ;
  module_header_stmts :  (yang_version_stmt stmtsep* | namespace_stmt stmtsep* | prefix_stmt stmtsep*)+ ;
  // string validated in YangModelBasicValidationListener.enterSubmodule_stmt()
  submodule_stmt : SUBMODULE_KEYWORD string LEFT_BRACE stmtsep* submodule_header_stmts linkage_stmts meta_stmts revision_stmts body_stmts RIGHT_BRACE;
  // string validated in YangModelBasicValidationListener.enterModule_stmt()
  module_stmt : MODULE_KEYWORD string LEFT_BRACE stmtsep* module_header_stmts linkage_stmts meta_stmts revision_stmts body_stmts RIGHT_BRACE;
  