[ONOS-4711] Removed cyclic dependencies

Change-Id: I9ffea9a1a1b72f6ed3a23c0edb04cfc37bd8e48e
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/ietfyang/IetfYangFileTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/ietfyang/IetfYangFileTest.java
index 0f0a514..49c5d60 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/ietfyang/IetfYangFileTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/ietfyang/IetfYangFileTest.java
@@ -22,7 +22,7 @@
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
 import org.onosproject.yangutils.plugin.manager.YangUtilManager;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
 
 import java.io.IOException;
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/linker/InterFileLinkingTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/linker/InterFileLinkingTest.java
index fd7b8ad..eda4873 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/linker/InterFileLinkingTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/linker/InterFileLinkingTest.java
@@ -34,10 +34,9 @@
 import org.onosproject.yangutils.linker.impl.YangLinkerManager;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
-import org.onosproject.yangutils.plugin.manager.YangFileInfo;
 import org.onosproject.yangutils.plugin.manager.YangUtilManager;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
 import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -67,29 +66,30 @@
         String searchDir = "src/test/resources/interfiletype";
         utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
         utilManager.parseYangFileInfoSet();
+        utilManager.createYangNodeSet();
 
         YangNode refNode = null;
         YangNode selfNode = null;
 
         // Create YANG node set
-        yangLinkerManager.createYangNodeSet(utilManager.getYangFileInfoSet());
+        yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
 
         // Add references to import list.
-        yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangFileInfoSet());
+        yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
 
         // Carry out inter-file linking.
-        yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
+        yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
 
-        Iterator<YangFileInfo> yangFileInfoIterator = utilManager.getYangFileInfoSet().iterator();
+        Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
 
-        YangFileInfo yangFileInfo = yangFileInfoIterator.next();
+        YangNode rootNode = yangNodeIterator.next();
 
-        if (yangFileInfo.getRootNode().getName().equals("module1")) {
-            selfNode = yangFileInfo.getRootNode();
-            refNode = yangFileInfoIterator.next().getRootNode();
+        if (rootNode.getName().equals("module1")) {
+            selfNode = rootNode;
+            refNode = yangNodeIterator.next();
         } else {
-            refNode = yangFileInfo.getRootNode();
-            selfNode = yangFileInfoIterator.next().getRootNode();
+            refNode = rootNode;
+            selfNode = yangNodeIterator.next();
         }
 
         // Check whether the data model tree returned is of type module.
@@ -136,29 +136,30 @@
         String searchDir = "src/test/resources/interfileuses";
         utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
         utilManager.parseYangFileInfoSet();
+        utilManager.createYangNodeSet();
 
         YangNode refNode = null;
         YangNode selfNode = null;
 
         // Create YANG node set
-        yangLinkerManager.createYangNodeSet(utilManager.getYangFileInfoSet());
+        yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
 
         // Add references to import list.
-        yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangFileInfoSet());
+        yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
 
         // Carry out inter-file linking.
-        yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
+        yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
 
-        Iterator<YangFileInfo> yangFileInfoIterator = utilManager.getYangFileInfoSet().iterator();
+        Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
 
-        YangFileInfo yangFileInfo = yangFileInfoIterator.next();
+        YangNode rootNode = yangNodeIterator.next();
 
-        if (yangFileInfo.getRootNode().getName().equals("module1")) {
-            selfNode = yangFileInfo.getRootNode();
-            refNode = yangFileInfoIterator.next().getRootNode();
+        if (rootNode.getName().equals("module1")) {
+            selfNode = rootNode;
+            refNode = yangNodeIterator.next();
         } else {
-            refNode = yangFileInfo.getRootNode();
-            selfNode = yangFileInfoIterator.next().getRootNode();
+            refNode = rootNode;
+            selfNode = yangNodeIterator.next();
         }
 
         // Check whether the data model tree returned is of type module.
@@ -193,14 +194,6 @@
         // Check whether uses get resolved.
         assertThat(uses.getResolvableStatus(),
                 is(ResolvableStatus.RESOLVED));
-
-//        leafIterator = yangNode.getListOfLeaf().listIterator();
-//        leafInfo = leafIterator.next();
-//
-//        // Check whether the information in the leaf is correct under module.
-//        assertThat(leafInfo.getName(), is("hello"));
-//        assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
-//        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
     }
 
     /**
@@ -213,32 +206,33 @@
         String searchDir = "src/test/resources/interfiletypewithinclude";
         utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
         utilManager.parseYangFileInfoSet();
+        utilManager.createYangNodeSet();
 
         YangNode refNode = null;
         YangNode selfNode = null;
 
         // Create YANG node set
-        yangLinkerManager.createYangNodeSet(utilManager.getYangFileInfoSet());
+        yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
 
         // Carry out linking of sub module with module.
-        yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangFileInfoSet());
+        yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangNodeSet());
 
         // Add reference to include list.
-        yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangFileInfoSet());
+        yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
 
         // Carry out inter-file linking.
-        yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
+        yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
 
-        Iterator<YangFileInfo> yangFileInfoIterator = utilManager.getYangFileInfoSet().iterator();
+        Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
 
-        YangFileInfo yangFileInfo = yangFileInfoIterator.next();
+        YangNode rootNode = yangNodeIterator.next();
 
-        if (yangFileInfo.getRootNode().getName().equals("module1")) {
-            selfNode = yangFileInfo.getRootNode();
-            refNode = yangFileInfoIterator.next().getRootNode();
+        if (rootNode.getName().equals("module1")) {
+            selfNode = rootNode;
+            refNode = yangNodeIterator.next();
         } else {
-            refNode = yangFileInfo.getRootNode();
-            selfNode = yangFileInfoIterator.next().getRootNode();
+            refNode = rootNode;
+            selfNode = yangNodeIterator.next();
         }
 
         // Check whether the data model tree returned is of type module.
@@ -285,32 +279,33 @@
         String searchDir = "src/test/resources/interfileuseswithinclude";
         utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
         utilManager.parseYangFileInfoSet();
+        utilManager.createYangNodeSet();
 
         YangNode refNode = null;
         YangNode selfNode = null;
 
         // Create YANG node set
-        yangLinkerManager.createYangNodeSet(utilManager.getYangFileInfoSet());
+        yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
 
         // Carry out linking of sub module with module.
-        yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangFileInfoSet());
+        yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangNodeSet());
 
         // Add reference to include list.
-        yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangFileInfoSet());
+        yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
 
         // Carry out inter-file linking.
-        yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
+        yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
 
-        Iterator<YangFileInfo> yangFileInfoIterator = utilManager.getYangFileInfoSet().iterator();
+        Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
 
-        YangFileInfo yangFileInfo = yangFileInfoIterator.next();
+        YangNode rootNode = yangNodeIterator.next();
 
-        if (yangFileInfo.getRootNode().getName().equals("module1")) {
-            selfNode = yangFileInfo.getRootNode();
-            refNode = yangFileInfoIterator.next().getRootNode();
+        if (rootNode.getName().equals("module1")) {
+            selfNode = rootNode;
+            refNode = yangNodeIterator.next();
         } else {
-            refNode = yangFileInfo.getRootNode();
-            selfNode = yangFileInfoIterator.next().getRootNode();
+            refNode = rootNode;
+            selfNode = yangNodeIterator.next();
         }
 
         // Check whether the data model tree returned is of type module.
@@ -345,14 +340,6 @@
         // Check whether uses get resolved.
         assertThat(uses.getResolvableStatus(),
                 is(ResolvableStatus.RESOLVED));
-
-//        leafIterator = yangNode.getListOfLeaf().listIterator();
-//        leafInfo = leafIterator.next();
-//
-//        // Check whether the information in the leaf is correct under module.
-//        assertThat(leafInfo.getName(), is("hello"));
-//        assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
-//        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
     }
 
     /**
@@ -365,29 +352,30 @@
         String searchDir = "src/test/resources/interfiletypewithrevision";
         utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
         utilManager.parseYangFileInfoSet();
+        utilManager.createYangNodeSet();
 
         YangNode refNode = null;
         YangNode selfNode = null;
 
         // Create YANG node set
-        yangLinkerManager.createYangNodeSet(utilManager.getYangFileInfoSet());
+        yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
 
         // Add references to import list.
-        yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangFileInfoSet());
+        yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
 
         // Carry out inter-file linking.
-        yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
+        yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
 
-        Iterator<YangFileInfo> yangFileInfoIterator = utilManager.getYangFileInfoSet().iterator();
+        Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
 
-        YangFileInfo yangFileInfo = yangFileInfoIterator.next();
+        YangNode rootNode = yangNodeIterator.next();
 
-        if (yangFileInfo.getRootNode().getName().equals("module1")) {
-            selfNode = yangFileInfo.getRootNode();
-            refNode = yangFileInfoIterator.next().getRootNode();
+        if (rootNode.getName().equals("module1")) {
+            selfNode = rootNode;
+            refNode = yangNodeIterator.next();
         } else {
-            refNode = yangFileInfo.getRootNode();
-            selfNode = yangFileInfoIterator.next().getRootNode();
+            refNode = rootNode;
+            selfNode = yangNodeIterator.next();
         }
 
         // Check whether the data model tree returned is of type module.
@@ -434,29 +422,30 @@
         String searchDir = "src/test/resources/interfiletypewithrevisioninname";
         utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
         utilManager.parseYangFileInfoSet();
+        utilManager.createYangNodeSet();
 
         YangNode refNode = null;
         YangNode selfNode = null;
 
         // Create YANG node set
-        yangLinkerManager.createYangNodeSet(utilManager.getYangFileInfoSet());
+        yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
 
         // Add references to import list.
-        yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangFileInfoSet());
+        yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
 
         // Carry out inter-file linking.
-        yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
+        yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
 
-        Iterator<YangFileInfo> yangFileInfoIterator = utilManager.getYangFileInfoSet().iterator();
+        Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
 
-        YangFileInfo yangFileInfo = yangFileInfoIterator.next();
+        YangNode rootNode = yangNodeIterator.next();
 
-        if (yangFileInfo.getRootNode().getName().equals("module1")) {
-            selfNode = yangFileInfo.getRootNode();
-            refNode = yangFileInfoIterator.next().getRootNode();
+        if (rootNode.getName().equals("module1")) {
+            selfNode = rootNode;
+            refNode = yangNodeIterator.next();
         } else {
-            refNode = yangFileInfo.getRootNode();
-            selfNode = yangFileInfoIterator.next().getRootNode();
+            refNode = rootNode;
+            selfNode = yangNodeIterator.next();
         }
 
         // Check whether the data model tree returned is of type module.
@@ -503,27 +492,28 @@
         String searchDir = "src/test/resources/hierarchicalinterfiletype";
         utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
         utilManager.parseYangFileInfoSet();
+        utilManager.createYangNodeSet();
 
         YangNode refNode1 = null;
         YangNode refNode2 = null;
         YangNode selfNode = null;
 
         // Create YANG node set
-        yangLinkerManager.createYangNodeSet(utilManager.getYangFileInfoSet());
+        yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
 
         // Add references to import list.
-        yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangFileInfoSet());
+        yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
 
         // Carry out inter-file linking.
-        yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
+        yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
 
-        for (YangFileInfo yangFile : utilManager.getYangFileInfoSet()) {
-            if (yangFile.getRootNode().getName().equals("ietf-network-topology")) {
-                selfNode = yangFile.getRootNode();
-            } else if (yangFile.getRootNode().getName().equals("ietf-network")) {
-                refNode1 = yangFile.getRootNode();
+        for (YangNode rootNode : utilManager.getYangNodeSet()) {
+            if (rootNode.getName().equals("ietf-network-topology")) {
+                selfNode = rootNode;
+            } else if (rootNode.getName().equals("ietf-network")) {
+                refNode1 = rootNode;
             } else {
-                refNode2 = yangFile.getRootNode();
+                refNode2 = rootNode;
             }
         }
 
@@ -571,24 +561,25 @@
         String searchDir = "src/test/resources/hierarchicalintrawithinterfiletype";
         utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
         utilManager.parseYangFileInfoSet();
+        utilManager.createYangNodeSet();
 
         YangNode refNode1 = null;
         YangNode selfNode = null;
 
         // Create YANG node set
-        yangLinkerManager.createYangNodeSet(utilManager.getYangFileInfoSet());
+        yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
 
         // Add references to import list.
-        yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangFileInfoSet());
+        yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
 
         // Carry out inter-file linking.
-        yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
+        yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
 
-        for (YangFileInfo yangFile : utilManager.getYangFileInfoSet()) {
-            if (yangFile.getRootNode().getName().equals("ietf-network")) {
-                selfNode = yangFile.getRootNode();
-            } else if (yangFile.getRootNode().getName().equals("ietf-inet-types")) {
-                refNode1 = yangFile.getRootNode();
+        for (YangNode rootNode : utilManager.getYangNodeSet()) {
+            if (rootNode.getName().equals("ietf-network")) {
+                selfNode = rootNode;
+            } else if (rootNode.getName().equals("ietf-inet-types")) {
+                refNode1 = rootNode;
             }
         }
 
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/linker/InterJarLinkingTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/linker/InterJarLinkingTest.java
deleted file mode 100644
index 39b03fe..0000000
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/linker/InterJarLinkingTest.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.yangutils.linker;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.apache.maven.plugin.MojoExecutionException;
-import org.junit.Test;
-import org.onosproject.yangutils.datamodel.YangContainer;
-import org.onosproject.yangutils.datamodel.YangDerivedInfo;
-import org.onosproject.yangutils.datamodel.YangGrouping;
-import org.onosproject.yangutils.datamodel.YangLeaf;
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.plugin.manager.YangFileInfo;
-import org.onosproject.yangutils.plugin.manager.YangUtilManager;
-import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-import static org.onosproject.yangutils.datamodel.YangDataTypes.DERIVED;
-import static org.onosproject.yangutils.datamodel.YangDataTypes.STRING;
-import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.RESOLVED;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deSerializeDataModel;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.parseJarFile;
-
-/**
- * Unit test case for inter-jar linker.
- */
-public class InterJarLinkingTest {
-
-    private final YangUtilManager utilManager = new YangUtilManager();
-
-    private static final String TARGET = "target/interJarFileLinking";
-    private static final String SEARCH_DIR_FOR_YANG_FILES = "src/test/resources/interJarFileLinking/yangFiles";
-    private static final String SEARCH_DIR_FOR_SINGLE_JAR_FILES = "src/test/resources/interJarFileLinking/"
-            + "jarFiles/single";
-    private static final String SEARCH_DIR_FOR_MULTI_JAR_FILES = "src/test/resources/interJarFileLinking/"
-            + "jarFiles/multi";
-
-    /**
-     * Unit test case for a single jar dependency.
-     *
-     * @throws IOException when fails to do IO operations
-     * @throws MojoExecutionException when fails to do mojo operations
-     */
-    @Test
-    public void processSingleJarLinking()
-            throws IOException, MojoExecutionException {
-        utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(SEARCH_DIR_FOR_YANG_FILES));
-
-        int size1 = utilManager.getYangFileInfoSet().size();
-
-        for (String file : getListOfTestJar(SEARCH_DIR_FOR_SINGLE_JAR_FILES)) {
-            addInterJarRootNodes(file);
-        }
-
-        utilManager.parseYangFileInfoSet();
-
-        utilManager.resolveDependenciesUsingLinker();
-
-        Iterator<YangFileInfo> yangFileInfoIterator = utilManager.getYangFileInfoSet().iterator();
-
-        YangFileInfo yangFileInfo = yangFileInfoIterator.next();
-
-        int size2 = utilManager.getYangFileInfoSet().size();
-        assertThat(true, is(size1 != size2));
-        assertThat(true, is(yangFileInfo.getRootNode().getName().equals("port-pair")));
-
-        deleteDirectory(TARGET);
-
-    }
-
-    /**
-     * Unit test case for a multiple jar dependency.
-     *
-     * @throws IOException when fails to do IO operations
-     * @throws MojoExecutionException when fails to do mojo operations
-     */
-    @Test
-    public void processMultipleJarLinking()
-            throws IOException, MojoExecutionException {
-        utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(SEARCH_DIR_FOR_YANG_FILES));
-
-        int size1 = utilManager.getYangFileInfoSet().size();
-
-        for (String file : getListOfTestJar(SEARCH_DIR_FOR_MULTI_JAR_FILES)) {
-            addInterJarRootNodes(file);
-        }
-
-        utilManager.parseYangFileInfoSet();
-
-        utilManager.resolveDependenciesUsingLinker();
-
-        Iterator<YangFileInfo> yangFileInfoIterator = utilManager.getYangFileInfoSet().iterator();
-
-        YangFileInfo yangFileInfo = yangFileInfoIterator.next();
-
-        int size2 = utilManager.getYangFileInfoSet().size();
-        assertThat(true, is(size1 != size2));
-        assertThat(true, is(yangFileInfo.getRootNode().getName().equals("port-pair")));
-
-        yangFileInfo = yangFileInfoIterator.next();
-        assertThat(true, is(yangFileInfo.getRootNode().getName().equals("flow-classifier")));
-
-        /*
-         * grouping flow-classifier {
-         *      container flow-classifier {
-         *           leaf id {
-         *                type flow-classifier-id;
-         *           }
-         *
-         *           leaf tenant-id {
-         *                type port-pair:tenant-id;
-         *           }
-         *           .
-         *           .
-         *           .
-         *
-         */
-
-        YangNode node = yangFileInfo.getRootNode();
-        node = node.getChild();
-        while (node != null) {
-            if (node instanceof YangGrouping) {
-                break;
-            }
-            node = node.getNextSibling();
-        }
-
-        node = node.getChild();
-        ListIterator<YangLeaf> leafIterator = ((YangContainer) node).getListOfLeaf().listIterator();
-        YangLeaf leafInfo = leafIterator.next();
-
-        assertThat(leafInfo.getName(), is("id"));
-        assertThat(leafInfo.getDataType().getDataTypeName(), is("flow-classifier-id"));
-        assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
-
-        leafInfo = leafIterator.next();
-
-        assertThat(leafInfo.getName(), is("tenant-id"));
-        assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
-
-        assertThat(true, is(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef()
-                .getName().equals("tenant-id")));
-
-        assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
-
-        YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
-
-        // Check for the effective built-in type.
-        assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
-
-        deleteDirectory(TARGET);
-    }
-
-    /**
-     * Returns list of test jar files.
-     *
-     * @param searchdir search directory
-     * @return list of test jar files
-     */
-    private List<String> getListOfTestJar(String searchdir) {
-        List<String> jarFiles = new ArrayList<>();
-
-        File directory = new File(searchdir + "/");
-        File[] files = directory.listFiles();
-
-        for (File file : files) {
-            jarFiles.add(file.toString());
-        }
-
-        return jarFiles;
-    }
-
-    /**
-     * Adds data model nodes of jar to file info set.
-     *
-     * @param jarFile jar file name
-     * @throws IOException when fails to do IO operations
-     */
-    private void addInterJarRootNodes(String jarFile) throws IOException {
-        try {
-            List<YangNode> interJarResolvedNodes = deSerializeDataModel(parseJarFile(jarFile, TARGET));
-
-            for (YangNode node : interJarResolvedNodes) {
-                YangFileInfo dependentFileInfo = new YangFileInfo();
-                dependentFileInfo.setRootNode(node);
-                dependentFileInfo.setForTranslator(false);
-                dependentFileInfo.setYangFileName(node.getName());
-                utilManager.getYangFileInfoSet().add(dependentFileInfo);
-            }
-        } catch (IOException e) {
-            throw new IOException("failed to resolve in interjar scenario.");
-        }
-    }
-
-}
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/linker/IntraFileUsesLinkingTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/linker/IntraFileUsesLinkingTest.java
index e960d62..c74da32 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/linker/IntraFileUsesLinkingTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/linker/IntraFileUsesLinkingTest.java
@@ -17,6 +17,7 @@
 package org.onosproject.yangutils.linker;
 
 import java.io.IOException;
+import java.util.List;
 import java.util.ListIterator;
 import org.junit.Rule;
 import org.junit.Test;
@@ -92,13 +93,15 @@
         assertThat(uses.getResolvableStatus(),
                 is(ResolvableStatus.RESOLVED));
 
-//        leafIterator = yangNode.getListOfLeaf().listIterator();
-//        leafInfo = leafIterator.next();
-//
-//        // Check whether the information in the leaf is correct under module.
-//        assertThat(leafInfo.getName(), is("hello"));
-//        assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
-//        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
+        ListIterator<List<YangLeaf>> leafIterator1 = uses.getUsesResolvedLeavesList().listIterator();
+        List<YangLeaf> leafInfo1 = leafIterator1.next();
+        ListIterator<YangLeaf> leafIterator2 = leafInfo1.listIterator();
+        YangLeaf leafInfo2 = leafIterator2.next();
+
+        // Check whether the information in the leaf is correct under module.
+        assertThat(leafInfo2.getName(), is("hello"));
+        assertThat(leafInfo2.getDataType().getDataTypeName(), is("string"));
+        assertThat(leafInfo2.getDataType().getDataType(), is(YangDataTypes.STRING));
 
     }
 
@@ -161,28 +164,32 @@
         assertThat(uses.getResolvableStatus(),
                 is(ResolvableStatus.RESOLVED));
 
-//        leafIterator = yangNode.getListOfLeaf().listIterator();
-//        leafInfo = leafIterator.next();
-//
-//        // Check whether the information in the leaf is correct under module.
-//        assertThat(leafInfo.getName(), is("treat"));
-//        assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
-//        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
+        ListIterator<List<YangLeaf>> leafIterator1 = uses.getUsesResolvedLeavesList().listIterator();
+        List<YangLeaf> leafInfo1 = leafIterator1.next();
+        ListIterator<YangLeaf> leafIterator2 = leafInfo1.listIterator();
+        YangLeaf leafInfo2 = leafIterator2.next();
 
-//        // Check whether container is the child of module.
-//        assertThat((grouping.getNextSibling() instanceof YangContainer), is(true));
-//        container = (YangContainer) grouping.getNextSibling();
-//
-//        // Check whether the container name is set correctly which is under module.
-//        assertThat(container.getName(), is("test"));
-//
-//        leafIterator = container.getListOfLeaf().listIterator();
-//        leafInfo = leafIterator.next();
-//
-//        // Check whether the information in the leaf is correct under container which is under module.
-//        assertThat(leafInfo.getName(), is("leaf2"));
-//        assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
-//        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
+        // Check whether the information in the leaf is correct under module.
+        assertThat(leafInfo2.getName(), is("treat"));
+        assertThat(leafInfo2.getDataType().getDataTypeName(), is("string"));
+        assertThat(leafInfo2.getDataType().getDataType(), is(YangDataTypes.STRING));
+
+        ListIterator<YangNode> usesChildren = uses.getUsesResolvedNodeList().listIterator();
+        YangNode usesChild = usesChildren.next();
+        // Check whether container is the child of module.
+        assertThat((usesChild instanceof YangContainer), is(true));
+        container = (YangContainer) usesChild;
+
+        // Check whether the container name is set correctly which is under module.
+        assertThat(container.getName(), is("test"));
+
+        leafIterator = container.getListOfLeaf().listIterator();
+        leafInfo = leafIterator.next();
+
+        // Check whether the information in the leaf is correct under container which is under module.
+        assertThat(leafInfo.getName(), is("leaf2"));
+        assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
+        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
     }
 
     /**
@@ -241,52 +248,56 @@
         assertThat(uses.getResolvableStatus(),
                 is(ResolvableStatus.RESOLVED));
 
-//        // Check whether list is the sibling of uses which has been deep copied from grouping.
-//        assertThat((yangNode.getChild().getChild().getNextSibling().getChild().getNextSibling() instanceof YangList),
-//                is(true));
-//        YangList yangList = (YangList) yangNode.getChild().getChild().getNextSibling().getChild().getNextSibling();
-//
-//        // Check whether the list name is set correctly.
-//        assertThat(yangList.getName(), is("valid"));
-//
-//        leafIterator = yangList.getListOfLeaf().listIterator();
-//        leafInfo = leafIterator.next();
-//
-//        // Check whether the information in the leaf is correct under list which is deep copied.
-//        assertThat(leafInfo.getName(), is("invalid-interval"));
-//        assertThat(leafInfo.getDataType().getDataTypeName(), is("uint16"));
-//        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16));
-//        assertThat(leafInfo.getUnits(), is("\"seconds\""));
-//        assertThat(leafInfo.getReference(), is("\"RFC 6020\""));
-//
-//        // Check whether uses is output's child.
-//        assertThat((yangNode.getChild().getChild().getNextSibling().getNextSibling().getChild() instanceof YangUses),
-//                is(true));
-//        YangUses usesInOuput = (YangUses) yangNode.getChild().getChild().getNextSibling().getNextSibling().getChild();
-//
-//        // Check whether uses get resolved.
-//        assertThat(usesInOuput.getResolvableStatus(),
-//                is(ResolvableStatus.RESOLVED));
-//
-//        // Check whether list is the sibling of uses which has been deep copied from grouping.
-//        assertThat((yangNode.getChild().getChild().getNextSibling().getChild().getNextSibling() instanceof YangList),
-//                is(true));
-//
-//        YangList yangListInOutput = (YangList) yangNode.getChild().getChild().getNextSibling().getNextSibling()
-//                .getChild().getNextSibling();
-//
-//        // Check whether the list name is set correctly.
-//        assertThat(yangListInOutput.getName(), is("valid"));
-//
-//        leafIterator = yangListInOutput.getListOfLeaf().listIterator();
-//        leafInfo = leafIterator.next();
-//
-//        // Check whether the information in the leaf is correct under list which is deep copied.
-//        assertThat(leafInfo.getName(), is("invalid-interval"));
-//        assertThat(leafInfo.getDataType().getDataTypeName(), is("uint16"));
-//        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16));
-//        assertThat(leafInfo.getUnits(), is("\"seconds\""));
-//        assertThat(leafInfo.getReference(), is("\"RFC 6020\""));
+        ListIterator<YangNode> usesChildren = uses.getUsesResolvedNodeList().listIterator();
+        YangNode usesChild = usesChildren.next();
+
+        // Check whether list is the sibling of uses which has been deep copied from grouping.
+        assertThat((usesChild instanceof YangList), is(true));
+
+        YangList yangList = (YangList) usesChild;
+
+        // Check whether the list name is set correctly.
+        assertThat(yangList.getName(), is("valid"));
+
+        leafIterator = yangList.getListOfLeaf().listIterator();
+        leafInfo = leafIterator.next();
+
+        // Check whether the information in the leaf is correct under list which is deep copied.
+        assertThat(leafInfo.getName(), is("invalid-interval"));
+        assertThat(leafInfo.getDataType().getDataTypeName(), is("uint16"));
+        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16));
+        assertThat(leafInfo.getUnits(), is("\"seconds\""));
+        assertThat(leafInfo.getReference(), is("\"RFC 6020\""));
+
+        // Check whether uses is output's child.
+        assertThat((yangNode.getChild().getChild().getNextSibling().getNextSibling().getChild() instanceof YangUses),
+                is(true));
+        YangUses usesInOuput = (YangUses) yangNode.getChild().getChild().getNextSibling().getNextSibling().getChild();
+
+        // Check whether uses get resolved.
+        assertThat(usesInOuput.getResolvableStatus(),
+                is(ResolvableStatus.RESOLVED));
+
+        ListIterator<YangNode> usesInOuputChildren = usesInOuput.getUsesResolvedNodeList().listIterator();
+        YangNode usesInOuputChild = usesInOuputChildren.next();
+
+        // Check whether list is the sibling of uses which has been deep copied from grouping.
+        assertThat((usesInOuputChild instanceof YangList), is(true));
+
+        YangList yangListInOutput = (YangList) usesInOuputChild;
+
+        // Check whether the list name is set correctly.
+        assertThat(yangListInOutput.getName(), is("valid"));
+
+        leafIterator = yangListInOutput.getListOfLeaf().listIterator();
+        leafInfo = leafIterator.next();
+
+        // Check whether the information in the leaf is correct under list which is deep copied.
+        assertThat(leafInfo.getName(), is("invalid-interval"));
+        assertThat(leafInfo.getDataType().getDataTypeName(), is("uint16"));
+        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16));
+        assertThat(leafInfo.getUnits(), is("\"seconds\""));
+        assertThat(leafInfo.getReference(), is("\"RFC 6020\""));
     }
 
     /**
@@ -342,6 +353,24 @@
         assertThat(firstUses.getResolvableStatus(),
                 is(ResolvableStatus.RESOLVED));
 
+        ListIterator<YangNode> firstUsesChildren = firstUses.getUsesResolvedNodeList().listIterator();
+        YangNode firstUsesChild = firstUsesChildren.next();
+
+        // Check whether list is the sibling of uses.
+        assertThat((firstUsesChild instanceof YangList), is(true));
+        YangList yangList = (YangList) firstUsesChild;
+        assertThat(yangList.getName(), is("valid"));
+
+        leafIterator = yangList.getListOfLeaf().listIterator();
+        leafInfo = leafIterator.next();
+
+        // Check whether the information in the leaf is correct under list which has been deep copied from grouping.
+        assertThat(leafInfo.getName(), is("invalid-interval"));
+        assertThat(leafInfo.getDataType().getDataTypeName(), is("uint16"));
+        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16));
+        assertThat(leafInfo.getUnits(), is("\"seconds\""));
+        assertThat(leafInfo.getReference(), is("\"RFC 6020\""));
+
         // Check whether container is the sibling of uses.
         assertThat((firstUses.getNextSibling() instanceof YangContainer), is(true));
         YangContainer yangContainer = (YangContainer) firstUses.getNextSibling();
@@ -349,14 +378,6 @@
         // Check whether the container name is set correctly.
         assertThat(yangContainer.getName(), is("design"));
 
-//        leafIterator = yangContainer.getListOfLeaf().listIterator();
-//        leafInfo = leafIterator.next();
-//
-//        // Check whether the information in the leaf is correct under design-container.
-//        assertThat(leafInfo.getName(), is("ink"));
-//        assertThat(leafInfo.getDataType().getDataTypeName(), is("int32"));
-//        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.INT32));
-
         // Check whether uses is design-container's child.
         assertThat((yangContainer.getChild() instanceof YangUses), is(true));
         YangUses secondUses = (YangUses) yangContainer.getChild();
@@ -365,6 +386,16 @@
         assertThat(secondUses.getResolvableStatus(),
                 is(ResolvableStatus.RESOLVED));
 
+        ListIterator<List<YangLeaf>> leafIterator1 = secondUses.getUsesResolvedLeavesList().listIterator();
+        List<YangLeaf> leafInfo1 = leafIterator1.next();
+        ListIterator<YangLeaf> leafIterator2 = leafInfo1.listIterator();
+        YangLeaf leafInfo2 = leafIterator2.next();
+
+        // Check whether the information in the leaf is correct under design-container.
+        assertThat(leafInfo2.getName(), is("ink"));
+        assertThat(leafInfo2.getDataType().getDataTypeName(), is("int32"));
+        assertThat(leafInfo2.getDataType().getDataType(), is(YangDataTypes.INT32));
+
         // Check whether container is the sibling of uses.
         assertThat((secondUses.getNextSibling() instanceof YangContainer), is(true));
         YangContainer yangContainer2 = (YangContainer) secondUses.getNextSibling();
@@ -386,85 +417,88 @@
         assertThat(thirdUses.getResolvableStatus(),
                 is(ResolvableStatus.RESOLVED));
 
-//        // Check whether container is the sibling of uses.
-//        assertThat((thirdUses.getNextSibling() instanceof YangContainer), is(true));
-//
-//        YangContainer yangContainer3 = (YangContainer) thirdUses.getNextSibling();
-//        assertThat(yangContainer3.getName(), is("value"));
-//
-//        leafIterator = yangContainer3.getListOfLeaf().listIterator();
-//        leafInfo = leafIterator.next();
-//
-//        // Check whether the information in the leaf is correct under container
-//        // which has been deep copied from grouping.
-//        assertThat(leafInfo.getName(), is("zip-code"));
-//        assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
-//        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
-//
-//        // Check whether uses is the sibling of container-design.
-//        assertThat((yangContainer.getNextSibling() instanceof YangUses), is(true));
-//        YangUses fourthUses = (YangUses) yangContainer.getNextSibling();
-//
-//        // Check whether uses get resolved.
-//        assertThat(fourthUses.getResolvableStatus(),
-//                is(ResolvableStatus.RESOLVED));
-//
-//        // Check whether uses is the sibling of previous uses.
-//        assertThat((fourthUses.getNextSibling() instanceof YangUses), is(true));
-//        YangUses fifthUses = (YangUses) fourthUses.getNextSibling();
-//
-//        // Check whether uses get resolved.
-//        assertThat(fifthUses.getResolvableStatus(),
-//                is(ResolvableStatus.RESOLVED));
-//
-//        // Check whether list is the sibling of uses.
-//        assertThat((fifthUses.getNextSibling() instanceof YangList), is(true));
-//        YangList yangList = (YangList) fifthUses.getNextSibling();
-//        assertThat(yangList.getName(), is("valid"));
-//
-//        leafIterator = yangList.getListOfLeaf().listIterator();
-//        leafInfo = leafIterator.next();
-//
-//        // Check whether the information in the leaf is correct under list which has been deep copied from grouping.
-//        assertThat(leafInfo.getName(), is("invalid-interval"));
-//        assertThat(leafInfo.getDataType().getDataTypeName(), is("uint16"));
-//        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16));
-//        assertThat(leafInfo.getUnits(), is("\"seconds\""));
-//        assertThat(leafInfo.getReference(), is("\"RFC 6020\""));
-//
-//        // Check whether typedef is the sibling of list.
-//        assertThat((yangList.getNextSibling() instanceof YangTypeDef), is(true));
-//        YangTypeDef yangTypeDef = (YangTypeDef) yangList.getNextSibling();
-//        assertThat(yangTypeDef.getName(), is("my-type"));
-//
-//        leafIterator = grouping.getListOfLeaf().listIterator();
-//        leafInfo = leafIterator.next();
-//
-//        // Check whether the information in the leaf is correct under grouping.
-//        assertThat(leafInfo.getName(), is("zip-code"));
-//        assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
-//        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
-//
-//        // Check whether uses is endpoint-grouping's sibling.
-//        assertThat((grouping.getNextSibling() instanceof YangUses), is(true));
-//        YangUses endpointUses = (YangUses) grouping.getNextSibling();
-//
-//        // Check whether uses get resolved.
-//        assertThat(endpointUses.getResolvableStatus(),
-//                is(ResolvableStatus.RESOLVED));
-//
-//        assertThat((endpointUses.getNextSibling().getNextSibling().getNextSibling().getNextSibling().getNextSibling()
-//                .getNextSibling() instanceof YangUses), is(true));
-//
-//        YangUses yangUsesInEndpoint = (YangUses) endpointUses.getNextSibling().getNextSibling().getNextSibling()
-//                .getNextSibling().getNextSibling().getNextSibling();
-//        assertThat(yangUsesInEndpoint.getResolvableStatus(),
-//                is(ResolvableStatus.RESOLVED));
-//
-//        assertThat((yangUsesInEndpoint.getNextSibling() instanceof YangContainer), is(true));
-//        YangContainer yangContainerInEndPoint = (YangContainer) yangUsesInEndpoint.getNextSibling();
-//
-//        assertThat(yangContainerInEndPoint.getName(), is("design"));
+        ListIterator<YangNode> thirdUsesChildren = thirdUses.getUsesResolvedNodeList().listIterator();
+        YangNode thirdUsesChild = thirdUsesChildren.next();
+
+        // Check whether container is the child of uses.
+        assertThat((thirdUsesChild instanceof YangContainer), is(true));
+
+        YangContainer yangContainer3 = (YangContainer) thirdUsesChild;
+        assertThat(yangContainer3.getName(), is("value"));
+
+        leafIterator = yangContainer3.getListOfLeaf().listIterator();
+        leafInfo = leafIterator.next();
+
+        // Check whether the information in the leaf is correct under container
+        // which has been deep copied from grouping.
+        assertThat(leafInfo.getName(), is("zip-code"));
+        assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
+        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
+
+
+        // Check whether uses is the sibling of container-design.
+        assertThat((yangContainer.getNextSibling() instanceof YangUses), is(true));
+        YangUses fourthUses = (YangUses) yangContainer.getNextSibling();
+        assertThat(fourthUses.getName(), is("fourth"));
+        // Check whether uses get resolved.
+        assertThat(fourthUses.getResolvableStatus(),
+                is(ResolvableStatus.RESOLVED));
+
+        ListIterator<List<YangLeaf>> fourthUsesChildren = fourthUses.getUsesResolvedLeavesList().listIterator();
+        List<YangLeaf> fourthUsesChild = fourthUsesChildren.next();
+        ListIterator<YangLeaf> fourthUsesChildren1 = fourthUsesChild.listIterator();
+        YangLeaf fourthUsesChild1 = fourthUsesChildren1.next();
+
+        // Check whether the information in the leaf is correct under correct-container.
+        assertThat(fourthUsesChild1.getName(), is("correct"));
+        assertThat(fourthUsesChild1.getDataType().getDataTypeName(), is("my-type"));
+        assertThat(fourthUsesChild1.getDataType().getDataType(), is(YangDataTypes.DERIVED));
+
+        // Check whether uses is the sibling of previous uses.
+        assertThat((fourthUses.getNextSibling() instanceof YangUses), is(true));
+        YangUses fifthUses = (YangUses) fourthUses.getNextSibling();
+        assertThat(fifthUses.getName(), is("fifth"));
+
+        // Check whether uses get resolved.
+        assertThat(fifthUses.getResolvableStatus(),
+                is(ResolvableStatus.RESOLVED));
+
+        ListIterator<List<YangLeaf>> fifthUsesChildren = fifthUses.getUsesResolvedLeavesList().listIterator();
+        List<YangLeaf> fifthUsesChild = fifthUsesChildren.next();
+        ListIterator<YangLeaf> fifthUsesChildren1 = fifthUsesChild.listIterator();
+        YangLeaf fifthUsesChild1 = fifthUsesChildren1.next();
+
+        //Check whether the information in the leaf is correct under correct-container.
+        assertThat(fifthUsesChild1.getName(), is("abc"));
+        assertThat(fifthUsesChild1.getDataType().getDataTypeName(), is("string"));
+        assertThat(fifthUsesChild1.getDataType().getDataType(), is(YangDataTypes.STRING));
+
+        //Check whether uses is endpoint-grouping's sibling.
+        assertThat((grouping.getNextSibling() instanceof YangUses), is(true));
+        YangUses endpointUses = (YangUses) grouping.getNextSibling();
+
+        // Check whether uses get resolved.
+        assertThat(endpointUses.getResolvableStatus(),
+                is(ResolvableStatus.RESOLVED));
+        assertThat(endpointUses.getName(), is("endpoint"));
+
+        ListIterator<YangNode> endpointUsesUsesChildren = endpointUses.getUsesResolvedNodeList().listIterator();
+        YangNode endpointUsesUsesChild = endpointUsesUsesChildren.next();
+
+        // Check whether list is the sibling of uses.
+        assertThat((endpointUsesUsesChild instanceof YangList), is(true));
+        YangList yangList1 = (YangList) firstUsesChild;
+        assertThat(yangList1.getName(), is("valid"));
+
+        leafIterator = yangList1.getListOfLeaf().listIterator();
+        leafInfo = leafIterator.next();
+
+        // Check whether the information in the leaf is correct under list which has been deep copied from grouping.
+        assertThat(leafInfo.getName(), is("invalid-interval"));
+        assertThat(leafInfo.getDataType().getDataTypeName(), is("uint16"));
+        assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16));
+        assertThat(leafInfo.getUnits(), is("\"seconds\""));
+        assertThat(leafInfo.getReference(), is("\"RFC 6020\""));
     }
 
     /**
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataTypeTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataTypeTest.java
index f2ca36e..35cc4bc 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataTypeTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataTypeTest.java
@@ -26,8 +26,10 @@
 import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
+import org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModule;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaTypeDef;
+import org.onosproject.yangutils.utils.io.impl.YangToJavaNamingConflictUtil;
 
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsNot.not;
@@ -37,9 +39,9 @@
 import static org.onosproject.yangutils.datamodel.YangDataTypes.INT32;
 import static org.onosproject.yangutils.datamodel.YangDataTypes.STRING;
 import static org.onosproject.yangutils.datamodel.YangDataTypes.UINT8;
-import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.getJavaDataType;
-import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.getJavaImportClass;
-import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.getJavaImportPackage;
+import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaDataType;
+import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportClass;
+import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportPackage;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_LANG;
 
 /**
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/ChoiceCaseTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/ChoiceCaseTranslatorTest.java
index 74043f6..993d38c 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/ChoiceCaseTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/ChoiceCaseTranslatorTest.java
@@ -22,6 +22,7 @@
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorUtil.generateJavaCode;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/EnumTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/EnumTranslatorTest.java
index 2a950fc..742d310 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/EnumTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/EnumTranslatorTest.java
@@ -22,6 +22,7 @@
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorUtil.generateJavaCode;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntaxTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntaxTest.java
index 6b86b9c..b844b27 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntaxTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntaxTest.java
@@ -23,16 +23,17 @@
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
+import org.onosproject.yangutils.utils.io.impl.YangToJavaNamingConflictUtil;
 
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsNot.not;
 import static org.junit.Assert.assertThat;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getJavaPackageFromPackagePath;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getJavaPackageFromPackagePath;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
 import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_BASE_PKG;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java
index 05fe52d..aee10f7 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java
@@ -23,13 +23,14 @@
 import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsNot.not;
 import static org.junit.Assert.assertThat;
 import static org.onosproject.yangutils.datamodel.YangDataTypes.STRING;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBuild;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBuildForInterface;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getCheckNotNull;
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/NotificationTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/NotificationTranslatorTest.java
index f4d8bf8..e45b1d8 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/NotificationTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/NotificationTranslatorTest.java
@@ -22,6 +22,7 @@
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorUtil.generateJavaCode;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/RpcTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/RpcTranslatorTest.java
index 9b8077c..04ef477 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/RpcTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/RpcTranslatorTest.java
@@ -22,6 +22,7 @@
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorUtil.generateJavaCode;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/UnionTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/UnionTranslatorTest.java
index 9dcdfdf..0441c87 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/UnionTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/UnionTranslatorTest.java
@@ -22,6 +22,7 @@
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorUtil.generateJavaCode;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtilTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtilTest.java
index 5fd728b..05ffa81 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtilTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtilTest.java
@@ -25,7 +25,6 @@
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModule;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
 
 import static org.apache.commons.io.FileUtils.deleteDirectory;
 import static org.hamcrest.core.Is.is;
@@ -34,8 +33,8 @@
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.appendFileContents;
-import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.createPackage;
-import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.doesPackageExist;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.doesPackageExist;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.updateFileHandle;
 
 /**
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/JavaDocGenTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/JavaDocGenTest.java
index 2e9f436..5b36403 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/JavaDocGenTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/JavaDocGenTest.java
@@ -22,7 +22,6 @@
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
 
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsNot.not;
@@ -207,4 +206,4 @@
         pluginConfig.setConflictResolver(null);
         return pluginConfig;
     }
-}
\ No newline at end of file
+}
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/YangIoUtilsTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/YangIoUtilsTest.java
index c10ed03..38d18c2 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/YangIoUtilsTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/utils/io/impl/YangIoUtilsTest.java
@@ -26,17 +26,15 @@
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
 import org.onosproject.yangutils.utils.UtilConstants;
 import org.sonatype.plexus.build.incremental.BuildContext;
 import org.sonatype.plexus.build.incremental.DefaultBuildContext;
 
-import static org.apache.commons.io.FileUtils.deleteDirectory;
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsNot.not;
 import static org.junit.Assert.assertThat;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.addPackageInfo;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.addToCompilationRoot;
+import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.addToCompilationRoot;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.createDirectories;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;