diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangImport.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangImport.java
index b60f742..b0d9f9e 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangImport.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangImport.java
@@ -246,7 +246,9 @@
                     return;
                 }
                 // Match revision if import is with revision.
-                if (((YangModule) moduleNode).getRevision().getRevDate().equals(importedModuleRevision)) {
+                if (moduleNode.getRevision() != null && (moduleNode
+                        .getRevision().getRevDate()
+                        .equals(importedModuleRevision))) {
                     setImportedNode(moduleNode);
                     return;
                 }
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInclude.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInclude.java
index 68c093c..3be5d7b 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInclude.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInclude.java
@@ -183,8 +183,11 @@
                     setIncludedNode(subModuleNode);
                     return (YangSubModule) subModuleNode;
                 }
+
                 // Match revision if inclusion is with revision.
-                if (((YangSubModule) subModuleNode).getRevision().getRevDate().equals(includedSubModuleRevision)) {
+                if (subModuleNode.getRevision() != null && subModuleNode
+                        .getRevision().getRevDate()
+                        .equals(includedSubModuleRevision)) {
                     setIncludedNode(subModuleNode);
                     return (YangSubModule) subModuleNode;
                 }
diff --git a/parser/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ShortCaseListener.java b/parser/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ShortCaseListener.java
index 6963a98..8dbd41d 100644
--- a/parser/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ShortCaseListener.java
+++ b/parser/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ShortCaseListener.java
@@ -101,6 +101,9 @@
         } else if (ctx.leafStatement() != null) {
             caseNode.setName(getValidIdentifier(ctx.leafStatement().identifier().getText(), CASE_DATA, ctx));
             errorConstructContext = ctx.leafStatement();
+        } else if (ctx.anyxmlStatement() != null) {
+            // Anyxml statement is not supported
+            return;
         } else {
             throw new ParserException(constructListenerErrorMessage(INVALID_CHILD, SHORT_CASE_DATA, "", ENTRY));
         }
@@ -141,6 +144,9 @@
 
         if (listener.getParsedDataStack().peek() instanceof YangCase) {
             listener.getParsedDataStack().pop();
+        } else if (ctx.anyxmlStatement() != null) {
+            // Anyxml statement is not supported
+            return;
         } else {
             throw new ParserException(constructListenerErrorMessage(MISSING_CURRENT_HOLDER, SHORT_CASE_DATA,
                     "", EXIT));
