diff --git a/runtime/src/test/resources/schemaProviderTestYangFiles/notificationStatement.yang b/runtime/src/test/resources/schemaProviderTestYangFiles/notificationStatement.yang
new file mode 100644
index 0000000..31ea9af
--- /dev/null
+++ b/runtime/src/test/resources/schemaProviderTestYangFiles/notificationStatement.yang
@@ -0,0 +1,14 @@
+module event {
+
+    namespace "http://example.com/event";
+    prefix "ev";
+
+    notification event {
+        container c {
+            leaf event-class {
+                type string;
+            }
+        }
+    }
+}
+
diff --git a/runtime/src/test/resources/schemaProviderTestYangFiles/yrt-ietf-otn-tunnel@2017-03-11.yang b/runtime/src/test/resources/schemaProviderTestYangFiles/yrt-ietf-otn-tunnel@2017-03-11.yang
new file mode 100644
index 0000000..f69afa2
--- /dev/null
+++ b/runtime/src/test/resources/schemaProviderTestYangFiles/yrt-ietf-otn-tunnel@2017-03-11.yang
@@ -0,0 +1,484 @@
+module yrt-ietf-otn-tunnel {
+
+    yang-version 1.1;
+
+    namespace "urn:ietf:params:xml:ns:yang:yrt-ietf-otn-tunnel";
+    prefix "otn-tunnel";
+
+    import actn-ietf-te { prefix "te"; }
+    import yrt-ietf-transport-types { prefix "tran-types"; }
+    //import yang-ext { prefix ext; revision-date 2013-07-09; }
+    import actn-ietf-te-types {
+      prefix te-types;
+    }
+
+    import yrt-ietf-inet-types {
+      prefix inet;
+    }
+
+    organization
+        "IETF CCAMP Working Group";
+
+    contact
+        "WG Web: <http://tools.ietf.org/wg/ccamp/>
+        WG List: <mailto:ccamp@ietf.org>
+
+        Editor: Anurag Sharma
+                <mailto:AnSharma@infinera.com>
+
+        Editor: Rajan Rao
+                <mailto:rrao@infinera.com>
+
+        Editor: Xian Zhang
+                <mailto:zhang.xian@huawei.com>
+
+        Editor: Kun Xiang
+                <mailto:xiangkun@huawei.com>";
+
+    description
+        "This module defines a model for OTN Tunnel Services.";
+
+    revision "2017-03-11" {
+        description
+            "Revision 0.3";
+        reference "TBD";
+    }
+
+    grouping otn-tunnel-endpoint {
+        description "Parameters for OTN tunnel.";
+
+        leaf payload-treatment {
+            type enumeration {
+                enum switching;
+                enum transport;
+            }
+            default switching;
+            description
+                "Treatment of the incoming payload. Payload can
+                either be switched, or transported as is.";
+        }
+
+        leaf src-client-signal {
+                type identityref {
+                        base tran-types:client-signal;
+                }
+                description
+                        "Client signal at the source endpoint of
+                        the tunnel.";
+        }
+
+        leaf src-tpn {
+            type uint16 {
+                range "0..4095";
+            }
+            description
+                "Tributary Port Number. Applicable in case of mux
+                services.";
+            reference
+                "RFC7139: GMPLS Signaling Extensions for Control of
+                Evolving G.709 Optical Transport Networks.";
+        }
+
+        leaf src-tsg {
+            type identityref {
+                base tran-types:tributary-slot-granularity;
+            }
+            description
+                "Tributary slot granularity. Applicable in case of mux
+                services.";
+            reference
+                "G.709/Y.1331, February 2016: Interfaces for the
+                Optical Transport Network (OTN)";
+        }
+
+        leaf src-tributary-slot-count {
+                type uint16;
+                description
+                        "Number of tributary slots used at the source.";
+        }
+
+        container src-tributary-slots {
+            description
+                "A list of tributary slots used by the client
+                service. Applicable in case of mux services.";
+            leaf-list values {
+                type uint8;
+                description
+                        "Tributary tributary slot value.";
+                reference
+                    "G.709/Y.1331, February 2016: Interfaces for the
+                        Optical Transport Network (OTN)";
+            }
+        }
+
+        leaf dst-client-signal {
+            type identityref {
+                    base tran-types:client-signal;
+            }
+            description
+                    "Client signal at the destination endpoint of
+                    the tunnel.";
+        }
+
+        leaf dst-tpn {
+            type uint16 {
+                range "0..4095";
+            }
+            description
+                "Tributary Port Number. Applicable in case of mux
+                services.";
+            reference
+                "RFC7139: GMPLS Signaling Extensions for Control of
+                Evolving G.709 Optical Transport Networks.";
+        }
+
+        leaf dst-tsg {
+            type identityref {
+                base tran-types:tributary-slot-granularity;
+            }
+            description
+                "Tributary slot granularity. Applicable in case of mux
+                services.";
+            reference
+                "G.709/Y.1331, February 2016: Interfaces for the
+                Optical Transport Network (OTN)";
+        }
+
+        leaf dst-tributary-slot-count {
+            type uint16;
+            description
+                "Number of tributary slots used at the destination.";
+        }
+
+        container dst-tributary-slots {
+            description
+                "A list of tributary slots used by the client
+                service. Applicable in case of mux services.";
+            leaf-list values {
+                type uint8;
+                description
+                        "Tributary slot value.";
+                reference
+                    "G.709/Y.1331, February 2016: Interfaces for the
+                        Optical Transport Network (OTN)";
+            }
+        }
+    }
+
+    /*
+    Note: Comment has been given to authors of TE Tunnel model to add
+    tunnel-types to the model in order to identify the technology
+    type of the service.
+
+    grouping otn-service-type {
+        description
+          "Identifies the OTN Service type.";
+        container otn-service {
+          presence "Indicates OTN Service.";
+          description
+            "Its presence identifies the OTN Service type.";
+        }
+      } // otn-service-type
+
+    augment "/te:te/te:tunnels/te:tunnel/te:tunnel-types" {
+        description
+                "Introduce OTN service type for tunnel.";
+        ext:augment-identifier otn-service-type-augment;
+        uses otn-service-type;
+    }
+    */
+
+    /*
+    Note: Comment has been given to authors of TE Tunnel model to add
+    list of endpoints under config to support P2MP tunnel.
+    */
+    augment "/te:te/te:tunnels/te:tunnel/te:config" {
+        description
+                "Augment with additional parameters required for OTN
+                service.";
+        //ext:augment-identifier otn-tunnel-endpoint-config-augment;
+        uses otn-tunnel-endpoint;
+    }
+
+    augment "/te:te/te:tunnels/te:tunnel/te:state" {
+        description
+                "Augment with additional parameters required for OTN
+                service.";
+        //ext:augment-identifier otn-tunnel-endpoint-state-augment;
+        uses otn-tunnel-endpoint;
+    }
+
+    /*
+    Note: Comment has been given to authors of TE Tunnel model to add
+    tunnel-lifecycle-event to the model. This notification is reported
+    for all lifecycle changes (create, delete, and update) to the
+    tunnel or lsp.
+    augment "/te:tunnel-lifecycle-event" {
+        description
+          "OTN service event";
+        uses otn-service-type;
+        uses otn-tunnel-params;
+
+        list endpoint {
+          key
+            "endpoint-address tp-id";
+          description
+            "List of Tunnel Endpoints.";
+          uses te:tunnel-endpoint;
+          uses otn-tunnel-params;
+        }
+      }
+    */
+
+
+  grouping p2p-path-ero {
+    description
+      "TE tunnel ERO configuration grouping";
+
+    leaf te-default-metric {
+      type uint32;
+      description
+        "Traffic engineering metric.";
+    }
+    leaf te-delay-metric {
+      type uint32;
+      description
+        "Traffic engineering delay metric.";
+    }
+    leaf te-hop-metric {
+      type uint32;
+      description
+        "Traffic engineering hop metric.";
+    }
+    container explicit-route-objects {
+      description "Explicit route objects container";
+      leaf explicit-route-usage {
+        type identityref {
+          base te-types:route-usage-type;
+        }
+        description "An explicit-route hop action.";
+      }
+      list explicit-route-object {
+        key "index";
+        description
+          "List of explicit route objects";
+        leaf index {
+          type uint32;
+          description "Index of this explicit route object";
+        }
+        uses te-types:explicit-route-hop;
+      }
+    }
+  }
+
+
+  rpc otn-te-tunnel-path-compute {
+    description "OTN TE tunnel path computation";
+    input {
+      list request {
+        key "id";
+        description "A list of path computation requests.";
+
+        leaf id {
+          type uint8;
+          description
+            "Request ID.";
+        }
+        leaf type {
+          type identityref {
+            base te-types:tunnel-type;
+          }
+          description "TE tunnel type.";
+        }
+        leaf source {
+          type inet:ip-address;
+          description
+            "TE tunnel source address.";
+        }
+        leaf destination {
+          /* Add when check */
+          type inet:ip-address;
+          description
+            "TE tunnel destination address";
+        }
+        leaf src-tp-id {
+          type binary;
+          description
+            "TE tunnel source termination point identifier.";
+        }
+        leaf dst-tp-id {
+          type binary;
+          description
+            "TE tunnel destination termination point identifier.";
+        }
+        leaf switching-layer {
+          type identityref {
+            base te-types:switching-capabilities;
+          }
+          description
+            "Switching layer where the requests are computed.";
+        }
+        leaf encoding {
+          type identityref {
+            base te-types:lsp-encoding-types;
+          }
+          description "LSP encoding type";
+        }
+        leaf protection-type {
+          type identityref {
+            base te-types:lsp-prot-type;
+          }
+          description "LSP protection type.";
+        }
+        leaf provider-id {
+          type te-types:te-global-id;
+          description
+            "An identifier to uniquely identify a provider.";
+        }
+        leaf client-id {
+          type te-types:te-global-id;
+          description
+            "An identifier to uniquely identify a client.";
+        }
+        leaf te-topology-id {
+          type te-types:te-topology-id;
+          description
+            "It is presumed that a datastore will contain many
+             topologies. To distinguish between topologies it is
+             vital to have UNIQUE topology identifiers.";
+        }
+        leaf setup-priority {
+          type uint8 {
+            range "0..7";
+          }
+          description
+            "TE LSP setup priority";
+        }
+        leaf hold-priority {
+          type uint8 {
+            range "0..7";
+          }
+          description
+            "TE LSP hold priority";
+        }
+        leaf te-path-metric-type {
+          type identityref {
+            base te-types:path-metric-type;
+          }
+          default te-types:path-metric-te;
+          description
+            "The tunnel path metric type.";
+        }
+
+        leaf odu-type {
+          type identityref{
+            base tran-types:tributary-protocol-type;
+          }
+          description "Type of ODU";
+        }
+        container p2p-primary-paths {
+          description "Set of P2P primary paths container";
+          list p2p-primary-path {
+            key "name";
+            description
+              "List of primary paths for this tunnel.";
+            leaf name {
+              type string;
+              description "TE path name";
+            }
+            uses p2p-path-ero;
+          }
+        }
+        container p2p-secondary-paths {
+          description "Set of P2P secondary paths container";
+          list p2p-secondary-path {
+            key "name";
+            description
+              "List of secondary paths for this tunnel.";
+            leaf name {
+              type string;
+              description "TE path name";
+            }
+            uses p2p-path-ero;
+          }
+        }
+        uses otn-tunnel-endpoint;
+      }
+    }
+    output {
+      leaf return-code {
+        type enumeration {
+          enum success {
+            description "success";
+          }
+          enum aborted {
+            description "";
+          }
+          enum destination-not-found {
+            description "";
+          }
+          enum invalid-argument {
+            description "";
+          }
+          enum no-memory {
+            description "";
+          }
+          enum no-path-found{
+            description "";
+          }
+          enum other-error {
+            description "";
+          }
+          enum some-path-not-found{
+            description "";
+          }
+          enum source-not-found {
+            description "";
+          }
+          enum topology-error {
+            description "";
+          }
+        }
+        description
+          "Return code.";
+      }
+      list result {
+        key "id";
+        description
+          "A list of results for all requests.";
+
+        leaf id {
+          type uint8;
+          description
+            "Request ID.";
+        }
+        container p2p-primary-paths {
+          description "Set of P2P primary paths container";
+          list p2p-primary-path {
+            key "name";
+            description
+              "List of resultant primary paths for this tunnel.";
+            leaf name {
+              type string;
+              description "TE path name";
+            }
+            uses p2p-path-ero;
+          }
+        }
+        container p2p-secondary-paths {
+          description "Set of P2P secondary paths container";
+          list p2p-secondary-path {
+            key "name";
+            description
+              "List of resultant secondary paths for this tunnel.";
+            leaf name {
+              type string;
+              description "TE path name";
+            }
+            uses p2p-path-ero;
+          }
+        }
+      }
+    }
+   }
+}
diff --git a/runtime/src/test/resources/schemaProviderTestYangFiles/yrt-ietf-transport-types@2016-10-25.yang b/runtime/src/test/resources/schemaProviderTestYangFiles/yrt-ietf-transport-types@2016-10-25.yang
new file mode 100644
index 0000000..a3a3bcb
--- /dev/null
+++ b/runtime/src/test/resources/schemaProviderTestYangFiles/yrt-ietf-transport-types@2016-10-25.yang
@@ -0,0 +1,392 @@
+module yrt-ietf-transport-types {
+     namespace "urn:ietf:params:xml:ns:yang:yrt-ietf-transport-types";
+     prefix "tran-types";
+
+     organization
+         "IETF CCAMP Working Group";
+     contact
+         "WG Web: <http://tools.ietf.org/wg/ccamp/>
+         WG List: <mailto:ccamp@ietf.org>
+
+         Editor: Anurag Sharma
+                 <mailto:AnSharma@infinera.com>
+
+         Editor: Rajan Rao
+                 <mailto:rrao@infinera.com>
+
+         Editor: Xian Zhang
+                 <mailto:zhang.xian@huawei.com>";
+
+     description
+         "This module defines transport types.";
+
+     revision "2016-10-25" {
+         description
+             "Revision 0.2";
+         reference "TBD";
+     }
+
+     identity tributary-slot-granularity {
+         description
+                 "Tributary slot granularity.";
+         reference
+                 "G.709/Y.1331, February 2016: Interfaces for the
+                         Optical Transport Network (OTN)";
+     }
+
+     identity tsg-1.25G {
+         base tributary-slot-granularity;
+         description
+                 "1.25G tributary slot granularity.";
+     }
+
+     identity tsg-2.5G {
+         base tributary-slot-granularity;
+         description
+                 "2.5G tributary slot granularity.";
+     }
+
+     identity tributary-protocol-type {
+         description
+                 "Base identity for protocol framing used by
+                 tributary signals.";
+     }
+
+     identity prot-OTU1 {
+         base tributary-protocol-type;
+         description
+                 "OTU1 protocol (2.66G)";
+     }
+
+     /*
+     identity prot-OTU1e {
+         base tributary-protocol-type;
+         description
+                 "OTU1e type (11.04G)";
+     }
+
+     identity prot-OTU1f {
+         base tributary-protocol-type;
+         description
+                 "OTU1f type (11.27G)";
+     }
+         */
+     identity prot-OTU2 {
+         base tributary-protocol-type;
+         description
+                 "OTU2 type (10.70G)";
+     }
+
+     identity prot-OTU2e {
+         base tributary-protocol-type;
+         description
+                 "OTU2e type (11.09G)";
+     }
+
+     /*
+     identity prot-OTU2f {
+         base tributary-protocol-type;
+         description
+                 "OTU2f type (11.31G)";
+     }
+     */
+
+     identity prot-OTU3 {
+         base tributary-protocol-type;
+         description
+                 "OTU3 type (43.01G)";
+     }
+
+     /*
+     identity prot-OTU3e1 {
+         base tributary-protocol-type;
+         description
+                 "OTU3e1 type (44.57G)";
+     }
+
+     identity prot-OTU3e2 {
+         base tributary-protocol-type;
+         description
+                 "OTU3e2 type (44.58G)";
+     }
+     */
+     identity prot-OTU4 {
+         base tributary-protocol-type;
+         description
+                 "OTU4 type (111.80G)";
+     }
+
+     identity prot-OTUCn {
+         base tributary-protocol-type;
+         description
+                 "OTUCn type (beyond 100G)";
+     }
+
+     identity prot-ODU0 {
+         base tributary-protocol-type;
+         description
+                 "ODU0 protocol (1.24G).";
+     }
+
+     identity prot-ODU1 {
+         base tributary-protocol-type;
+         description
+                 "ODU1 protocol (2.49G).";
+     }
+
+     /*
+     identity prot-ODU1e {
+         base tributary-protocol-type;
+         description
+                 "ODU1e protocol (10.35G).";
+     }
+
+     identity prot-ODU1f {
+         base tributary-protocol-type;
+         description
+                 "ODU1f protocol (10.56G).";
+     }
+     */
+
+     identity prot-ODU2 {
+         base tributary-protocol-type;
+         description
+                 "ODU2 protocol (10.03G).";
+     }
+
+     identity prot-ODU2e {
+         base tributary-protocol-type;
+         description
+                 "ODU2e protocol (10.39G).";
+     }
+
+     /*
+     identity prot-ODU2f {
+         base tributary-protocol-type;
+         description
+                 "ODU2f protocol (10.60G).";
+     }
+     */
+
+     identity prot-ODU3 {
+         base tributary-protocol-type;
+         description
+                 "ODU3 protocol (40.31G).";
+     }
+
+     /*
+     identity prot-ODU3e1 {
+         base tributary-protocol-type;
+         description
+                 "ODU3e1 protocol (41.77G).";
+     }
+
+     identity prot-ODU3e2 {
+         base tributary-protocol-type;
+         description
+                 "ODU3e2 protocol (41.78G).";
+     }
+     */
+
+     identity prot-ODU4 {
+         base tributary-protocol-type;
+         description
+                 "ODU4 protocol (104.79G).";
+     }
+
+     identity prot-ODUFlex-cbr {
+         base tributary-protocol-type;
+         description
+               "ODU Flex CBR protocol for transporting constant bit
+               rate signal.";
+     }
+
+     identity prot-ODUFlex-gfp {
+         base tributary-protocol-type;
+         description
+               "ODU Flex GFP protocol for transporting stream of packets
+               using Generic Framing Procedure.";
+     }
+
+     identity prot-ODUCn {
+         base tributary-protocol-type;
+         description
+                 "ODUCn protocol (beyond 100G).";
+     }
+
+     identity prot-1GbE {
+         base tributary-protocol-type;
+         description
+                 "1G Ethernet protocol";
+     }
+
+     identity prot-10GbE-LAN {
+         base tributary-protocol-type;
+         description
+                 "10G Ethernet LAN protocol";
+     }
+
+     identity prot-40GbE {
+         base tributary-protocol-type;
+         description
+                 "40G Ethernet protocol";
+     }
+
+     identity prot-100GbE {
+         base tributary-protocol-type;
+         description
+                 "100G Ethernet protocol";
+     }
+
+     identity client-signal {
+         description
+               "Base identity from which specific client signals for the
+               tunnel are derived.";
+       }
+
+     identity client-signal-1GbE {
+         base client-signal;
+         description
+                 "Client signal type of 1GbE";
+       }
+
+     identity client-signal-10GbE-LAN {
+         base client-signal;
+         description
+                 "Client signal type of 10GbE LAN";
+       }
+
+     identity client-signal-10GbE-WAN {
+         base client-signal;
+         description
+                 "Client signal type of 10GbE WAN";
+       }
+
+     identity client-signal-40GbE {
+         base client-signal;
+         description
+                 "Client signal type of 40GbE";
+       }
+
+     identity client-signal-100GbE {
+         base client-signal;
+         description
+                 "Client signal type of 100GbE";
+       }
+
+     identity client-signal-OC3_STM1 {
+         base client-signal;
+         description
+                 "Client signal type of OC3 & STM1";
+       }
+
+     identity client-signal-OC12_STM4 {
+         base client-signal;
+         description
+                 "Client signal type of OC12 & STM4";
+       }
+
+     identity client-signal-OC48_STM16 {
+         base client-signal;
+         description
+                 "Client signal type of OC48 & STM16";
+       }
+
+     identity client-signal-OC192_STM64 {
+         base client-signal;
+         description
+                 "Client signal type of OC192 & STM64";
+       }
+
+     identity client-signal-OC768_STM256 {
+         base client-signal;
+         description
+                 "Client signal type of OC768 & STM256";
+       }
+
+     identity client-signal-ODU0 {
+         base client-signal;
+         description
+                 "Client signal type of ODU0 (1.24G)";
+     }
+
+     identity client-signal-ODU1 {
+         base client-signal;
+         description
+                 "ODU1 protocol (2.49G)";
+     }
+
+     identity client-signal-ODU2 {
+         base client-signal;
+         description
+                 "Client signal type of ODU2 (10.03G)";
+     }
+
+     identity client-signal-ODU2e {
+         base client-signal;
+         description
+                 "Client signal type of ODU2e (10.39G)";
+     }
+
+     identity client-signal-ODU3 {
+         base client-signal;
+         description
+                 "Client signal type of ODU3 (40.31G)";
+     }
+
+     /*
+     identity client-signal-ODU3e2 {
+         base client-signal;
+         description
+                 "Client signal type of ODU3e2 (41.78G)";
+     }
+     */
+
+     identity client-signal-ODU4 {
+         base client-signal;
+         description
+                 "Client signal type of ODU4 (104.79G)";
+     }
+
+     identity client-signal-ODUFlex-cbr {
+         base client-signal;
+         description
+                 "Client signal type of ODU Flex CBR";
+     }
+
+     identity client-signal-ODUFlex-gfp {
+         base client-signal;
+         description
+                 "Client signal type of ODU Flex GFP";
+     }
+
+     identity client-signal-ODUCn {
+         base client-signal;
+         description
+                 "Client signal type of ODUCn (beyond 100G).";
+     }
+
+     identity client-signal-FC400 {
+         base client-signal;
+         description
+                 "Client signal type of Fibre Channel FC400.";
+     }
+
+     identity client-signal-FC800 {
+         base client-signal;
+         description
+                 "Client signal type of Fibre Channel FC800.";
+     }
+
+     identity client-signal-FICON-4G {
+         base client-signal;
+         description
+                 "Client signal type of Fibre Connection 4G.";
+     }
+
+     identity client-signal-FICON-8G {
+         base client-signal;
+         description
+                 "Client signal type of Fibre Connection 8G.";
+     }
+ }
\ No newline at end of file
diff --git a/runtime/src/test/resources/schemaProviderTestYangFiles/yrt-ietf-yang-patch.yang b/runtime/src/test/resources/schemaProviderTestYangFiles/yrt-ietf-yang-patch.yang
index 210b95e..25a5a16 100644
--- a/runtime/src/test/resources/schemaProviderTestYangFiles/yrt-ietf-yang-patch.yang
+++ b/runtime/src/test/resources/schemaProviderTestYangFiles/yrt-ietf-yang-patch.yang
@@ -1,121 +1,133 @@
 module yrt-ietf-yang-patch {
-  yang-version 1.1;
-  namespace "urn:ietf:params:xml:ns:yang:yrt-ietf-yang-patch";
-  prefix "ypatch";
 
-  import yrt-ietf-restconf { prefix rc; }
+    yang-version 1.1;
 
-  organization
-    "IETF NETCONF (Network Configuration) Working Group";
+    namespace
+      "urn:ietf:params:xml:ns:yang:yrt-ietf-yang-patch";
 
-  contact
-    "WG Web:   <https://datatracker.ietf.org/wg/netconf/>
+    prefix ypatch;
+
+    import yrt-ietf-restconf {
+      prefix rc;
+    }
+
+    organization
+      "IETF NETCONF (Network Configuration) Working Group";
+
+    contact
+      "WG Web:   <https://datatracker.ietf.org/wg/netconf/>
      WG List:  <mailto:netconf@ietf.org>
+
      Author:   Andy Bierman
                <mailto:andy@yumaworks.com>
+
      Author:   Martin Bjorklund
                <mailto:mbj@tail-f.com>
+
      Author:   Kent Watsen
                <mailto:kwatsen@juniper.net>";
 
-  description
-    "This module contains conceptual YANG specifications
+    description
+      "This module contains conceptual YANG specifications
      for the YANG Patch and YANG Patch Status data structures.
+
      Note that the YANG definitions within this module do not
      represent configuration data of any kind.
      The YANG grouping statements provide a normative syntax
      for XML and JSON message-encoding purposes.
+
      Copyright (c) 2017 IETF Trust and the persons identified as
      authors of the code.  All rights reserved.
+
      Redistribution and use in source and binary forms, with or
      without modification, is permitted pursuant to, and subject
      to the license terms contained in, the Simplified BSD License
      set forth in Section 4.c of the IETF Trust's Legal Provisions
      Relating to IETF Documents
      (http://trustee.ietf.org/license-info).
+
      This version of this YANG module is part of RFC 8072; see
      the RFC itself for full legal notices.";
 
-  revision 2017-02-22 {
-    description
-      "Initial revision.";
-    reference
-      "RFC 8072: YANG Patch Media Type.";
-  }
+    revision "2017-02-22" {
+      description "Initial revision.";
+      reference
+        "RFC 8072: YANG Patch Media Type.";
 
-  typedef target-resource-offset {
-    type string;
-    description
-      "Contains a data resource identifier string representing
+    }
+
+    rc:yang-data "yang-patch";
+    rc:yang-data "yang-patch-status";
+
+    typedef target-resource-offset {
+      type string;
+      description
+        "Contains a data resource identifier string representing
        a sub-resource within the target resource.
        The document root for this expression is the
        target resource that is specified in the
        protocol operation (e.g., the URI for the PATCH request).
+
        This string is encoded according to the same rules as those
        for a data resource identifier in a RESTCONF request URI.";
-    reference
-       "RFC 8040, Section 3.5.3.";
-  }
-/*
-  rc:yang-data "yang-patch" {
+      reference
+        "RFC 8040, Section 3.5.3.";
+
+    }
+
     uses yang-patch;
-  }
 
-  rc:yang-data "yang-patch-status" {
     uses yang-patch-status;
-  }
-*/
-  grouping yang-patch {
 
-    description
-      "A grouping that contains a YANG container representing the
-       syntax and semantics of a YANG Patch edit request message.";
-
-    container yang-patch {
+    grouping yang-patch {
       description
-        "Represents a conceptual sequence of datastore edits,
+        "A grouping that contains a YANG container representing the
+       syntax and semantics of a YANG Patch edit request message.";
+      container yang-patch {
+        description
+          "Represents a conceptual sequence of datastore edits,
          called a patch.  Each patch is given a client-assigned
          patch identifier.  Each edit MUST be applied
          in ascending order, and all edits MUST be applied.
          If any errors occur, then the target datastore MUST NOT
          be changed by the YANG Patch operation.
+
          It is possible for a datastore constraint violation to occur
          due to any node in the datastore, including nodes not
          included in the 'edit' list.  Any validation errors MUST
          be reported in the reply message.";
+        reference
+          "RFC 7950, Section 8.3.";
 
-      reference
-        "RFC 7950, Section 8.3.";
-
-      leaf patch-id {
-        type string;
-        mandatory true;
-        description
-          "An arbitrary string provided by the client to identify
+        leaf patch-id {
+          type string;
+          mandatory true;
+          description
+            "An arbitrary string provided by the client to identify
            the entire patch.  Error messages returned by the server
            that pertain to this patch will be identified by this
            'patch-id' value.  A client SHOULD attempt to generate
            unique 'patch-id' values to distinguish between
            transactions from multiple clients in any audit logs
            maintained by the server.";
-      }
+        }
 
-      leaf comment {
-        type string;
-        description
-          "An arbitrary string provided by the client to describe
+        leaf comment {
+          type string;
+          description
+            "An arbitrary string provided by the client to describe
            the entire patch.  This value SHOULD be present in any
            audit logging records generated by the server for the
            patch.";
-      }
+        }
 
-      list edit {
-        key edit-id;
-        ordered-by user;
-
-        description
-          "Represents one edit within the YANG Patch request message.
+        list edit {
+          key "edit-id";
+          ordered-by user;
+          description
+            "Represents one edit within the YANG Patch request message.
            The 'edit' list is applied in the following manner:
+
              - The first edit is conceptually applied to a copy
                of the existing target datastore, e.g., the
                running configuration datastore.
@@ -125,151 +137,166 @@
                the result is validated according to YANG constraints.
              - If successful, the server will attempt to apply
                the result to the target datastore.";
-
-        leaf edit-id {
-          type string;
-          description
-            "Arbitrary string index for the edit.
+          leaf edit-id {
+            type string;
+            description
+              "Arbitrary string index for the edit.
              Error messages returned by the server that pertain
              to a specific edit will be identified by this value.";
-        }
+          }
 
-        leaf operation {
-          type enumeration {
-            enum create {
-              description
-                "The target data node is created using the supplied
+          leaf operation {
+            type enumeration {
+              enum "create" {
+                value 0;
+                description
+                  "The target data node is created using the supplied
                  value, only if it does not already exist.  The
                  'target' leaf identifies the data node to be
                  created, not the parent data node.";
-            }
-            enum delete {
-              description
-                "Delete the target node, only if the data resource
+              }
+              enum "delete" {
+                value 1;
+                description
+                  "Delete the target node, only if the data resource
                  currently exists; otherwise, return an error.";
-            }
-
-            enum insert {
-              description
-                "Insert the supplied value into a user-ordered
+              }
+              enum "insert" {
+                value 2;
+                description
+                  "Insert the supplied value into a user-ordered
                  list or leaf-list entry.  The target node must
                  represent a new data resource.  If the 'where'
                  parameter is set to 'before' or 'after', then
                  the 'point' parameter identifies the insertion
                  point for the target node.";
-            }
-            enum merge {
-              description
-                "The supplied value is merged with the target data
+              }
+              enum "merge" {
+                value 3;
+                description
+                  "The supplied value is merged with the target data
                  node.";
-            }
-            enum move {
-              description
-                "Move the target node.  Reorder a user-ordered
+              }
+              enum "move" {
+                value 4;
+                description
+                  "Move the target node.  Reorder a user-ordered
                  list or leaf-list.  The target node must represent
                  an existing data resource.  If the 'where' parameter
                  is set to 'before' or 'after', then the 'point'
                  parameter identifies the insertion point to move
                  the target node.";
-            }
-            enum replace {
-              description
-                "The supplied value is used to replace the target
+              }
+              enum "replace" {
+                value 5;
+                description
+                  "The supplied value is used to replace the target
                  data node.";
+              }
+              enum "remove" {
+                value 6;
+                description
+                  "Delete the target node if it currently exists.";
+              }
             }
-            enum remove {
-              description
-                "Delete the target node if it currently exists.";
-            }
-          }
-          mandatory true;
-          description
-            "The datastore operation requested for the associated
+            mandatory true;
+            description
+              "The datastore operation requested for the associated
              'edit' entry.";
-        }
+          }
 
-        leaf target {
-          type target-resource-offset;
-          mandatory true;
-          description
-            "Identifies the target data node for the edit
+          leaf target {
+            type target-resource-offset;
+            mandatory true;
+            description
+              "Identifies the target data node for the edit
              operation.  If the target has the value '/', then
              the target data node is the target resource.
              The target node MUST identify a data resource,
              not the datastore resource.";
-        }
-
-        leaf point {
-          when "(../operation = 'insert' or ../operation = 'move')"
-             + "and (../where = 'before' or ../where = 'after')" {
-            description
-              "This leaf only applies for 'insert' or 'move'
-               operations, before or after an existing entry.";
           }
-          type target-resource-offset;
-          description
-            "The absolute URL path for the data node that is being
+
+          leaf point {
+            when
+              "(../operation = 'insert' or ../operation = 'move')"
+                + "and (../where = 'before' or ../where = 'after')" {
+              description
+                "This leaf only applies for 'insert' or 'move'
+               operations, before or after an existing entry.";
+            }
+            type target-resource-offset;
+            description
+              "The absolute URL path for the data node that is being
              used as the insertion point or move point for the
              target of this 'edit' entry.";
-        }
+          }
 
-        leaf where {
-          when "../operation = 'insert' or ../operation = 'move'" {
-            description
-              "This leaf only applies for 'insert' or 'move'
+          leaf where {
+            when
+              "../operation = 'insert' or ../operation = 'move'" {
+              description
+                "This leaf only applies for 'insert' or 'move'
                operations.";
-          }
-          type enumeration {
-            enum before {
-              description
-                "Insert or move a data node before the data resource
-                 identified by the 'point' parameter.";
             }
-            enum after {
-              description
-                "Insert or move a data node after the data resource
+            type enumeration {
+              enum "before" {
+                value 0;
+                description
+                  "Insert or move a data node before the data resource
                  identified by the 'point' parameter.";
-            }
-
-            enum first {
-              description
-                "Insert or move a data node so it becomes ordered
+              }
+              enum "after" {
+                value 1;
+                description
+                  "Insert or move a data node after the data resource
+                 identified by the 'point' parameter.";
+              }
+              enum "first" {
+                value 2;
+                description
+                  "Insert or move a data node so it becomes ordered
                  as the first entry.";
-            }
-            enum last {
-              description
-                "Insert or move a data node so it becomes ordered
+              }
+              enum "last" {
+                value 3;
+                description
+                  "Insert or move a data node so it becomes ordered
                  as the last entry.";
+              }
             }
-          }
-          default last;
-          description
-            "Identifies where a data resource will be inserted
+            default 'last';
+            description
+              "Identifies where a data resource will be inserted
              or moved.  YANG only allows these operations for
              list and leaf-list data nodes that are
              'ordered-by user'.";
-        }
-
-        anydata value {
-          when "../operation = 'create' "
-             + "or ../operation = 'merge' "
-             + "or ../operation = 'replace' "
-             + "or ../operation = 'insert'" {
-            description
-              "The anydata 'value' is only used for 'create',
-               'merge', 'replace', and 'insert' operations.";
           }
-          description
-            "Value used for this edit operation.  The anydata 'value'
+
+          anydata value {
+            when
+              "../operation = 'create' "
+                + "or ../operation = 'merge' "
+                + "or ../operation = 'replace' "
+                + "or ../operation = 'insert'" {
+              description
+                "The anydata 'value' is only used for 'create',
+               'merge', 'replace', and 'insert' operations.";
+            }
+            description
+              "Value used for this edit operation.  The anydata 'value'
              contains the target resource associated with the
              'target' leaf.
+
              For example, suppose the target node is a YANG container
              named foo:
+
                  container foo {
                    leaf a { type string; }
                    leaf b { type int32; }
                  }
+
              The 'value' node contains one instance of foo:
+
                  <value>
                     <foo xmlns='example-foo-namespace'>
                        <a>some value</a>
@@ -277,100 +304,92 @@
                     </foo>
                  </value>
               ";
-        }
-      }
-    }
+          }
+        }  // list edit
+      }  // container yang-patch
+    }  // grouping yang-patch
 
-  } // grouping yang-patch
-
-  grouping yang-patch-status {
-
-    description
-      "A grouping that contains a YANG container representing the
+    grouping yang-patch-status {
+      description
+        "A grouping that contains a YANG container representing the
        syntax and semantics of a YANG Patch Status response
        message.";
-
-    container yang-patch-status {
-      description
-        "A container representing the response message sent by the
+      container yang-patch-status {
+        description
+          "A container representing the response message sent by the
          server after a YANG Patch edit request message has been
          processed.";
+        leaf patch-id {
+          type string;
+          mandatory true;
+          description
+            "The 'patch-id' value used in the request.";
+        }
 
-      leaf patch-id {
-        type string;
-        mandatory true;
-        description
-          "The 'patch-id' value used in the request.";
-      }
-
-      choice global-status {
-        description
-          "Report global errors or complete success.
+        choice global-status {
+          description
+            "Report global errors or complete success.
            If there is no case selected, then errors
            are reported in the 'edit-status' container.";
-
-        case global-errors {
-          uses rc:errors;
-          description
-            "This container will be present if global errors that
+          case global-errors {
+            description
+              "This container will be present if global errors that
              are unrelated to a specific edit occurred.";
-        }
-        leaf ok {
-          type empty;
-          description
-            "This leaf will be present if the request succeeded
+            uses rc:errors;
+          }  // case global-errors
+          leaf ok {
+            type empty;
+            description
+              "This leaf will be present if the request succeeded
              and there are no errors reported in the 'edit-status'
              container.";
-        }
-      }
+          }
+        }  // choice global-status
 
-      container edit-status {
-        description
-          "This container will be present if there are
+        container edit-status {
+          description
+            "This container will be present if there are
            edit-specific status responses to report.
            If all edits succeeded and the 'global-status'
            returned is 'ok', then a server MAY omit this
            container.";
-
-        list edit {
-          key edit-id;
-
-          description
-            "Represents a list of status responses,
+          list edit {
+            key "edit-id";
+            description
+              "Represents a list of status responses,
              corresponding to edits in the YANG Patch
              request message.  If an 'edit' entry was
              skipped or not reached by the server,
              then this list will not contain a corresponding
              entry for that edit.";
-
-          leaf edit-id {
-            type string;
-             description
-               "Response status is for the 'edit' list entry
-                with this 'edit-id' value.";
-          }
-
-          choice edit-status-choice {
-            description
-              "A choice between different types of status
-               responses for each 'edit' entry.";
-            leaf ok {
-              type empty;
+            leaf edit-id {
+              type string;
               description
-                "This 'edit' entry was invoked without any
+                "Response status is for the 'edit' list entry
+                with this 'edit-id' value.";
+            }
+
+            choice edit-status-choice {
+              description
+                "A choice between different types of status
+               responses for each 'edit' entry.";
+              leaf ok {
+                type empty;
+                description
+                  "This 'edit' entry was invoked without any
                  errors detected by the server associated
                  with this edit.";
-            }
-            case errors {
-              uses rc:errors;
-              description
-                "The server detected errors associated with the
-                 edit identified by the same 'edit-id' value.";
-            }
-          }
-        }
-      }
-    }
-  }  // grouping yang-patch-status
+              }
 
-}
\ No newline at end of file
+              case errors {
+                description
+                  "The server detected errors associated with the
+                 edit identified by the same 'edit-id' value.";
+                uses rc:errors;
+              }  // case errors
+            }  // choice edit-status-choice
+          }  // list edit
+        }  // container edit-status
+      }  // container yang-patch-status
+    }  // grouping yang-patch-status
+  }  // module ietf-yang-patch
\ No newline at end of file
diff --git a/runtime/src/test/resources/schemaProviderTestYangFiles/yrt-ietf-yang-push.yang b/runtime/src/test/resources/schemaProviderTestYangFiles/yrt-ietf-yang-push.yang
index 9df4bde..792e7eb 100644
--- a/runtime/src/test/resources/schemaProviderTestYangFiles/yrt-ietf-yang-push.yang
+++ b/runtime/src/test/resources/schemaProviderTestYangFiles/yrt-ietf-yang-push.yang
@@ -1,10 +1,6 @@
  module yrt-ietf-yang-push {
-    /*
-     * ---------------------------------------------------
-     * Not Supported
+
     yang-version 1.1;
-     * ---------------------------------------------------
-     */
     namespace "urn:ietf:params:xml:ns:yang:yrt-ietf-yang-push";
     prefix yp;
 
@@ -435,10 +431,7 @@
            data. Such a push-update might also be triggered by a
            subscriber requesting an on-demand synchronization.";
       }
-      /*
-       * --------------------------------------------------------------------
-       * datastore-changes not currently supported.
-       * Will replace datastore-change-string in a future release.
+
       anydata datastore-changes {
         description
           "This contains datastore contents that has changed
@@ -450,9 +443,7 @@
            state (and assuming yang-patch could also be applied to
            operational data).";
       }
-       *
-       * --------------------------------------------------------------------
-       */
+
       leaf datastore-changes-string {
         type string;
         description
diff --git a/runtime/src/test/resources/ytbTestYangFiles/identity-test.yang b/runtime/src/test/resources/ytbTestYangFiles/identity-test.yang
index 960e1ef..20d4241 100644
--- a/runtime/src/test/resources/ytbTestYangFiles/identity-test.yang
+++ b/runtime/src/test/resources/ytbTestYangFiles/identity-test.yang
@@ -37,7 +37,7 @@
         leaf l {
             type string;
         }
-        container con {
+        container con1 {
             leaf interface {
                 type identityref {
                     base "type:int-type";
