[ONOS-4762][ONOS-4601]Grammar for meta data +  Union defect fix

Change-Id: I8f78127e5b292cca6a79b32d496c2602c9105acd
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/antlrgencode/GeneratedYangListener.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/antlrgencode/GeneratedYangListener.java
index c4c52f0..31bbba5 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/antlrgencode/GeneratedYangListener.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/antlrgencode/GeneratedYangListener.java
@@ -27,904 +27,791 @@
 public interface GeneratedYangListener extends ParseTreeListener {
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * yangfile.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule yangfile.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterYangfile(GeneratedYangParser.YangfileContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * yangfile.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule yangfile.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitYangfile(GeneratedYangParser.YangfileContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * moduleStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule moduleStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterModuleStatement(GeneratedYangParser.ModuleStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * moduleStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule moduleStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitModuleStatement(GeneratedYangParser.ModuleStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * moduleBody.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule moduleBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterModuleBody(GeneratedYangParser.ModuleBodyContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * moduleBody.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule moduleBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitModuleBody(GeneratedYangParser.ModuleBodyContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * moduleHeaderStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule moduleHeaderStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterModuleHeaderStatement(GeneratedYangParser.ModuleHeaderStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * moduleHeaderStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule moduleHeaderStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitModuleHeaderStatement(GeneratedYangParser.ModuleHeaderStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * linkageStatements.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule linkageStatements.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterLinkageStatements(GeneratedYangParser.LinkageStatementsContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * linkageStatements.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule linkageStatements.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitLinkageStatements(GeneratedYangParser.LinkageStatementsContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * metaStatements.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule metaStatements.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterMetaStatements(GeneratedYangParser.MetaStatementsContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * metaStatements.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule metaStatements.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitMetaStatements(GeneratedYangParser.MetaStatementsContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * revisionStatements.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule revisionStatements.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterRevisionStatements(GeneratedYangParser.RevisionStatementsContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * revisionStatements.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule revisionStatements.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitRevisionStatements(GeneratedYangParser.RevisionStatementsContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * bodyStatements.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule bodyStatements.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterBodyStatements(GeneratedYangParser.BodyStatementsContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * bodyStatements.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule bodyStatements.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitBodyStatements(GeneratedYangParser.BodyStatementsContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * yangVersionStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule yangVersionStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterYangVersionStatement(GeneratedYangParser.YangVersionStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * yangVersionStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule yangVersionStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitYangVersionStatement(GeneratedYangParser.YangVersionStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * namespaceStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule namespaceStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterNamespaceStatement(GeneratedYangParser.NamespaceStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * namespaceStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule namespaceStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitNamespaceStatement(GeneratedYangParser.NamespaceStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * prefixStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule prefixStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterPrefixStatement(GeneratedYangParser.PrefixStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * prefixStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule prefixStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitPrefixStatement(GeneratedYangParser.PrefixStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * importStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule importStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterImportStatement(GeneratedYangParser.ImportStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * importStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule importStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitImportStatement(GeneratedYangParser.ImportStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * importStatementBody.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule importStatementBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterImportStatementBody(GeneratedYangParser.ImportStatementBodyContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * importStatementBody.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule importStatementBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitImportStatementBody(GeneratedYangParser.ImportStatementBodyContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * revisionDateStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule revisionDateStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterRevisionDateStatement(GeneratedYangParser.RevisionDateStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * revisionDateStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule revisionDateStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitRevisionDateStatement(GeneratedYangParser.RevisionDateStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * includeStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule includeStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterIncludeStatement(GeneratedYangParser.IncludeStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * includeStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule includeStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitIncludeStatement(GeneratedYangParser.IncludeStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * organizationStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule organizationStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterOrganizationStatement(GeneratedYangParser.OrganizationStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * organizationStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule organizationStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitOrganizationStatement(GeneratedYangParser.OrganizationStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * contactStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule contactStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterContactStatement(GeneratedYangParser.ContactStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * contactStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule contactStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitContactStatement(GeneratedYangParser.ContactStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * descriptionStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule descriptionStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterDescriptionStatement(GeneratedYangParser.DescriptionStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * descriptionStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule descriptionStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitDescriptionStatement(GeneratedYangParser.DescriptionStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * referenceStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule referenceStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterReferenceStatement(GeneratedYangParser.ReferenceStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * referenceStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule referenceStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitReferenceStatement(GeneratedYangParser.ReferenceStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * revisionStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule revisionStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterRevisionStatement(GeneratedYangParser.RevisionStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * revisionStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule revisionStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitRevisionStatement(GeneratedYangParser.RevisionStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * revisionStatementBody.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule revisionStatementBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterRevisionStatementBody(GeneratedYangParser.RevisionStatementBodyContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * revisionStatementBody.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule revisionStatementBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitRevisionStatementBody(GeneratedYangParser.RevisionStatementBodyContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * subModuleStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule subModuleStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterSubModuleStatement(GeneratedYangParser.SubModuleStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * subModuleStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule subModuleStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitSubModuleStatement(GeneratedYangParser.SubModuleStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * submoduleBody.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule submoduleBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterSubmoduleBody(GeneratedYangParser.SubmoduleBodyContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * submoduleBody.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule submoduleBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitSubmoduleBody(GeneratedYangParser.SubmoduleBodyContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * submoduleHeaderStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule submoduleHeaderStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterSubmoduleHeaderStatement(GeneratedYangParser.SubmoduleHeaderStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * submoduleHeaderStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule submoduleHeaderStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitSubmoduleHeaderStatement(GeneratedYangParser.SubmoduleHeaderStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * belongstoStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule belongstoStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterBelongstoStatement(GeneratedYangParser.BelongstoStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * belongstoStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule belongstoStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitBelongstoStatement(GeneratedYangParser.BelongstoStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * belongstoStatementBody.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule belongstoStatementBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterBelongstoStatementBody(GeneratedYangParser.BelongstoStatementBodyContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * belongstoStatementBody.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule belongstoStatementBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitBelongstoStatementBody(GeneratedYangParser.BelongstoStatementBodyContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * extensionStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule extensionStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterExtensionStatement(GeneratedYangParser.ExtensionStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * extensionStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule extensionStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitExtensionStatement(GeneratedYangParser.ExtensionStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * extensionBody.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule extensionBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterExtensionBody(GeneratedYangParser.ExtensionBodyContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * extensionBody.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule extensionBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitExtensionBody(GeneratedYangParser.ExtensionBodyContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * argumentStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule argumentStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterArgumentStatement(GeneratedYangParser.ArgumentStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * argumentStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule argumentStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitArgumentStatement(GeneratedYangParser.ArgumentStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * argumentBody.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule argumentBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterArgumentBody(GeneratedYangParser.ArgumentBodyContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * argumentBody.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule argumentBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitArgumentBody(GeneratedYangParser.ArgumentBodyContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * yinElementStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule yinElementStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterYinElementStatement(GeneratedYangParser.YinElementStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * yinElementStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule yinElementStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitYinElementStatement(GeneratedYangParser.YinElementStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * identityStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule identityStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterIdentityStatement(GeneratedYangParser.IdentityStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * identityStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule identityStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitIdentityStatement(GeneratedYangParser.IdentityStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * identityBody.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule identityBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterIdentityBody(GeneratedYangParser.IdentityBodyContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * identityBody.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule identityBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitIdentityBody(GeneratedYangParser.IdentityBodyContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * baseStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule baseStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterBaseStatement(GeneratedYangParser.BaseStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * baseStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule baseStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitBaseStatement(GeneratedYangParser.BaseStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * featureStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule featureStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterFeatureStatement(GeneratedYangParser.FeatureStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * featureStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule featureStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitFeatureStatement(GeneratedYangParser.FeatureStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * featureBody.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule featureBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterFeatureBody(GeneratedYangParser.FeatureBodyContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * featureBody.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule featureBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitFeatureBody(GeneratedYangParser.FeatureBodyContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * dataDefStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule dataDefStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterDataDefStatement(GeneratedYangParser.DataDefStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * dataDefStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule dataDefStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitDataDefStatement(GeneratedYangParser.DataDefStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * ifFeatureStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule ifFeatureStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterIfFeatureStatement(GeneratedYangParser.IfFeatureStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * ifFeatureStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule ifFeatureStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitIfFeatureStatement(GeneratedYangParser.IfFeatureStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * unitsStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule unitsStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterUnitsStatement(GeneratedYangParser.UnitsStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * unitsStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule unitsStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitUnitsStatement(GeneratedYangParser.UnitsStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * typedefStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule typedefStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterTypedefStatement(GeneratedYangParser.TypedefStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * typedefStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule typedefStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitTypedefStatement(GeneratedYangParser.TypedefStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * typeStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule typeStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterTypeStatement(GeneratedYangParser.TypeStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * typeStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule typeStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitTypeStatement(GeneratedYangParser.TypeStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * typeBodyStatements.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule typeBodyStatements.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterTypeBodyStatements(GeneratedYangParser.TypeBodyStatementsContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * typeBodyStatements.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule typeBodyStatements.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitTypeBodyStatements(GeneratedYangParser.TypeBodyStatementsContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * numericalRestrictions.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule numericalRestrictions.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterDecimal64Specification(GeneratedYangParser.Decimal64SpecificationContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * numericalRestrictions.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule numericalRestrictions.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitDecimal64Specification(GeneratedYangParser.Decimal64SpecificationContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * numericalRestrictions.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule numericalRestrictions.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterNumericalRestrictions(GeneratedYangParser.NumericalRestrictionsContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * numericalRestrictions.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule numericalRestrictions.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitNumericalRestrictions(GeneratedYangParser.NumericalRestrictionsContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * rangeStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule rangeStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterRangeStatement(GeneratedYangParser.RangeStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * rangeStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule rangeStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitRangeStatement(GeneratedYangParser.RangeStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * commonStatements.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule commonStatements.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterCommonStatements(GeneratedYangParser.CommonStatementsContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * commonStatements.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule commonStatements.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitCommonStatements(GeneratedYangParser.CommonStatementsContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * stringRestrictions.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule stringRestrictions.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterStringRestrictions(GeneratedYangParser.StringRestrictionsContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * stringRestrictions.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule stringRestrictions.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitStringRestrictions(GeneratedYangParser.StringRestrictionsContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * lengthStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule lengthStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterLengthStatement(GeneratedYangParser.LengthStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * lengthStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule lengthStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitLengthStatement(GeneratedYangParser.LengthStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * patternStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule patternStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterPatternStatement(GeneratedYangParser.PatternStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * patternStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule patternStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitPatternStatement(GeneratedYangParser.PatternStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * defaultStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule defaultStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterDefaultStatement(GeneratedYangParser.DefaultStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * defaultStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule defaultStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitDefaultStatement(GeneratedYangParser.DefaultStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * enumSpecification.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule enumSpecification.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterEnumSpecification(GeneratedYangParser.EnumSpecificationContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * enumSpecification.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule enumSpecification.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitEnumSpecification(GeneratedYangParser.EnumSpecificationContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * enumStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule enumStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterEnumStatement(GeneratedYangParser.EnumStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * enumStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule enumStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitEnumStatement(GeneratedYangParser.EnumStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * enumStatementBody.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule enumStatementBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterEnumStatementBody(GeneratedYangParser.EnumStatementBodyContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * enumStatementBody.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule enumStatementBody.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitEnumStatementBody(GeneratedYangParser.EnumStatementBodyContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * leafrefSpecification.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule leafrefSpecification.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterLeafrefSpecification(GeneratedYangParser.LeafrefSpecificationContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * leafrefSpecification.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule leafrefSpecification.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitLeafrefSpecification(GeneratedYangParser.LeafrefSpecificationContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * pathStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule pathStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterPathStatement(GeneratedYangParser.PathStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * pathStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule pathStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitPathStatement(GeneratedYangParser.PathStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * requireInstanceStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule requireInstanceStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterRequireInstanceStatement(GeneratedYangParser.RequireInstanceStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * requireInstanceStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule requireInstanceStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitRequireInstanceStatement(GeneratedYangParser.RequireInstanceStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * instanceIdentifierSpecification.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule instanceIdentifierSpecification.
      *
      * @param currentContext current context in the parsed tree
      */
@@ -932,384 +819,336 @@
             GeneratedYangParser.InstanceIdentifierSpecificationContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * instanceIdentifierSpecification.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule instanceIdentifierSpecification.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitInstanceIdentifierSpecification(GeneratedYangParser.InstanceIdentifierSpecificationContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * identityrefSpecification.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule identityrefSpecification.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterIdentityrefSpecification(GeneratedYangParser.IdentityrefSpecificationContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * identityrefSpecification.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule identityrefSpecification.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitIdentityrefSpecification(GeneratedYangParser.IdentityrefSpecificationContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * unionSpecification.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule unionSpecification.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterUnionSpecification(GeneratedYangParser.UnionSpecificationContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * unionSpecification.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule unionSpecification.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitUnionSpecification(GeneratedYangParser.UnionSpecificationContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * bitsSpecification.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule bitsSpecification.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterBitsSpecification(GeneratedYangParser.BitsSpecificationContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * bitsSpecification.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule bitsSpecification.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitBitsSpecification(GeneratedYangParser.BitsSpecificationContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * bitStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule bitStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterBitStatement(GeneratedYangParser.BitStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * bitStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule bitStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitBitStatement(GeneratedYangParser.BitStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * bitBodyStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule bitBodyStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterBitBodyStatement(GeneratedYangParser.BitBodyStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * bitBodyStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule bitBodyStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitBitBodyStatement(GeneratedYangParser.BitBodyStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * positionStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule positionStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterPositionStatement(GeneratedYangParser.PositionStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * positionStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule positionStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitPositionStatement(GeneratedYangParser.PositionStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * statusStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule statusStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterStatusStatement(GeneratedYangParser.StatusStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * statusStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule statusStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitStatusStatement(GeneratedYangParser.StatusStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * configStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule configStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterConfigStatement(GeneratedYangParser.ConfigStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * configStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule configStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitConfigStatement(GeneratedYangParser.ConfigStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * mandatoryStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule mandatoryStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterMandatoryStatement(GeneratedYangParser.MandatoryStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * mandatoryStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule mandatoryStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitMandatoryStatement(GeneratedYangParser.MandatoryStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * presenceStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule presenceStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterPresenceStatement(GeneratedYangParser.PresenceStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * presenceStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule presenceStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitPresenceStatement(GeneratedYangParser.PresenceStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * orderedByStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule orderedByStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterOrderedByStatement(GeneratedYangParser.OrderedByStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * orderedByStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule orderedByStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitOrderedByStatement(GeneratedYangParser.OrderedByStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * mustStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule mustStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterMustStatement(GeneratedYangParser.MustStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * mustStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule mustStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitMustStatement(GeneratedYangParser.MustStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * errorMessageStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule errorMessageStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterErrorMessageStatement(GeneratedYangParser.ErrorMessageStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * errorMessageStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule errorMessageStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitErrorMessageStatement(GeneratedYangParser.ErrorMessageStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * errorAppTagStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule errorAppTagStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterErrorAppTagStatement(GeneratedYangParser.ErrorAppTagStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * errorAppTagStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule errorAppTagStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitErrorAppTagStatement(GeneratedYangParser.ErrorAppTagStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * minElementsStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule minElementsStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterMinElementsStatement(GeneratedYangParser.MinElementsStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * minElementsStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule minElementsStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitMinElementsStatement(GeneratedYangParser.MinElementsStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * maxElementsStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule maxElementsStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterMaxElementsStatement(GeneratedYangParser.MaxElementsStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * maxElementsStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule maxElementsStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitMaxElementsStatement(GeneratedYangParser.MaxElementsStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * valueStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule valueStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterValueStatement(GeneratedYangParser.ValueStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * valueStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule valueStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitValueStatement(GeneratedYangParser.ValueStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * groupingStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule groupingStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterGroupingStatement(GeneratedYangParser.GroupingStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * groupingStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule groupingStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitGroupingStatement(GeneratedYangParser.GroupingStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * containerStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule containerStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterContainerStatement(GeneratedYangParser.ContainerStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * containerStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule containerStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitContainerStatement(GeneratedYangParser.ContainerStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * leafStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule leafStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterLeafStatement(GeneratedYangParser.LeafStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * leafStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule leafStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitLeafStatement(GeneratedYangParser.LeafStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * leafListStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule leafListStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterLeafListStatement(GeneratedYangParser.LeafListStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * leafListStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule leafListStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitLeafListStatement(GeneratedYangParser.LeafListStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * listStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule listStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterListStatement(GeneratedYangParser.ListStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * listStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule listStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitListStatement(GeneratedYangParser.ListStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * keyStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule keyStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void enterKeyStatement(GeneratedYangParser.KeyStatementContext currentContext);
 
     /**
-     * Exits a parse tree produced by GeneratedYangParser for grammar rule
-     * keyStatement.
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule keyStatement.
      *
      * @param currentContext current context in the parsed tree
      */
     void exitKeyStatement(GeneratedYangParser.KeyStatementContext currentContext);
 
     /**
-     * Enters a parse tree produced by GeneratedYangParser for grammar rule
-     * uniqueStatement.
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule uniqueStatement.
      *
      * @param currentContext current context in the parsed tree
      */
@@ -1965,4 +1804,150 @@
      * @param currentContext current context in the parsed tree
      */
     void exitYangConstruct(GeneratedYangParser.YangConstructContext currentContext);
+
+    /**
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule compiler annotation statement.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void enterCompilerAnnotationStatement(GeneratedYangParser.CompilerAnnotationStatementContext currentContext);
+
+    /**
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule compiler annotation statement.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void exitCompilerAnnotationStatement(GeneratedYangParser.CompilerAnnotationStatementContext currentContext);
+
+    /**
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule annotation statement.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void enterAnnotationStatement(GeneratedYangParser.AnnotationStatementContext currentContext);
+
+    /**
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule annotation statement.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void exitAnnotationStatement(GeneratedYangParser.AnnotationStatementContext currentContext);
+
+    /**
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule annotation type.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void enterAnnotationType(GeneratedYangParser.AnnotationTypeContext currentContext);
+
+    /**
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule annotation type.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void exitAnnotationType(GeneratedYangParser.AnnotationTypeContext currentContext);
+
+    /**
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule
+     * annotation parameter specification.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void enterAnnotationParameterSpecification(GeneratedYangParser.AnnotationParameterSpecificationContext
+                                                       currentContext);
+
+    /**
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule
+     * annotation parameter specification.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void exitAnnotationParameterSpecification(GeneratedYangParser.AnnotationParameterSpecificationContext
+                                                      currentContext);
+
+    /**
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule
+     * annotation parameter specification argument.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void enterAnnotationParameterSpecificationArg(GeneratedYangParser.AnnotationParameterSpecificationArgContext
+                                                          currentContext);
+
+    /**
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule
+     * annotation parameter specification argument.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void exitAnnotationParameterSpecificationArg(GeneratedYangParser.AnnotationParameterSpecificationArgContext
+                                                         currentContext);
+
+    /**
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule annotation parameter instance.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void enterAnnotationParaInstance(GeneratedYangParser.AnnotationParaInstanceContext
+                                             currentContext);
+
+    /**
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule annotation parameter instance.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void exitAnnotationParaInstance(GeneratedYangParser.AnnotationParaInstanceContext
+                                            currentContext);
+
+    /**
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule
+     * annotation parameter type identifier.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void enterAnnotationParaTypeIdentifier(GeneratedYangParser.AnnotationParaTypeIdentifierContext
+                                                   currentContext);
+
+    /**
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule
+     * annotation parameter type identifier.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void exitAnnotationParaTypeIdentifier(GeneratedYangParser.AnnotationParaTypeIdentifierContext
+                                                  currentContext);
+
+    /**
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule
+     * annotation parameter type value.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void enterAnnotationParaTypeValue(GeneratedYangParser.AnnotationParaTypeValueContext
+                                              currentContext);
+
+    /**
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule
+     * annotation parameter type value.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void exitAnnotationParaTypeValue(GeneratedYangParser.AnnotationParaTypeValueContext
+                                             currentContext);
+
+    /**
+     * Enters a parse tree produced by GeneratedYangParser for grammar rule annotation identifier.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void enterAnnotationIdentifier(GeneratedYangParser.AnnotationIdentifierContext
+                                           currentContext);
+
+    /**
+     * Exits a parse tree produced by GeneratedYangParser for grammar rule annotation identifier.
+     *
+     * @param currentContext current context in the parsed tree
+     */
+    void exitAnnotationIdentifier(GeneratedYangParser.AnnotationIdentifierContext
+                                          currentContext);
 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/impl/TreeWalkListener.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/impl/TreeWalkListener.java
index 8f08842..67c2e36 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/impl/TreeWalkListener.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/impl/TreeWalkListener.java
@@ -1376,6 +1376,99 @@
     }
 
     @Override
+    public void enterCompilerAnnotationStatement(GeneratedYangParser.CompilerAnnotationStatementContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void exitCompilerAnnotationStatement(GeneratedYangParser.CompilerAnnotationStatementContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void enterAnnotationStatement(GeneratedYangParser.AnnotationStatementContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void exitAnnotationStatement(GeneratedYangParser.AnnotationStatementContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void enterAnnotationType(GeneratedYangParser.AnnotationTypeContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void exitAnnotationType(GeneratedYangParser.AnnotationTypeContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void enterAnnotationParameterSpecification(GeneratedYangParser.AnnotationParameterSpecificationContext
+                                                              ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void exitAnnotationParameterSpecification(GeneratedYangParser.AnnotationParameterSpecificationContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void enterAnnotationParameterSpecificationArg(GeneratedYangParser.AnnotationParameterSpecificationArgContext
+                                                                 ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void exitAnnotationParameterSpecificationArg(GeneratedYangParser.AnnotationParameterSpecificationArgContext
+                                                                ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void enterAnnotationParaInstance(GeneratedYangParser.AnnotationParaInstanceContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void exitAnnotationParaInstance(GeneratedYangParser.AnnotationParaInstanceContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void enterAnnotationParaTypeIdentifier(GeneratedYangParser.AnnotationParaTypeIdentifierContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void exitAnnotationParaTypeIdentifier(GeneratedYangParser.AnnotationParaTypeIdentifierContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void enterAnnotationParaTypeValue(GeneratedYangParser.AnnotationParaTypeValueContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void exitAnnotationParaTypeValue(GeneratedYangParser.AnnotationParaTypeValueContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void enterAnnotationIdentifier(GeneratedYangParser.AnnotationIdentifierContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
+    public void exitAnnotationIdentifier(GeneratedYangParser.AnnotationIdentifierContext ctx) {
+        // TODO: implement the method.
+    }
+
+    @Override
     public void enterVersion(GeneratedYangParser.VersionContext ctx) {
         // do nothing.
     }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
index 9fab09c..4043a8e 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
@@ -16,7 +16,6 @@
 
 package org.onosproject.yangutils.parser.impl.listeners;
 
-import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
 import org.onosproject.yangutils.datamodel.YangDerivedInfo;
 import org.onosproject.yangutils.datamodel.YangLeaf;
 import org.onosproject.yangutils.datamodel.YangLeafList;
@@ -27,6 +26,7 @@
 import org.onosproject.yangutils.datamodel.YangUnion;
 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
 import org.onosproject.yangutils.datamodel.utils.Parsable;
+import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
 import org.onosproject.yangutils.linker.impl.YangResolutionInfoImpl;
 import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
@@ -94,6 +94,8 @@
         // Obtain the YANG data type.
         YangDataTypes yangDataTypes = YangDataTypes.getType(ctx.string().getText());
 
+        validateTypeSubStatementCardinality(ctx, yangDataTypes);
+
         // Create YANG type object and fill the values.
         YangType<?> type = getYangType(JAVA_GENERATION);
         type.setNodeIdentifier(nodeIdentifier);
@@ -265,4 +267,37 @@
                     TYPE_DATA, ctx.string().getText(), ENTRY, e.getMessage()));
         }
     }
+
+    /**
+     * Validates type body statements cardinality.
+     *
+     * @param ctx          context object of the grammar rule
+     * @param yangDataType yang data type
+     */
+    private static void validateTypeSubStatementCardinality(GeneratedYangParser.TypeStatementContext ctx,
+                                                            YangDataTypes yangDataType) {
+        if (ctx.typeBodyStatements() == null || ctx.typeBodyStatements().isEmpty()) {
+            ParserException parserException;
+            switch (yangDataType) {
+                case UNION:
+                    parserException = new ParserException("YANG file error : a type union" +
+                            " must have atleast one type statement.");
+                    break;
+                case ENUMERATION:
+                    parserException = new ParserException("YANG file error : a type enumeration" +
+                            " must have atleast one enum statement.");
+                    break;
+                case BITS:
+                    parserException = new ParserException("YANG file error : a type bits" +
+                            " must have atleast one bit statement.");
+                    break;
+                // TODO : decimal64, identity ref, leafref
+                default:
+                    return;
+            }
+            parserException.setLine(ctx.getStart().getLine());
+            parserException.setCharPosition(ctx.getStart().getCharPositionInLine());
+            throw parserException;
+        }
+    }
 }
diff --git a/utils/yangutils/plugin/src/main/resources/GeneratedYang.g4 b/utils/yangutils/plugin/src/main/resources/GeneratedYang.g4
index 55a7a35..36b38ff 100644
--- a/utils/yangutils/plugin/src/main/resources/GeneratedYang.g4
+++ b/utils/yangutils/plugin/src/main/resources/GeneratedYang.g4
@@ -237,34 +237,13 @@
      *                            [status-stmt stmtsep]
      *                            [description-stmt stmtsep]
      *                            [reference-stmt stmtsep]
+     *                            [compiler-annotation-stmt stmtsep]
      *                        "}")
+     * TODO : 0..1 occurance to be checked in listener
      */
     extensionStatement : EXTENSION_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE extensionBody RIGHT_CURLY_BRACE);
-    extensionBody : argumentStatement? statusStatement? descriptionStatement? referenceStatement?
-                   | argumentStatement? statusStatement? referenceStatement? descriptionStatement?
-                   | argumentStatement? descriptionStatement? statusStatement? referenceStatement?
-                   | argumentStatement? descriptionStatement? referenceStatement? statusStatement?
-                   | argumentStatement? referenceStatement? descriptionStatement? statusStatement?
-                   | argumentStatement? referenceStatement? statusStatement? descriptionStatement?
-                   | statusStatement? referenceStatement? argumentStatement? descriptionStatement?
-                   | statusStatement? referenceStatement? descriptionStatement? argumentStatement?
-                   | statusStatement? descriptionStatement? referenceStatement? argumentStatement?
-                   | statusStatement? descriptionStatement? argumentStatement? referenceStatement?
-                   | statusStatement? argumentStatement? referenceStatement? descriptionStatement?
-                   | statusStatement? argumentStatement? descriptionStatement? referenceStatement?
-                   | descriptionStatement? argumentStatement? statusStatement? referenceStatement?
-                   | descriptionStatement? argumentStatement? referenceStatement? statusStatement?
-                   | descriptionStatement? statusStatement? argumentStatement? referenceStatement?
-                   | descriptionStatement? statusStatement? referenceStatement? argumentStatement?
-                   | descriptionStatement? referenceStatement? statusStatement? argumentStatement?
-                   | descriptionStatement? referenceStatement? argumentStatement? statusStatement?
-                   | referenceStatement? descriptionStatement? argumentStatement? statusStatement?
-                   | referenceStatement? descriptionStatement? statusStatement? argumentStatement?
-                   | referenceStatement? statusStatement? argumentStatement? descriptionStatement?
-                   | referenceStatement? statusStatement? descriptionStatement? argumentStatement?
-                   | referenceStatement? argumentStatement? descriptionStatement? statusStatement?
-                   | referenceStatement? argumentStatement? statusStatement? descriptionStatement?
-                   ;
+    extensionBody : (argumentStatement | statusStatement | descriptionStatement
+                  | referenceStatement | compilerAnnotationStatement)* ;
 
     /**
      * argument-stmt       = argument-keyword sep identifier-arg-str optsep
@@ -291,35 +270,13 @@
      *                            [status-stmt stmtsep]
      *                            [description-stmt stmtsep]
      *                            [reference-stmt stmtsep]
+     *                            [compiler-annotation-stmt stmtsep]
      *                        "}")
+     * TODO : 0..1 occurance to be checked in listener
      */
     identityStatement : IDENTITY_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE identityBody RIGHT_CURLY_BRACE);
-    identityBody : baseStatement? statusStatement? descriptionStatement? referenceStatement?
-                  | baseStatement? statusStatement? referenceStatement? descriptionStatement?
-                  | baseStatement? descriptionStatement? statusStatement? referenceStatement?
-                  | baseStatement? descriptionStatement? referenceStatement? statusStatement?
-                  | baseStatement? referenceStatement? descriptionStatement? statusStatement?
-                  | baseStatement? referenceStatement? statusStatement? descriptionStatement?
-                  | referenceStatement? baseStatement? statusStatement? descriptionStatement?
-                  | referenceStatement? baseStatement? descriptionStatement? statusStatement?
-                  | referenceStatement? statusStatement? baseStatement? descriptionStatement?
-                  | referenceStatement? statusStatement? descriptionStatement? baseStatement?
-                  | referenceStatement? descriptionStatement? statusStatement? baseStatement?
-                  | referenceStatement? descriptionStatement? baseStatement? statusStatement?
-                  | descriptionStatement? referenceStatement? statusStatement? baseStatement?
-                  | descriptionStatement? referenceStatement? statusStatement? baseStatement?
-                  | descriptionStatement? referenceStatement? baseStatement? statusStatement?
-                  | descriptionStatement? statusStatement? baseStatement? referenceStatement?
-                  | descriptionStatement? statusStatement? referenceStatement? baseStatement?
-                  | descriptionStatement? baseStatement? referenceStatement? statusStatement?
-                  | descriptionStatement? baseStatement? statusStatement? referenceStatement?
-                  | statusStatement? baseStatement? descriptionStatement? referenceStatement?
-                  | statusStatement? baseStatement? referenceStatement? descriptionStatement?
-                  | statusStatement? descriptionStatement? baseStatement? referenceStatement?
-                  | statusStatement? descriptionStatement? referenceStatement? baseStatement?
-                  | statusStatement? referenceStatement? descriptionStatement? baseStatement?
-                  | statusStatement? referenceStatement? baseStatement? descriptionStatement?
-                  ;
+    identityBody : (baseStatement | statusStatement | descriptionStatement | referenceStatement
+                 | compilerAnnotationStatement)*;
 
     /**
      * base-stmt           = base-keyword sep identifier-ref-arg-str
@@ -337,34 +294,13 @@
      *                             [status-stmt stmtsep]
      *                             [description-stmt stmtsep]
      *                             [reference-stmt stmtsep]
+     *                             [compiler-annotation-stmt stmtsep]
      *                         "}")
+     * TODO : 0..1 occurance to be checked in listener
      */
     featureStatement : FEATURE_KEYWORD string (STMTEND | LEFT_CURLY_BRACE featureBody RIGHT_CURLY_BRACE);
-    featureBody : ifFeatureStatement* statusStatement? descriptionStatement? referenceStatement?
-                 | ifFeatureStatement* statusStatement? referenceStatement? descriptionStatement?
-                 | ifFeatureStatement* descriptionStatement? statusStatement? referenceStatement?
-                 | ifFeatureStatement* descriptionStatement? referenceStatement? statusStatement?
-                 | ifFeatureStatement* referenceStatement? statusStatement? descriptionStatement?
-                 | ifFeatureStatement* referenceStatement? descriptionStatement? statusStatement?
-                 | statusStatement? ifFeatureStatement* descriptionStatement? referenceStatement?
-                 | statusStatement? ifFeatureStatement* referenceStatement? descriptionStatement?
-                 | statusStatement? descriptionStatement? ifFeatureStatement* referenceStatement?
-                 | statusStatement? descriptionStatement? referenceStatement? ifFeatureStatement*
-                 | statusStatement? referenceStatement? ifFeatureStatement* descriptionStatement?
-                 | statusStatement? referenceStatement? descriptionStatement? ifFeatureStatement*
-                 | descriptionStatement? ifFeatureStatement* statusStatement? referenceStatement?
-                 | descriptionStatement? ifFeatureStatement* referenceStatement? statusStatement?
-                 | descriptionStatement? statusStatement? ifFeatureStatement* referenceStatement?
-                 | descriptionStatement? statusStatement? referenceStatement? ifFeatureStatement*
-                 | descriptionStatement? referenceStatement* statusStatement? ifFeatureStatement*
-                 | descriptionStatement? referenceStatement* ifFeatureStatement? statusStatement?
-                 | referenceStatement? ifFeatureStatement* statusStatement? descriptionStatement?
-                 | referenceStatement? ifFeatureStatement* descriptionStatement? statusStatement?
-                 | referenceStatement? descriptionStatement? statusStatement? ifFeatureStatement*
-                 | referenceStatement? descriptionStatement? ifFeatureStatement* statusStatement?
-                 | referenceStatement? statusStatement? descriptionStatement? ifFeatureStatement*
-                 | referenceStatement? statusStatement? ifFeatureStatement* descriptionStatement?
-                 ;
+    featureBody : (ifFeatureStatement | statusStatement | descriptionStatement
+                | referenceStatement | compilerAnnotationStatement)* ;
 
     /**
      *  data-def-stmt       = container-stmt /
@@ -404,11 +340,13 @@
      *                             [status-stmt stmtsep]
      *                             [description-stmt stmtsep]
      *                             [reference-stmt stmtsep]
+     *                             [compiler-annotation-stmt stmtsep]
      *                           "}"
      * TODO : 0..1 occurance to be validated in listener
      */
     typedefStatement : TYPEDEF_KEYWORD identifier LEFT_CURLY_BRACE
-                   (typeStatement | unitsStatement | defaultStatement | statusStatement | descriptionStatement | referenceStatement)*
+                   (typeStatement | unitsStatement | defaultStatement | statusStatement | descriptionStatement
+                   | compilerAnnotationStatement | referenceStatement)*
                    RIGHT_CURLY_BRACE;
 
     /**
@@ -770,6 +708,7 @@
      *                            [status-stmt stmtsep]
      *                             [description-stmt stmtsep]
      *                             [reference-stmt stmtsep]
+     *                             [compiler-annotation-stmt stmtsep]
      *                             *((typedef-stmt /
      *                                grouping-stmt) stmtsep)
      *                             *(data-def-stmt stmtsep)
@@ -778,7 +717,7 @@
      */
     groupingStatement : GROUPING_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE
                       (statusStatement | descriptionStatement | referenceStatement | typedefStatement | groupingStatement
-                       | dataDefStatement)* RIGHT_CURLY_BRACE);
+                       | dataDefStatement | compilerAnnotationStatement)* RIGHT_CURLY_BRACE);
 
     /**
      *  container-stmt      = container-keyword sep identifier-arg-str optsep
@@ -793,6 +732,7 @@
      *                             [status-stmt stmtsep]
      *                             [description-stmt stmtsep]
      *                             [reference-stmt stmtsep]
+     *                             [compiler-annotation-stmt stmtsep]
      *                             *((typedef-stmt /
      *                                grouping-stmt) stmtsep)
      *                             *(data-def-stmt stmtsep)
@@ -802,7 +742,7 @@
     containerStatement : CONTAINER_KEYWORD identifier
                      (STMTEND | LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | mustStatement | presenceStatement | configStatement
                      | statusStatement | descriptionStatement | referenceStatement | typedefStatement | groupingStatement
-                     | dataDefStatement)* RIGHT_CURLY_BRACE);
+                     | dataDefStatement | compilerAnnotationStatement)* RIGHT_CURLY_BRACE);
 
     /**
      *  leaf-stmt           = leaf-keyword sep identifier-arg-str optsep
@@ -824,7 +764,7 @@
      */
     leafStatement : LEAF_KEYWORD identifier LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | typeStatement | unitsStatement
               | mustStatement | defaultStatement | configStatement | mandatoryStatement | statusStatement  | descriptionStatement
-              | referenceStatement)* RIGHT_CURLY_BRACE;
+              | referenceStatement | compilerAnnotationStatement)* RIGHT_CURLY_BRACE;
 
     /**
      *  leaf-list-stmt      = leaf-list-keyword sep identifier-arg-str optsep
@@ -847,7 +787,7 @@
      */
     leafListStatement : LEAF_LIST_KEYWORD identifier LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | typeStatement
                      | unitsStatement | mustStatement | configStatement | minElementsStatement | maxElementsStatement | orderedByStatement
-                     | statusStatement | descriptionStatement | referenceStatement)* RIGHT_CURLY_BRACE;
+                     | statusStatement | descriptionStatement | referenceStatement | compilerAnnotationStatement)* RIGHT_CURLY_BRACE;
 
     /**
      *  list-stmt           = list-keyword sep identifier-arg-str optsep
@@ -873,7 +813,8 @@
      */
     listStatement : LIST_KEYWORD identifier LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | mustStatement | keyStatement
               | uniqueStatement | configStatement | minElementsStatement | maxElementsStatement | orderedByStatement | statusStatement
-              | descriptionStatement | referenceStatement | typedefStatement | groupingStatement| dataDefStatement)* RIGHT_CURLY_BRACE;
+              | descriptionStatement | referenceStatement | typedefStatement | groupingStatement| dataDefStatement
+              | compilerAnnotationStatement)* RIGHT_CURLY_BRACE;
 
     /**
      *  key-stmt            = key-keyword sep key-arg-str stmtend
@@ -904,7 +845,7 @@
      */
     choiceStatement : CHOICE_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | defaultStatement
                   | configStatement | mandatoryStatement | statusStatement | descriptionStatement | referenceStatement | shortCaseStatement
-                  | caseStatement)* RIGHT_CURLY_BRACE);
+                  | caseStatement | compilerAnnotationStatement)* RIGHT_CURLY_BRACE);
 
     /**
      *  short-case-stmt     = container-stmt /
@@ -949,7 +890,7 @@
      */
      anyxmlStatement : ANYXML_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement
                      | mustStatement | configStatement | mandatoryStatement | statusStatement | descriptionStatement
-                     | referenceStatement)* RIGHT_CURLY_BRACE);
+                     | referenceStatement | compilerAnnotationStatement)* RIGHT_CURLY_BRACE);
 
     /**
      *  uses-stmt           = uses-keyword sep identifier-ref-arg-str optsep
@@ -961,13 +902,15 @@
      *                             [status-stmt stmtsep]
      *                             [description-stmt stmtsep]
      *                             [reference-stmt stmtsep]
+     *                             [compiler-annotation-stmt stmtsep]
      *                             *(refine-stmt stmtsep)
      *                             *(uses-augment-stmt stmtsep)
      *                         "}")
      * TODO : 0..1 occurance to be checked in listener
      */
     usesStatement : USES_KEYWORD string (STMTEND | LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | statusStatement
-                | descriptionStatement | referenceStatement | refineStatement | augmentStatement)* RIGHT_CURLY_BRACE);
+                | descriptionStatement | referenceStatement | refineStatement | augmentStatement
+                | compilerAnnotationStatement)* RIGHT_CURLY_BRACE);
 
     /**
      *  refine-stmt         = refine-keyword sep refine-arg-str optsep
@@ -1082,7 +1025,8 @@
      * TODO : 0..1 occurance to be checked in listener
      */
     augmentStatement : AUGMENT_KEYWORD augment LEFT_CURLY_BRACE (whenStatement | ifFeatureStatement | statusStatement
-                   | descriptionStatement | referenceStatement | dataDefStatement  | caseStatement)* RIGHT_CURLY_BRACE;
+                   | descriptionStatement | referenceStatement | dataDefStatement  | caseStatement
+                   | compilerAnnotationStatement)* RIGHT_CURLY_BRACE;
 
     /**
      *  when-stmt           = when-keyword sep string optsep
@@ -1110,10 +1054,13 @@
      *                                grouping-stmt) stmtsep)
      *                             [input-stmt stmtsep]
      *                             [output-stmt stmtsep]
+     *                             [compiler-annotation-stmt stmtsep]
      *                         "}")
+     * TODO : 0..1 occurance to be checked in listener
      */
-    rpcStatement : RPC_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE (ifFeatureStatement | statusStatement | descriptionStatement
-                | referenceStatement | typedefStatement | groupingStatement | inputStatement | outputStatement)* RIGHT_CURLY_BRACE);
+    rpcStatement : RPC_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE (ifFeatureStatement | statusStatement
+                 | descriptionStatement | referenceStatement | typedefStatement | groupingStatement | inputStatement
+                 | outputStatement | compilerAnnotationStatement)* RIGHT_CURLY_BRACE);
 
     /**
      * input-stmt          = input-keyword optsep
@@ -1147,6 +1094,7 @@
      *                             [status-stmt stmtsep]
      *                             [description-stmt stmtsep]
      *                             [reference-stmt stmtsep]
+     *                             [compiler-annotation-stmt stmtsep]
      *                             *((typedef-stmt /
      *                                grouping-stmt) stmtsep)
      *                             *(data-def-stmt stmtsep)
@@ -1155,7 +1103,7 @@
      */
      notificationStatement : NOTIFICATION_KEYWORD identifier (STMTEND | LEFT_CURLY_BRACE (ifFeatureStatement
                            | statusStatement | descriptionStatement | referenceStatement | typedefStatement
-                           | groupingStatement | dataDefStatement)* RIGHT_CURLY_BRACE);
+                           | groupingStatement | dataDefStatement | compilerAnnotationStatement)* RIGHT_CURLY_BRACE);
 
     /**
      *  deviation-stmt      = deviation-keyword sep
@@ -1164,6 +1112,7 @@
      *                            ;; these stmts can appear in any order
      *                            [description-stmt stmtsep]
      *                            [reference-stmt stmtsep]
+     *                            [compiler-annotation-stmt stmtsep]
      *                            (deviate-not-supported-stmt /
      *                              1*(deviate-add-stmt /
      *                                 deviate-replace-stmt /
@@ -1173,7 +1122,7 @@
      */
     deviationStatement: DEVIATION_KEYWORD deviation LEFT_CURLY_BRACE (descriptionStatement | referenceStatement
                       | deviateNotSupportedStatement | deviateAddStatement | deviateReplaceStatement
-                      | deviateDeleteStatement)* RIGHT_CURLY_BRACE;
+                      | deviateDeleteStatement | compilerAnnotationStatement)* RIGHT_CURLY_BRACE;
 
     /**
      * deviate-not-supported-stmt =
@@ -1233,11 +1182,68 @@
                            defaultStatement? configStatement? mandatoryStatement? minElementsStatement?
                            maxElementsStatement? RIGHT_CURLY_BRACE));
 
+    /**
+     * compiler-annotation-stmt = compiler-annotation-keyword optsep
+     *                    "{" stmtsep
+     *                        ;; these stmts can appear in any order
+     *                        *(if-feature-stmt stmtsep)
+     *                         [status-stmt stmtsep]
+     *                         [units-stmt stmtsep]
+     *                         [reference-stmt stmtsep]
+     *                         1*(compiler-annotation-stmt stmtsep)
+     *                    "}"
+     */
+    compilerAnnotationStatement : COMPILER_ANNOTATION_KEYWORD LEFT_CURLY_BRACE (ifFeatureStatement | statusStatement
+                                | unitsStatement | referenceStatement | annotationStatement)*
+                                  RIGHT_CURLY_BRACE;
+
+    /**
+     * annotation-stmt = "@" annotation-type [annotation-parameter-specification] ";"
+     */
+    annotationStatement : annotationType annotationParameterSpecification? STMTEND;
+
+    /**
+     * annotation-type = identifier
+     */
+    annotationType : annotationIdentifier;
+
+    /**
+     * annotation-parameter-specification = "(" optsep annotation-parameter-specification-arg optsep ")"
+     */
+    annotationParameterSpecification : LEFT_ROUND_BRACE annotationParameterSpecificationArg RIGHT_ROUND_BRACE;
+
+    /**
+     * annotation-parameter-specification-arg = annotation-para-type-value
+     *                                     / annotation-para-instance *("," annotation-para-instance)
+     */
+    annotationParameterSpecificationArg : annotationParaTypeValue
+                                        | annotationParaInstance (COMMA annotationParaInstance)*;
+
+    /**
+     * annotation-para-instance = annotation-para-type-identifier optsep "=" optsep annotation-para-type-value
+     */
+    annotationParaInstance : annotationParaTypeIdentifier EQUAL annotationParaTypeValue;
+
+    /**
+     * annotation-para-type-identifier = identifier
+     */
+    annotationParaTypeIdentifier : identifier;
+
+    /**
+     * annotation-para-type-value = identifier
+     */
+    annotationParaTypeValue : identifier;
+
     string : STRING (PLUS STRING)*
            | IDENTIFIER
            | INTEGER
            | yangConstruct;
 
+    annotationIdentifier : STRING (PLUS STRING)*
+                         | ANNOTATION_IDENTIFIER
+                         | IDENTIFIER
+                         | yangConstruct;
+
     identifier : STRING (PLUS STRING)*
                | IDENTIFIER
                | yangConstruct;
@@ -1296,4 +1302,5 @@
                   | UNITS_KEYWORD | USES_KEYWORD | VALUE_KEYWORD | WHEN_KEYWORD | YANG_VERSION_KEYWORD
                   | YIN_ELEMENT_KEYWORD | ADD_KEYWORD | CURRENT_KEYWORD | DELETE_KEYWORD | DEPRECATED_KEYWORD
                   | FALSE_KEYWORD | MAX_KEYWORD | MIN_KEYWORD | NOT_SUPPORTED_KEYWORD | OBSOLETE_KEYWORD
-                  | REPLACE_KEYWORD | SYSTEM_KEYWORD | TRUE_KEYWORD | UNBOUNDED_KEYWORD | USER_KEYWORD;
\ No newline at end of file
+                  | REPLACE_KEYWORD | SYSTEM_KEYWORD | TRUE_KEYWORD | UNBOUNDED_KEYWORD | USER_KEYWORD
+                  | COMPILER_ANNOTATION_KEYWORD;
diff --git a/utils/yangutils/plugin/src/main/resources/YangLexer.g4 b/utils/yangutils/plugin/src/main/resources/YangLexer.g4
index da20fd8..d1f7fea 100644
--- a/utils/yangutils/plugin/src/main/resources/YangLexer.g4
+++ b/utils/yangutils/plugin/src/main/resources/YangLexer.g4
@@ -100,6 +100,7 @@
     TRUE_KEYWORD        : 'true';
     UNBOUNDED_KEYWORD   : 'unbounded';
     USER_KEYWORD        : 'user';
+    COMPILER_ANNOTATION_KEYWORD : 'compiler-annotation';
 
     // Lexer tokens to be skipped
     COMMENT
@@ -116,11 +117,18 @@
     DATE_ARG            : DIGIT DIGIT DIGIT DIGIT '-' DIGIT DIGIT '-' DIGIT DIGIT;
     LEFT_CURLY_BRACE    : '{';
     RIGHT_CURLY_BRACE   : '}';
+    LEFT_ROUND_BRACE    : '(';
+    RIGHT_ROUND_BRACE   : ')';
+    ANNOTATION_START    : '@';
+    ANNOTATION_IDENTIFIER : ('@')(ALPHA | '_')
+                              (ALPHA | DIGIT | '_' | '-' | '.')*;
     IDENTIFIER          : (ALPHA | '_')
                           (ALPHA | DIGIT | '_' | '-' | '.')*;
     STMTEND             : ';';
     DQUOTE              : '"';
     COLON               : ':';
+    COMMA               : ',';
+    EQUAL               : '=';
     PLUS : '+';
     MINUS: '-';
 
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/ConfigListenerTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/ConfigListenerTest.java
index cb4c42d..ab84306 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/ConfigListenerTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/ConfigListenerTest.java
@@ -129,19 +129,6 @@
     }
 
     /**
-     * Checks config statement as sub-statement of module.
-     */
-    @Test
-    public void processModuleSubStatementConfig() throws IOException, ParserException {
-        thrown.expect(ParserException.class);
-        thrown.expectMessage("mismatched input 'config' expecting {'anyxml', 'augment', 'choice', 'contact', "
-                + "'container', 'description', 'extension', 'deviation', 'feature', 'grouping', 'identity', 'import',"
-                + " 'include', 'leaf', 'leaf-list', 'list', 'notification', 'organization', 'reference',"
-                + " 'revision', 'rpc', 'typedef', 'uses', '}'}");
-        YangNode node = manager.getDataModel("src/test/resources/ModuleSubStatementConfig.yang");
-    }
-
-    /**
      * Checks config statement as sub-statement of container.
      */
     @Test
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListenerTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListenerTest.java
index a5b2dfb..b156188 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListenerTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListenerTest.java
@@ -91,13 +91,8 @@
     /**
      * Checks whether exception is thrown when leaf-list keyword is incorrect.
      */
-    @Test
+    @Test(expected = ParserException.class)
     public void processLeafListInvalidStatement() throws IOException, ParserException {
-        thrown.expect(ParserException.class);
-        thrown.expectMessage("mismatched input 'leaflist' expecting {'anyxml', 'augment', 'choice', 'contact', "
-                + "'container', 'description', 'extension', 'deviation', 'feature', 'grouping', 'identity', 'import',"
-                + " 'include', 'leaf', 'leaf-list', 'list', 'notification', 'organization', 'reference',"
-                + " 'revision', 'rpc', 'typedef', 'uses', '}'}");
         YangNode node = manager.getDataModel("src/test/resources/LeafListInvalidStatement.yang");
     }
 
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/LeafListenerTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/LeafListenerTest.java
index 0b4beaa..9bbd0f5 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/LeafListenerTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/LeafListenerTest.java
@@ -90,19 +90,6 @@
     }
 
     /**
-     * Checks whether exception is thrown when leaf keyword is incorrect.
-     */
-    @Test
-    public void processLeafInvalidStatement() throws IOException, ParserException {
-        thrown.expect(ParserException.class);
-        thrown.expectMessage("mismatched input 'leafs' expecting {'anyxml', 'augment', 'choice', 'contact', "
-                + "'container', 'description', 'extension', 'deviation', 'feature', 'grouping', 'identity', 'import',"
-                + " 'include', 'leaf', 'leaf-list', 'list', 'notification', 'organization', 'reference',"
-                + " 'revision', 'rpc', 'typedef', 'uses', '}'}");
-        YangNode node = manager.getDataModel("src/test/resources/LeafInvalidStatement.yang");
-    }
-
-    /**
      * Checks whether exception is thrown when leaf keyword without Left brace
      * as per grammar.
      */
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MandatoryListenerTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MandatoryListenerTest.java
index 52e43a9..fef5599 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MandatoryListenerTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MandatoryListenerTest.java
@@ -140,18 +140,4 @@
         thrown.expectMessage("missing ';' at '}'");
         YangNode node = manager.getDataModel("src/test/resources/MandatoryWithoutStatementEnd.yang");
     }
-
-    /**
-     * Checks mandatory statement as sub-statement of module and expects
-     * exception.
-     */
-    @Test
-    public void processModuleSubStatementMandatory() throws IOException, ParserException {
-        thrown.expect(ParserException.class);
-        thrown.expectMessage("mismatched input 'mandatory' expecting {'anyxml', 'augment', 'choice', 'contact',"
-                + " 'container', 'description', 'extension', 'deviation', 'feature', 'grouping', 'identity', 'import',"
-                + " 'include', 'leaf', 'leaf-list', 'list', 'notification', 'organization', 'reference',"
-                + " 'revision', 'rpc', 'typedef', 'uses', '}'}");
-        YangNode node = manager.getDataModel("src/test/resources/ModuleSubStatementMandatory.yang");
-    }
 }
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListenerTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListenerTest.java
index aa0cee2..29e4c63 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListenerTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListenerTest.java
@@ -92,19 +92,6 @@
     }
 
     /**
-     * Checks whether exception is thrown when invalid max-elements keyword is
-     * given as input.
-     */
-    @Test
-    public void processMaxElementsInvalidStatement() throws IOException, ParserException {
-        thrown.expect(ParserException.class);
-        thrown.expectMessage("extraneous input 'max-element' expecting {'config', 'description', 'if-feature',"
-                + " 'max-elements', 'min-elements', 'must', 'ordered-by', 'reference', 'status', 'type', 'units', "
-                + "'when', '}'}");
-        YangNode node = manager.getDataModel("src/test/resources/MaxElementsInvalidStatement.yang");
-    }
-
-    /**
      * Checks whether exception is thrown when max-elements statement without
      * statement end is given as input.
      */
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MinElementsListenerTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MinElementsListenerTest.java
index c2f668b..e362eeb 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MinElementsListenerTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MinElementsListenerTest.java
@@ -92,19 +92,6 @@
     }
 
     /**
-     * Checks whether exception is thrown when invalid min-elements keyword is
-     * given as input.
-     */
-    @Test
-    public void processMinElementsInvalidKeyword() throws IOException, ParserException {
-        thrown.expect(ParserException.class);
-        thrown.expectMessage("extraneous input 'min-element' expecting {'config', 'description', 'if-feature',"
-                + " 'max-elements', 'min-elements', 'must', 'ordered-by', 'reference', 'status', 'type', 'units',"
-                + " 'when', '}'}");
-        YangNode node = manager.getDataModel("src/test/resources/MinElementsInvalidKeyword.yang");
-    }
-
-    /**
      * Checks whether exception is thrown when invalid min-elements value is
      * given as input.
      */
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/StatusListenerTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/StatusListenerTest.java
index e6c840d..6d97bb8 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/StatusListenerTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/StatusListenerTest.java
@@ -145,19 +145,6 @@
     }
 
     /**
-     * Checks status statement as sub-statement of module.
-     */
-    @Test
-    public void processModuleSubStatementStatus() throws IOException, ParserException {
-        thrown.expect(ParserException.class);
-        thrown.expectMessage("mismatched input 'status' expecting {'anyxml', 'augment', 'choice', 'contact', "
-                + "'container', 'description', 'extension', 'deviation', 'feature', 'grouping', 'identity', 'import',"
-                + " 'include', 'leaf', 'leaf-list', 'list', 'notification', 'organization', 'reference', "
-                + "'revision', 'rpc', 'typedef', 'uses', '}'}");
-        YangNode node = manager.getDataModel("src/test/resources/ModuleSubStatementStatus.yang");
-    }
-
-    /**
      * Checks status statement as sub-statement of container.
      */
     @Test
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/UnionListenerTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/UnionListenerTest.java
index 04b3796..1fe7218 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/UnionListenerTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/UnionListenerTest.java
@@ -138,4 +138,12 @@
 
         YangNode node = manager.getDataModel("src/test/resources/UnionWithEmptyType.yang");
     }
+
+    /**
+     * Checks whether type union has atleast one type statement.
+     */
+    @Test (expected = ParserException.class)
+    public void processUnionWithoutChild() throws IOException, ParserException {
+        manager.getDataModel("src/test/resources/UnionWithoutChild.yang");
+    }
 }
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/UnitsListenerTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/UnitsListenerTest.java
index 6684df5..fe2bed1 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/UnitsListenerTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/UnitsListenerTest.java
@@ -71,19 +71,6 @@
     }
 
     /**
-     * Checks invalid units statement as sub-statement of module.
-     */
-    @Test
-    public void processModuleSubStatementUnits() throws IOException, ParserException {
-        thrown.expect(ParserException.class);
-        thrown.expectMessage("mismatched input 'type' expecting {'anyxml', 'augment', 'choice', 'contact', "
-                + "'container', 'description', 'extension', 'deviation', 'feature', 'grouping', 'identity',"
-                + " 'import', 'include', 'leaf', 'leaf-list', 'list', 'notification', 'organization', "
-                + "'reference', 'revision', 'rpc', 'typedef', 'uses', '}'}");
-        YangNode node = manager.getDataModel("src/test/resources/ModuleSubStatementUnits.yang");
-    }
-
-    /**
      * Checks invalid units statement(without statement end).
      */
     @Test
diff --git a/utils/yangutils/plugin/src/test/resources/LeafInvalidStatement.yang b/utils/yangutils/plugin/src/test/resources/LeafInvalidStatement.yang
deleted file mode 100644
index 4d4f6f6..0000000
--- a/utils/yangutils/plugin/src/test/resources/LeafInvalidStatement.yang
+++ /dev/null
@@ -1,14 +0,0 @@
-module Test {
-    yang-version 1;
-    namespace http://huawei.com;
-    prefix Ant;
-    leafs invalid-interval {
-        type "uint16";
-        units "seconds";
-        description "Interval before a route is declared invalid";
-        config true;
-        mandatory true;
-        status current;
-        reference "RFC 6020";
-    }
-}
\ No newline at end of file
diff --git a/utils/yangutils/plugin/src/test/resources/MaxElementsInvalidStatement.yang b/utils/yangutils/plugin/src/test/resources/MaxElementsInvalidStatement.yang
deleted file mode 100644
index 67cb358..0000000
--- a/utils/yangutils/plugin/src/test/resources/MaxElementsInvalidStatement.yang
+++ /dev/null
@@ -1,14 +0,0 @@
-module Test {
-    yang-version 1;
-    namespace http://huawei.com;
-    prefix Ant;
-    leaf-list invalid-interval {
-        type "uint16";
-        units "seconds";
-        max-element 3;
-        description "Interval before a route is declared invalid;
-        config true;
-        status current;
-        reference "RFC 6020";
-    }
-}
diff --git a/utils/yangutils/plugin/src/test/resources/MinElementsInvalidKeyword.yang b/utils/yangutils/plugin/src/test/resources/MinElementsInvalidKeyword.yang
deleted file mode 100644
index e634509..0000000
--- a/utils/yangutils/plugin/src/test/resources/MinElementsInvalidKeyword.yang
+++ /dev/null
@@ -1,14 +0,0 @@
-module Test {
-    yang-version 1;
-    namespace http://huawei.com;
-    prefix Ant;
-    leaf-list invalid-interval {
-        type "uint16";
-        units "seconds";
-        min-element 3;
-        description "Interval before a route is declared invalid";
-        config true;
-        status current;
-        reference "RFC 6020";
-    }
-}
\ No newline at end of file
diff --git a/utils/yangutils/plugin/src/test/resources/ModuleSubStatementConfig.yang b/utils/yangutils/plugin/src/test/resources/ModuleSubStatementConfig.yang
deleted file mode 100644
index 49deb3e..0000000
--- a/utils/yangutils/plugin/src/test/resources/ModuleSubStatementConfig.yang
+++ /dev/null
@@ -1,6 +0,0 @@
-module Test {
-    yang-version 1;
-    namespace http://huawei.com;
-    prefix Ant;
-    config invalid;
-}
\ No newline at end of file
diff --git a/utils/yangutils/plugin/src/test/resources/ModuleSubStatementMandatory.yang b/utils/yangutils/plugin/src/test/resources/ModuleSubStatementMandatory.yang
deleted file mode 100644
index 8f6e1a1..0000000
--- a/utils/yangutils/plugin/src/test/resources/ModuleSubStatementMandatory.yang
+++ /dev/null
@@ -1,6 +0,0 @@
-module Test {
-    yang-version 1;
-    namespace http://huawei.com;
-    prefix Ant;
-    mandatory false;
-}
\ No newline at end of file
diff --git a/utils/yangutils/plugin/src/test/resources/ModuleSubStatementStatus.yang b/utils/yangutils/plugin/src/test/resources/ModuleSubStatementStatus.yang
deleted file mode 100644
index 3739096..0000000
--- a/utils/yangutils/plugin/src/test/resources/ModuleSubStatementStatus.yang
+++ /dev/null
@@ -1,6 +0,0 @@
-module Test {
-    yang-version 1;
-    namespace http://huawei.com;
-    prefix Ant;
-    status current;
-}
\ No newline at end of file
diff --git a/utils/yangutils/plugin/src/test/resources/ModuleSubStatementUnits.yang b/utils/yangutils/plugin/src/test/resources/ModuleSubStatementUnits.yang
deleted file mode 100644
index d9381ec..0000000
--- a/utils/yangutils/plugin/src/test/resources/ModuleSubStatementUnits.yang
+++ /dev/null
@@ -1,7 +0,0 @@
-module Test {
-    yang-version 1;
-    namespace http://huawei.com;
-    prefix Ant;
-    type "uint16";
-    units "seconds";
-}
\ No newline at end of file
diff --git a/utils/yangutils/plugin/src/test/resources/UnionWithoutChild.yang b/utils/yangutils/plugin/src/test/resources/UnionWithoutChild.yang
new file mode 100644
index 0000000..14d3329
--- /dev/null
+++ b/utils/yangutils/plugin/src/test/resources/UnionWithoutChild.yang
@@ -0,0 +1,14 @@
+module Test {
+    yang-version 1;
+    namespace http://huawei.com;
+    prefix Ant;
+    list valid {
+        key "invalid-interval";
+        leaf invalid-interval {
+            type union {
+               type "union";
+            }
+        }
+    }
+}
+