[ONOS-5003][ONOS-5004][ONOS-5005]Generated Code modification for YangUtils+added interface for augmentation method and other api changes.

Change-Id: I954b9c99e182f21d01fcc5cd76fbac7d61a6c3aa
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
index d8ba37a..2550883 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
@@ -21,12 +21,16 @@
 
 import org.onosproject.yangutils.datamodel.YangAtomicPath;
 import org.onosproject.yangutils.datamodel.YangAugmentableNode;
+import org.onosproject.yangutils.datamodel.YangIsFilterContentNodes;
 import org.onosproject.yangutils.datamodel.YangLeaf;
 import org.onosproject.yangutils.datamodel.YangLeafList;
 import org.onosproject.yangutils.datamodel.YangLeafRef;
 import org.onosproject.yangutils.datamodel.YangLeavesHolder;
+import org.onosproject.yangutils.datamodel.YangList;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
@@ -34,7 +38,6 @@
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
 import org.onosproject.yangutils.translator.tojava.TempJavaBeanFragmentFiles;
 import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
-import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
 
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BITS;
@@ -58,21 +61,17 @@
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getParentNodeNameForDataMethods;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
 import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.INT_TYPE_CONFLICT;
-import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
-import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.ADD;
 import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.AND;
 import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE;
 import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
-import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
 import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
-import static org.onosproject.yangutils.utils.UtilConstants.BASE_CLASS;
 import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
 import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
-import static org.onosproject.yangutils.utils.UtilConstants.BITSET;
 import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
 import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
+import static org.onosproject.yangutils.utils.UtilConstants.BREAK;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
 import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
@@ -87,8 +86,6 @@
 import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.COLON;
 import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
-import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
-import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.DECODE;
 import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
 import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
@@ -97,37 +94,40 @@
 import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.ELSE;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
 import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
 import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
 import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
 import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
 import static org.onosproject.yangutils.utils.UtilConstants.FILTER_CONTENT_MATCH;
-import static org.onosproject.yangutils.utils.UtilConstants.FILTER_LEAF;
-import static org.onosproject.yangutils.utils.UtilConstants.FILTER_LEAF_LIST;
+import static org.onosproject.yangutils.utils.UtilConstants.FLAG;
 import static org.onosproject.yangutils.utils.UtilConstants.FOR;
 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
 import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
 import static org.onosproject.yangutils.utils.UtilConstants.GET;
+import static org.onosproject.yangutils.utils.UtilConstants.GET_CLASS;
 import static org.onosproject.yangutils.utils.UtilConstants.GET_DECODER;
 import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_FILTER_LEAF_LIST;
+import static org.onosproject.yangutils.utils.UtilConstants.GET_LEAF_INDEX;
+import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD;
 import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_OPERATION_TYPE;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_SELECT_LEAF;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_SELECT_LEAF_LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.HASH;
 import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.IF;
-import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ARGUMENT_EXCEPTION;
-import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ARGUMENT_EXCEPTION_MSG;
+import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ACCESS_EXCEPTION;
 import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
 import static org.onosproject.yangutils.utils.UtilConstants.INT;
 import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.INT_MAX_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.INT_MIN_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.INVOCATION_TARGET_EXCEPTION;
+import static org.onosproject.yangutils.utils.UtilConstants.INVOKE;
+import static org.onosproject.yangutils.utils.UtilConstants.IS_EMPTY;
+import static org.onosproject.yangutils.utils.UtilConstants.IS_SELECT_LEAF;
+import static org.onosproject.yangutils.utils.UtilConstants.LEAF_IDENTIFIER;
 import static org.onosproject.yangutils.utils.UtilConstants.LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.LONG;
 import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE;
@@ -139,6 +139,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.NEW;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.NOT;
+import static org.onosproject.yangutils.utils.UtilConstants.NO_SUCH_METHOD_EXCEPTION;
 import static org.onosproject.yangutils.utils.UtilConstants.NULL;
 import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
 import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
@@ -147,9 +148,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.OMIT_NULL_VALUE_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
-import static org.onosproject.yangutils.utils.UtilConstants.OPERATION;
-import static org.onosproject.yangutils.utils.UtilConstants.OPERATION_ENUM;
-import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM_TYPE;
+import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
 import static org.onosproject.yangutils.utils.UtilConstants.OR_OPERATION;
 import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
 import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
@@ -164,15 +163,12 @@
 import static org.onosproject.yangutils.utils.UtilConstants.PUT;
 import static org.onosproject.yangutils.utils.UtilConstants.QUESTION_MARK;
 import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
-import static org.onosproject.yangutils.utils.UtilConstants.RECEIVED_OBJECT;
 import static org.onosproject.yangutils.utils.UtilConstants.REPLACE_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
 import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
-import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF;
-import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF_LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
-import static org.onosproject.yangutils.utils.UtilConstants.SET_OPERATION_TYPE;
+import static org.onosproject.yangutils.utils.UtilConstants.SET_SELECT_LEAF;
 import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
 import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.SINGLE_QUOTE;
@@ -180,26 +176,27 @@
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
 import static org.onosproject.yangutils.utils.UtilConstants.SPLIT_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.SQUARE_BRACKETS;
-import static org.onosproject.yangutils.utils.UtilConstants.STARTED_LOG_INFO;
 import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
-import static org.onosproject.yangutils.utils.UtilConstants.STOPPED_LOG_INFO;
 import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
 import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
 import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
 import static org.onosproject.yangutils.utils.UtilConstants.THIS;
-import static org.onosproject.yangutils.utils.UtilConstants.THROW;
 import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
 import static org.onosproject.yangutils.utils.UtilConstants.TO;
 import static org.onosproject.yangutils.utils.UtilConstants.TRIM_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
 import static org.onosproject.yangutils.utils.UtilConstants.TRY;
 import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_FOUR_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.UNDER_SCORE;
 import static org.onosproject.yangutils.utils.UtilConstants.VALIDATE_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
+import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF_SET;
 import static org.onosproject.yangutils.utils.UtilConstants.VOID;
 import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
 import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_OP_PARAM_INFO;
@@ -215,7 +212,9 @@
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForAddAugmentation;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForBuilderMethod;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetAugmentation;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForGetMethodWithAttribute;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForValidatorMethod;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
@@ -260,6 +259,10 @@
 
         String returnType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
+        if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
+            return generateForGetMethodWithAttribute(returnType)
+                    + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
+        }
 
         return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig)
                 + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
@@ -297,7 +300,7 @@
      * @param pluginConfig plugin configurations
      * @return constructor string
      */
-    public static String getConstructorString(String name, YangPluginConfig pluginConfig) {
+    private static String getConstructorString(String name, YangPluginConfig pluginConfig) {
         return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig);
     }
 
@@ -322,7 +325,7 @@
      * @param name attribute name
      * @return check not null string
      */
-    public static String getCheckNotNull(String name) {
+    static String getCheckNotNull(String name) {
         return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
                 + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
     }
@@ -330,11 +333,15 @@
     /**
      * Returns build method string.
      *
-     * @param name class name
+     * @param name       class name
+     * @param isRootNode if root node
      * @return build string
      */
-    public static String getBuildString(String name) {
-        return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
+    public static String getBuildString(String name, boolean isRootNode) {
+        if (isRootNode) {
+            return NEW_LINE + getBuild(name, true);
+        }
+        return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name, false);
     }
 
     /**
@@ -346,13 +353,13 @@
      */
     public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
 
-        String attrQuaifiedType = getReturnType(attr);
+        String attrQualifiedType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
 
         if (!attr.isListAttr()) {
-            return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
+            return getGetter(attrQualifiedType, attributeName, generatedJavaFiles);
         }
-        String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
+        String listAttr = getListString() + attrQualifiedType + DIAMOND_CLOSE_BRACKET;
         return getGetter(listAttr, attributeName, generatedJavaFiles);
     }
 
@@ -364,7 +371,7 @@
      * @param generatedJavaFiles generated java files
      * @return getter for attribute
      */
-    public static String getGetter(String type, String name, int generatedJavaFiles) {
+    static String getGetter(String type, String name, int generatedJavaFiles) {
         String ret = parseTypeForReturnValue(type);
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
             return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
@@ -406,24 +413,31 @@
      */
     public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
 
-        String attrQuaifiedType = getReturnType(attr);
+        String attrQualifiedType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
-        if (!attr.isListAttr()) {
-            return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
+        boolean isTypeNull = false;
+        if (attr.getAttributeType() == null) {
+            isTypeNull = true;
         }
-        String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
-        return getSetter(className, attributeName, listAttr, generatedJavaFiles);
+        if (!attr.isListAttr()) {
+            return getSetter(className, attributeName, attrQualifiedType, generatedJavaFiles, isTypeNull, false);
+        }
+        String listAttr = getListString() + attrQualifiedType + DIAMOND_CLOSE_BRACKET;
+        return getSetter(className, attributeName, listAttr, generatedJavaFiles, isTypeNull, true);
     }
 
     /**
      * Returns setter for attribute.
      *
-     * @param className class name
-     * @param name      attribute name
-     * @param type      return type
+     * @param className  class name
+     * @param name       attribute name
+     * @param type       return type
+     * @param isTypeNull if attribute type is null
+     * @param isList     true if leaf-list
      * @return setter for attribute
      */
-    private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
+    private static String getSetter(String className, String name, String type, int generatedJavaFiles,
+                                    boolean isTypeNull, boolean isList) {
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
             return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
                     + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
@@ -435,12 +449,25 @@
                     + THIS + PERIOD + name + SPACE + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE
                     + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
         } else {
-            return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
+            String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
                     name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
-                    + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE
+                    + OPEN_CURLY_BRACKET;
+            if (!isTypeNull && !isList) {
+                method = method + getValueLeafSetString(name);
+            } else {
+                method = method + EMPTY_STRING;
+            }
+            return method + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS +
+                    PERIOD + name + SPACE
                     + EQUAL + SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
                     + THIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
         }
+
+    }
+
+    //Returns value leaf flag setter.
+    private static String getValueLeafSetString(String name) {
+        return "\n        get_valueLeafFlags().set(LeafIdentifier." + name.toUpperCase() + ".getLeafIndex());";
     }
 
     /**
@@ -449,11 +476,11 @@
      * @param attr attribute info
      * @return setter method for class
      */
-    public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
+    static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
 
-        String attrQuaifiedType = getReturnType(attr);
+        String attrQualifiedType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
-        return getTypeDefSetter(attrQuaifiedType, attributeName);
+        return getTypeDefSetter(attrQualifiedType, attributeName);
     }
 
     /**
@@ -466,8 +493,8 @@
     private static String getTypeDefSetter(String type, String name) {
         return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(name)
                 + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
-                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+                + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN +
+                NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
     }
 
     /**
@@ -488,8 +515,8 @@
      * @param generatedJavaFiles generated java files
      * @return getter method for interface
      */
-    public static String getGetterForInterface(String yangName, String returnType, boolean isList,
-                                               int generatedJavaFiles) {
+    static String getGetterForInterface(String yangName, String returnType, boolean isList,
+                                        int generatedJavaFiles) {
 
         if (!isList) {
             return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
@@ -508,8 +535,7 @@
     private static String getGetterInterfaceString(String returnType, String yangName,
                                                    int generatedJavaFiles) {
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
-            return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
-                    + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
+            return getGetMethodWithArgument(returnType, yangName);
         } else {
             return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
                     + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
@@ -526,8 +552,8 @@
      * @param generatedJavaFiles generated java files
      * @return setter method for interface
      */
-    public static String getSetterForInterface(String attrName, String attrType, String className,
-                                               boolean isList, int generatedJavaFiles) {
+    static String getSetterForInterface(String attrName, String attrType, String className,
+                                        boolean isList, int generatedJavaFiles) {
 
         if (!isList) {
             return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
@@ -547,7 +573,6 @@
     private static String getSetterInterfaceString(String className, String attrName, String attrType,
                                                    int generatedJavaFiles) {
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
-
             return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
                     + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
         } else {
@@ -587,7 +612,7 @@
      * @param yangName name of the interface
      * @return build method for interface
      */
-    public static String getBuildForInterface(String yangName) {
+    static String getBuildForInterface(String yangName) {
         return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
                 + NEW_LINE;
     }
@@ -597,34 +622,24 @@
      *
      * @param yangName     class name
      * @param pluginConfig plugin configurations
+     * @param isRootNode   if root node
      * @return constructor string
      */
-    public static String getConstructorStart(String yangName, YangPluginConfig pluginConfig) {
+    static String getConstructorStart(String yangName, YangPluginConfig pluginConfig, boolean isRootNode) {
 
         String javadoc = getConstructorString(yangName, pluginConfig);
-        String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + getCapitalCase(DEFAULT) + yangName +
+
+        String returnType = getCapitalCase(DEFAULT) + yangName;
+        if (isRootNode) {
+            returnType = yangName + OP_PARAM;
+        }
+        String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + returnType +
                 OPEN_PARENTHESIS + yangName + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
                 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
         return javadoc + constructor;
     }
 
     /**
-     * Returns constructor string for op param class.
-     *
-     * @param yangName     class name
-     * @param pluginConfig plugin configurations
-     * @return constructor string
-     */
-    public static String getOpParamConstructorStart(String yangName, YangPluginConfig pluginConfig) {
-
-        String javadoc = getConstructorString(yangName, pluginConfig);
-        String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + OPERATION +
-                OPEN_PARENTHESIS + yangName + OPERATION + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
-                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
-        return javadoc + constructor;
-    }
-
-    /**
      * Returns the constructor strings for class file.
      *
      * @param attr               attribute info
@@ -706,13 +721,19 @@
     /**
      * Returns the build method strings for class file.
      *
-     * @param yangName class name
+     * @param yangName   class name
+     * @param isRootNode if root node
      * @return build method string for class
      */
-    public static String getBuild(String yangName) {
-        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
+    static String getBuild(String yangName, boolean isRootNode) {
+        String type = getCapitalCase(DEFAULT) + yangName;
+        if (isRootNode) {
+            type = yangName + OP_PARAM;
+        }
+        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS +
+                CLOSE_PARENTHESIS
                 + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE +
-                getCapitalCase(DEFAULT) + yangName + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN
+                type + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN
                 + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
     }
 
@@ -733,170 +754,13 @@
      *
      * @return string method's open string
      */
-    public static String getToStringMethodOpen() {
+    static String getToStringMethodOpen() {
         return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
                 + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
                 + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
     }
 
     /**
-     * Returns to string leaf for get method.
-     *
-     * @return string leaf for get method
-     */
-    public static String getToStringLeafgetter() {
-        return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_FILTER_LEAF
-                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + RETURN + SPACE + FILTER_LEAF + SEMI_COLAN + NEW_LINE
-                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-    }
-
-    /**
-     * Returns to string select leaf for get method.
-     *
-     * @return select leaf string for get method
-     */
-    public static String getToStringSelectLeafgetter() {
-        return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_SELECT_LEAF
-                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + RETURN + SPACE + SELECT_LEAF + SEMI_COLAN + NEW_LINE
-                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-    }
-
-    /**
-     * Returns to string leaf list for get method.
-     *
-     * @return string leaf list for get method
-     */
-    public static String getToStringLeafListgetter() {
-        return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_FILTER_LEAF_LIST
-                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + RETURN + SPACE + FILTER_LEAF_LIST + SEMI_COLAN + NEW_LINE
-                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-    }
-
-    /**
-     * Returns to string select leaf list for get.
-     *
-     * @return select leaf list list for get
-     */
-    public static String getToStringSelectLeafListgetter() {
-        return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BITSET + SPACE + GET_SELECT_LEAF_LIST
-                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + RETURN + SPACE + SELECT_LEAF_LIST + SEMI_COLAN + NEW_LINE
-                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-    }
-
-    /**
-     * Returns to string operation type for get method.
-     *
-     * @return operation type for get method
-     */
-    public static String getOperationTypegetter() {
-        return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + OPERATION_ENUM
-                + SPACE + GET_OPERATION_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
-                + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE
-                + OP_PARAM_TYPE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-    }
-
-    /**
-     * Returns to string operation type for set.
-     *
-     * @return operation type set method
-     */
-    public static String getOperationTypeSetter() {
-        return NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_OPERATION_TYPE
-                + OPEN_PARENTHESIS + OPERATION_ENUM + SPACE + getSmallCase(OPERATION_ENUM) + CLOSE_PARENTHESIS
-                + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
-                + OP_PARAM_TYPE + SPACE + EQUAL + SPACE + getSmallCase(OPERATION_ENUM) + SEMI_COLAN + NEW_LINE
-                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
-    }
-
-    /**
-     * Returns string for leaf set method.
-     *
-     * @param className    class name
-     * @param curnode      current YANG node
-     * @param pluginConfig plugin configurations
-     * @return string for leaf set method
-     */
-    public static String getSetterForLeaf(String className, YangNode curnode, YangPluginConfig pluginConfig) {
-
-        int numleaf = 1;
-        String filterMethod = "";
-        TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curnode)
-                .getTempJavaCodeFragmentFiles().getBeanTempFiles();
-        if (curnode instanceof YangLeavesHolder) {
-            YangLeavesHolder leavesHolder = (YangLeavesHolder) curnode;
-            List<YangLeaf> leaves = leavesHolder.getListOfLeaf();
-            if (leaves !=  null && !leaves.isEmpty()) {
-                for (YangLeaf leaf : leaves) {
-                    JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeaf(tempFragmentFiles, leaf, pluginConfig);
-                    String attrQuaifiedType = getReturnType(javaAttributeInfo);
-                    String attributeName = javaAttributeInfo.getAttributeName();
-
-                    filterMethod = filterMethod + NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE
-                            + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE
-                            + attributeName + OPEN_PARENTHESIS + attrQuaifiedType
-                            + SPACE + RECEIVED_OBJECT + attributeName + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
-                            + NEW_LINE + EIGHT_SPACE_INDENTATION + attributeName + SPACE + EQUAL + SPACE
-                            + RECEIVED_OBJECT + attributeName + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
-                            + GET_FILTER_LEAF + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + SET_METHOD_PREFIX
-                            + OPEN_PARENTHESIS + String.valueOf(numleaf) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
-                            + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS + SEMI_COLAN + NEW_LINE
-                            + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-                    numleaf++;
-                }
-            }
-        }
-        return filterMethod;
-    }
-
-    /**
-     * Returns string for leaf list set method.
-     *
-     * @param className    class name
-     * @param curnode      current YANG node
-     * @param pluginConfig plugin configurations
-     * @return string for leaf list set method
-     */
-    public static String getSetterForLeafList(String className, YangNode curnode, YangPluginConfig pluginConfig) {
-
-        int numleaf = 1;
-        String filterMethod = "";
-        TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curnode)
-                .getTempJavaCodeFragmentFiles().getBeanTempFiles();
-        if (curnode instanceof YangLeavesHolder) {
-            YangLeavesHolder leavesHolder = (YangLeavesHolder) curnode;
-            List<YangLeafList> listOfLeafList = leavesHolder.getListOfLeafList();
-
-            if (listOfLeafList !=  null && !listOfLeafList.isEmpty()) {
-                for (YangLeafList leafList : listOfLeafList) {
-                    JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeafList(tempFragmentFiles, leafList,
-                            pluginConfig);
-                    String attributeName = javaAttributeInfo.getAttributeName();
-                    String attrQuaifiedType = getReturnType(javaAttributeInfo);
-                    if (javaAttributeInfo.isListAttr()) {
-                        attrQuaifiedType = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
-                    }
-                    filterMethod = filterMethod + NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE
-                            + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE
-                            + attributeName + OPEN_PARENTHESIS + attrQuaifiedType
-                            + SPACE + RECEIVED_OBJECT + attributeName + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
-                            + NEW_LINE + EIGHT_SPACE_INDENTATION + attributeName + SPACE + EQUAL + SPACE
-                            + RECEIVED_OBJECT + attributeName + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
-                            + GET_FILTER_LEAF_LIST + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + SET_METHOD_PREFIX
-                            + OPEN_PARENTHESIS + String.valueOf(numleaf) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
-                            + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS + SEMI_COLAN + NEW_LINE
-                            + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-                    numleaf++;
-                }
-            }
-        }
-        return filterMethod;
-    }
-
-    /**
      * Returns whether the data type is of primitive data type.
      *
      * @param dataType data type to be checked
@@ -923,7 +787,7 @@
                 + CLOSE_PARENTHESIS;
     }
 
-    private static String getAttrTypeForFilterContentMatchWhenNonPremitiveDatatype(String attributeName) {
+    private static String getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(String attributeName) {
         return APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
                 + SPACE + EQUAL + EQUAL + SPACE + NULL + SPACE + OR_OPERATION + SPACE
                 + NOT + OPEN_PARENTHESIS + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
@@ -933,7 +797,7 @@
     }
 
     private static String getIfFilterContentMatchMethodImpl(String attributeName,
-                                                            String filterMethod, int numleaf, YangType dataType) {
+                                                            YangType dataType) {
         String attrQualifiedType;
 
         if (isPrimitiveDataType(dataType.getDataType())) {
@@ -943,10 +807,10 @@
             if (isPrimitiveDataType(type.getDataType())) {
                 attrQualifiedType = getAttrTypeForFilterContentMatchWhenPrimitiveDataType(attributeName);
             } else {
-                attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPremitiveDatatype(attributeName);
+                attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(attributeName);
             }
         } else {
-            attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPremitiveDatatype(attributeName);
+            attrQualifiedType = getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(attributeName);
         }
 
         return attrQualifiedType;
@@ -955,27 +819,21 @@
     /**
      * Returns string for is filter content match method.
      *
-     * @param className    class name
      * @param curNode      current YANG node
      * @param pluginConfig plugin configurations
      * @return string for is filter content match method
      */
-    public static String getIsFilterContentMatch(String className, YangNode curNode, YangPluginConfig pluginConfig) {
+    static String getIsFilterContentMatch(YangNode curNode, YangPluginConfig pluginConfig) {
 
-        int numLeaf = 1;
-        String filterMethod = "";
+        String filterMethod = getOverRideString();
         TempJavaBeanFragmentFiles tempFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
                 .getTempJavaCodeFragmentFiles().getBeanTempFiles();
+        JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
         if (curNode instanceof YangLeavesHolder) {
-            filterMethod = NEW_LINE + NEW_LINE + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE
-                    + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + getCapitalCase(OBJECT)
-                    + SPACE + OBJ +
-                    CLOSE_PARENTHESIS + SPACE
+            filterMethod = filterMethod + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE
+                    + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + getCapitalCase(javaFileInfo.getJavaName())
+                    + SPACE + APP_INSTANCE + CLOSE_PARENTHESIS + SPACE
                     + OPEN_CURLY_BRACKET + NEW_LINE;
-            filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + getCapitalCase(DEFAULT)
-                    + getCapitalCase(className) + SPACE + APP_INSTANCE + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS +
-                    getCapitalCase(DEFAULT) + getCapitalCase(className) + CLOSE_PARENTHESIS + OBJ +
-                    SEMI_COLAN + NEW_LINE;
             if (curNode instanceof YangAugmentableNode) {
                 filterMethod = filterMethod + getAugmentableOpParamSyntax();
             }
@@ -990,39 +848,46 @@
                             pluginConfig);
                     String attributeName = javaAttributeInfo.getAttributeName();
                     attrQualifiedType = getIfFilterContentMatchMethodImpl(attributeName,
-                            filterMethod, numLeaf, leaf.getDataType());
+                            leaf.getDataType());
                     filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
                             + GET_FILTER_LEAF + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX
-                            + OPEN_PARENTHESIS + String.valueOf(numLeaf) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
+                            + OPEN_PARENTHESIS + LEAF_IDENTIFIER + PERIOD + attributeName.toUpperCase() + PERIOD +
+                            GET_LEAF_INDEX
+                            + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
                             + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE
                             + OPEN_PARENTHESIS + attrQualifiedType + CLOSE_PARENTHESIS + SPACE
                             + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE
                             + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE
-                            + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
-
-                    numLeaf++;
+                            + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE;
                 }
             }
 
             if (listOfLeafList != null) {
-                numLeaf = 1;
                 for (YangLeafList leafList : listOfLeafList) {
                     JavaAttributeInfo javaAttributeInfo = getJavaAttributeOfLeafList(tempFragmentFiles, leafList,
                             pluginConfig);
                     String attributeName = javaAttributeInfo.getAttributeName();
-                    attrQualifiedType = getIfFilterContentMatchMethodImpl(
-                            attributeName, filterMethod, numLeaf, leafList.getDataType());
-                    filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
-                            + GET_FILTER_LEAF_LIST + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX
-                            + OPEN_PARENTHESIS + String.valueOf(numLeaf) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
-                            + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE
-                            + OPEN_PARENTHESIS + attrQualifiedType + CLOSE_PARENTHESIS + SPACE
-                            + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE
-                            + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE
-                            + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
-                    numLeaf++;
+                    filterMethod = filterMethod + getIsFileContentMatchForLists(getCapitalCase(attributeName), true,
+                            javaAttributeInfo.getImportInfo().getClassInfo());
                 }
             }
+            YangNode tempNode = curNode.getChild();
+            JavaFileInfo fileInfo;
+            String name;
+            while (tempNode != null) {
+                if (tempNode instanceof YangIsFilterContentNodes) {
+                    fileInfo = ((JavaFileInfoContainer) tempNode).getJavaFileInfo();
+                    name = getCapitalCase(fileInfo.getJavaName());
+                    if (tempNode instanceof YangList) {
+                        filterMethod = filterMethod +
+                                getIsFileContentMatchForLists(name, false, null);
+                    } else {
+
+                        filterMethod = filterMethod + getIsFilerContentMatchForChildNode(name);
+                    }
+                }
+                tempNode = tempNode.getNextSibling();
+            }
 
             filterMethod = filterMethod + EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLAN +
                     NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
@@ -1031,57 +896,138 @@
         return filterMethod;
     }
 
-    /*Returns method string for op parms augmented syntax*/
+    /**
+     * Returns filter content match for child nodes.
+     *
+     * @param name name of node
+     * @return filter content match for child nodes
+     */
+    private static String getIsFilerContentMatchForChildNode(String name) {
+        name = getSmallCase(name);
+        String method = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + name + OPEN_PARENTHESIS +
+                CLOSE_PARENTHESIS + SPACE + NOT + EQUAL + SPACE + NULL + CLOSE_PARENTHESIS + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + APP_INSTANCE
+                + PERIOD + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + EQUAL
+                + EQUAL + SPACE + NULL + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
+                SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + NEW_LINE + TWELVE_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET + NEW_LINE;
+        return method + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + name + OPEN_PARENTHESIS +
+                CLOSE_PARENTHESIS + PERIOD + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + name +
+                OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN +
+                NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
+                + CLOSE_CURLY_BRACKET + NEW_LINE;
+    }
+
+    /**
+     * Returns filter content match for list types.
+     *
+     * @param name       name of node
+     * @param isLeafList if for leaf list
+     * @param type       type of the attribute
+     * @return filter content match for list types
+     */
+    private static String getIsFileContentMatchForLists(String name, boolean isLeafList, String type) {
+        String method = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + OPEN_PARENTHESIS
+                + CLOSE_PARENTHESIS + SPACE + NOT + EQUAL + SPACE + NULL + SPACE + AND + AND + SPACE + NOT +
+                getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + IS_EMPTY +
+                CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
+                + NEW_LINE;
+        method = method + TWELVE_SPACE_INDENTATION + IF + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + getSmallCase(name)
+                + OPEN_PARENTHESIS
+                + CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + SPACE + NULL + SPACE + "||" + SPACE +
+                getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + IS_EMPTY + CLOSE_PARENTHESIS +
+                SPACE + OPEN_CURLY_BRACKET
+                + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE +
+                TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
+        if (isLeafList) {
+            if (type.equals(getSmallCase(STRING_DATA_TYPE))) {
+                type = STRING_DATA_TYPE;
+            }
+            method = method + TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + type + SPACE +
+                    getSmallCase(name)
+                    + SPACE + COLAN + SPACE + getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
+                    CLOSE_PARENTHESIS
+                    + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
+                    FLAG + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN + NEW_LINE;
+            method = method + SIXTEEN_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + type + SPACE +
+                    UNDER_SCORE + getSmallCase(name)
+                    + SPACE + COLAN + SPACE + APP_INSTANCE + PERIOD + getSmallCase(name) + OPEN_PARENTHESIS
+                    + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+            method = method + TWENTY_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + PERIOD;
+        } else {
+            method = method + TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + name + SPACE +
+                    getSmallCase(name)
+                    + SPACE + COLAN + SPACE + getSmallCase(name) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
+                    CLOSE_PARENTHESIS
+                    + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
+                    FLAG + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN + NEW_LINE;
+            method = method + SIXTEEN_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + name + SPACE +
+                    UNDER_SCORE + getSmallCase(name)
+                    + SPACE + COLAN + SPACE + APP_INSTANCE + PERIOD + getSmallCase(name) + OPEN_PARENTHESIS
+                    + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+            method = method + TWENTY_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + getSmallCase(name) + PERIOD;
+        }
+        if (!isLeafList) {
+            method = method + FILTER_CONTENT_MATCH;
+        } else {
+            method = method + EQUALS_STRING;
+        }
+        method = method + OPEN_PARENTHESIS + UNDER_SCORE + getSmallCase(name) + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS
+                + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + FLAG + SPACE + EQUAL + SPACE + TRUE +
+                SEMI_COLAN
+                + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + BREAK + SEMI_COLAN + NEW_LINE + TWENTY_SPACE_INDENTATION
+                + CLOSE_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
+
+        method = method + SIXTEEN_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + FLAG + SPACE + EQUAL + EQUAL
+                + SPACE + FALSE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWENTY_SPACE_INDENTATION
+                + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
+                NEW_LINE;
+        return method + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE;
+
+    }
+
+    //Returns method string for op params augmented syntax
     private static String getAugmentableOpParamSyntax() {
-        return EIGHT_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + YANG_AUGMENTED_INFO + SPACE +
+        return EIGHT_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + OBJECT_STRING + SPACE +
                 getSmallCase(YANG_AUGMENTED_INFO) + SPACE + COLAN + SPACE + THIS +
-                PERIOD + GET_METHOD_PREFIX + YANG_AUGMENTED_INFO + MAP + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD
+                PERIOD + getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD
                 + VALUE + "s" + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
-                NEW_LINE + TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + NOT + OPEN_PARENTHESIS +
-                getSmallCase(YANG_AUGMENTED_INFO) + SPACE + INSTANCE_OF + SPACE + YANG_AUGMENTED_OP_PARAM_INFO +
-                CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
-                SIXTEEN_SPACE_INDENTATION + THROW + SPACE + NEW + SPACE + ILLEGAL_ARGUMENT_EXCEPTION +
-                OPEN_PARENTHESIS +
-                ILLEGAL_ARGUMENT_EXCEPTION_MSG + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION +
-                CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE + TWELVE_SPACE_INDENTATION + YANG_AUGMENTED_INFO + SPACE +
+                NEW_LINE + TWELVE_SPACE_INDENTATION + OBJECT_STRING + SPACE +
                 getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + SPACE + EQUAL + SPACE + APP_INSTANCE + PERIOD +
-                GET_METHOD_PREFIX + AUGMENTED_INFO + OPEN_PARENTHESIS + OPEN_PARENTHESIS + OPEN_PARENTHESIS +
-                YANG_AUGMENTED_OP_PARAM_INFO + CLOSE_PARENTHESIS + SPACE + getSmallCase(YANG_AUGMENTED_INFO) +
-                CLOSE_PARENTHESIS + PERIOD + GET_METHOD_PREFIX + BASE_CLASS + CLOSE_PARENTHESIS + SEMI_COLAN +
-                NEW_LINE + TWELVE_SPACE_INDENTATION + IF + OPEN_PARENTHESIS + NOT +
-                OPEN_PARENTHESIS + OPEN_PARENTHESIS + YANG_AUGMENTED_OP_PARAM_INFO + CLOSE_PARENTHESIS + SPACE +
-                getSmallCase(YANG_AUGMENTED_INFO) + CLOSE_PARENTHESIS
-                + PERIOD + "isFilterContentMatch" + OPEN_PARENTHESIS +
-                getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + CLOSE_PARENTHESIS +
-                CLOSE_PARENTHESIS +
+                getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + GET_CLASS +
+                CLOSE_PARENTHESIS + SEMI_COLAN +
+                NEW_LINE + TWELVE_SPACE_INDENTATION
+                + BOOLEAN_DATA_TYPE + SPACE + FILTER_CONTENT_MATCH + SPACE + EQUAL + SPACE + FALSE + SEMI_COLAN
+                + NEW_LINE + TWELVE_SPACE_INDENTATION + TRY + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
+                SIXTEEN_SPACE_INDENTATION +
+                FILTER_CONTENT_MATCH + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS
+                + BOOLEAN_DATA_TYPE + CLOSE_PARENTHESIS + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + PERIOD +
+                GET_CLASS + NEW_LINE + TWENTY_SPACE_INDENTATION + PERIOD + GET_METHOD
+                + OPEN_PARENTHESIS + QUOTES + FILTER_CONTENT_MATCH + QUOTES + COMMA + SPACE + OBJECT_STRING + PERIOD
+                + CLASS + CLOSE_PARENTHESIS + PERIOD + INVOKE + OPEN_PARENTHESIS + getSmallCase(YANG_AUGMENTED_INFO) +
+                NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION + PERIOD + GET_CLASS + COMMA + SPACE +
+                getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO)
+                + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
+                + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + CATCH + OPEN_PARENTHESIS
+                + NO_SUCH_METHOD_EXCEPTION + " | " + INVOCATION_TARGET_EXCEPTION + " | " + ILLEGAL_ACCESS_EXCEPTION +
+                SPACE + EXCEPTION_VAR + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
+                + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
+                + CLOSE_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION
+                + IF + OPEN_PARENTHESIS + NOT + FILTER_CONTENT_MATCH + CLOSE_PARENTHESIS +
                 SPACE + OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + FALSE +
                 SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
                 + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
     }
 
-    /**
-     * Returns implementation of get base class method for op param files.
-     *
-     * @param baseClassName base class name
-     * @return implementation of get base class method for op param files
-     */
-    public static String getBaseClassMethodImpl(String baseClassName) {
-        return NEW_LINE + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + CLASS_STRING +
-                DIAMOND_OPEN_BRACKET +
-                QUESTION_MARK +
-                DIAMOND_CLOSE_BRACKET + SPACE + GET_METHOD_PREFIX + BASE_CLASS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
-                EIGHT_SPACE_INDENTATION + RETURN + SPACE + baseClassName + PERIOD + CLASS + SEMI_COLAN + NEW_LINE +
-                FOUR_SPACE_INDENTATION +
-                CLOSE_CURLY_BRACKET;
-
-    }
-
     /*
-     * Retruns omit null value string.
+     * Returns omit null value string.
      *
      * @return omit null value string
      */
-    public static String getOmitNullValueString() {
+    static String getOmitNullValueString() {
         return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
     }
 
@@ -1090,7 +1036,7 @@
      *
      * @return to string method close string
      */
-    public static String getToStringMethodClose() {
+    static String getToStringMethodClose() {
         return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
                 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
     }
@@ -1115,7 +1061,7 @@
      * @param pluginConfig plugin configurations
      * @return from string method's open string
      */
-    public static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
+    static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
         return getJavaDoc(FROM_METHOD, className, false, pluginConfig) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
                 + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
                 + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
@@ -1127,7 +1073,7 @@
      *
      * @return from string method's close string
      */
-    public static String getFromStringMethodClose() {
+    static String getFromStringMethodClose() {
         return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
                 CLOSE_CURLY_BRACKET + NEW_LINE;
     }
@@ -1153,7 +1099,7 @@
      *
      * @return sub string with try statement for union's from string method
      */
-    public static String getTrySubString() {
+    private static String getTrySubString() {
         return TRY + SPACE + OPEN_CURLY_BRACKET;
     }
 
@@ -1162,7 +1108,7 @@
      *
      * @return sub string with return statement for union's from string method
      */
-    public static String getReturnOfSubString() {
+    private static String getReturnOfSubString() {
         return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
     }
 
@@ -1171,7 +1117,7 @@
      *
      * @return sub string with catch statement for union's from string method
      */
-    public static String getCatchSubString() {
+    private static String getCatchSubString() {
         return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
                 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
     }
@@ -1227,10 +1173,11 @@
      *
      * @return hash code method open string
      */
-    public static String getHashCodeMethodOpen() {
+    static String getHashCodeMethodOpen() {
         return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
-                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
-                + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
+                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
+                EIGHT_SPACE_INDENTATION
+                + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS + SPACE;
     }
 
     /**
@@ -1239,10 +1186,11 @@
      * @param hashcodeString hash code string
      * @return to hash code method close string
      */
-    public static String getHashCodeMethodClose(String hashcodeString) {
+    static String getHashCodeMethodClose(String hashcodeString) {
         hashcodeString = trimAtLast(hashcodeString, COMMA);
         hashcodeString = trimAtLast(hashcodeString, SPACE);
-        return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
+        return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET
                 + NEW_LINE;
     }
 
@@ -1262,8 +1210,9 @@
      * @param className class name
      * @return equals method open string
      */
-    public static String getEqualsMethodOpen(String className) {
-        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
+    static String getEqualsMethodOpen(String className) {
+        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE +
+                EQUALS_STRING
                 + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
                 + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
     }
@@ -1298,7 +1247,7 @@
      * @param equalMethodString equal method string
      * @return equals method close string
      */
-    public static String getEqualsMethodClose(String equalMethodString) {
+    static String getEqualsMethodClose(String equalMethodString) {
         equalMethodString = trimAtLast(equalMethodString, AND);
         equalMethodString = trimAtLast(equalMethodString, AND);
         equalMethodString = trimAtLast(equalMethodString, SPACE);
@@ -1329,7 +1278,7 @@
      * @param attr attribute info
      * @return of method string
      */
-    public static String getOfMethod(String name, JavaAttributeInfo attr) {
+    static String getOfMethod(String name, JavaAttributeInfo attr) {
 
         String attrQualifiedType = getReturnType(attr);
 
@@ -1399,7 +1348,7 @@
      * @param generatedJavaClassName class name
      * @param pluginConfig           plugin config
      * @param type                   conflict validate type
-     * @param addFirst               whether int came first or uint came first
+     * @param addFirst               whether int came first or uInt came first
      * @return string and java doc for constructor of type class
      */
     public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr1, JavaAttributeInfo
@@ -1460,7 +1409,7 @@
             name1 = attr2;
             name2 = attr1;
         }
-        constructor = constructor + ifConditionForIntInTypeDefConstrcutor(validatorType, addInt) +
+        constructor = constructor + ifConditionForIntInTypeDefConstructor(validatorType, addInt) +
                 TWELVE_SPACE_INDENTATION + THIS + PERIOD
                 + name1 + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
                 + CLOSE_CURLY_BRACKET + SPACE + ELSE + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION
@@ -1473,13 +1422,24 @@
     }
 
     /**
+     * Returns interface of add augmentation.
+     *
+     * @return interface of add augmentation
+     */
+    static String getAddAugmentInfoMethodInterface() {
+        return generateForAddAugmentation() + FOUR_SPACE_INDENTATION + VOID + SPACE +
+                ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + VALUE + COMMA +
+                SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+    }
+
+    /**
      * Returns implementation of add augmentation.
      *
      * @return implementation of add augmentation
      */
     static String getAddAugmentInfoMethodImpl() {
-        return NEW_LINE + generateForAddAugmentation() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
-                ADD_STRING + AUGMENTED_INFO + OPEN_PARENTHESIS + YANG_AUGMENTED_INFO + SPACE + VALUE + COMMA +
+        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
+                ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + VALUE + COMMA +
                 SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
                 NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + PUT +
                 OPEN_PARENTHESIS + CLASS + OBJECT_STRING + COMMA + SPACE + VALUE +
@@ -1488,15 +1448,25 @@
     }
 
     /**
-     * Returns implementation of get augment info.
+     * Returns interface of get YANG augment info.
      *
-     * @return implementation of get augment info
+     * @return interface of get YANG augment info
      */
-    static String getAugmentInfoImpl() {
+    static String getYangAugmentInfoInterface() {
+        return generateForGetAugmentation() + FOUR_SPACE_INDENTATION + OBJECT_STRING + SPACE +
+                getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
+                CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+    }
 
-        return generateForGetAugmentation() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
-                YANG_AUGMENTED_INFO + SPACE + GET_METHOD_PREFIX +
-                AUGMENTED_INFO + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
+    /**
+     * Returns implementation of get YANG augment info.
+     *
+     * @return implementation of get YANG augment info
+     */
+    static String getYangAugmentInfoImpl() {
+        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
+                OBJECT_STRING + SPACE +
+                getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
                 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
                 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + GET + OPEN_PARENTHESIS + CLASS +
                 OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
@@ -1504,17 +1474,29 @@
     }
 
     /**
-     * Returns implementation of get augment info.
+     * Returns implementation of get YANG augment info.
      *
-     * @return implementation of get augment info
+     * @return implementation of get YANG augment info
      */
-    static String getAugmentInfoMapImpl(YangPluginConfig pluginConfig) {
-
+    static String getYangAugmentInfoMapInterface(YangPluginConfig pluginConfig) {
         return getJavaDoc(GETTER_METHOD, getSmallCase(YANG_AUGMENTED_INFO) + MAP, false, pluginConfig)
+                + FOUR_SPACE_INDENTATION + MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET +
+                QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET +
+                SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
+                CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+    }
+
+    /**
+     * Returns implementation of get YANG augment info.
+     *
+     * @return implementation of get YANG augment info
+     */
+    static String getYangAugmentInfoMapImpl() {
+        return getOverRideString()
                 + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
                 MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET + QUESTION_MARK +
-                DIAMOND_CLOSE_BRACKET + COMMA + SPACE + YANG_AUGMENTED_INFO + DIAMOND_CLOSE_BRACKET + SPACE +
-                GET_METHOD_PREFIX + YANG_AUGMENTED_INFO + MAP + OPEN_PARENTHESIS +
+                DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET + SPACE +
+                getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
                 CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
                 RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + SEMI_COLAN + NEW_LINE
                 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
@@ -1526,7 +1508,7 @@
      * @param className enum's class name
      * @return enum's constructor
      */
-    public static String getEnumsConstructor(String className) {
+    static String getEnumsConstructor(String className) {
         return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
                 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
                 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
@@ -1542,9 +1524,9 @@
      * @param pluginConfig plugin configurations
      * @return of method
      */
-    public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
-                                          Map<String, Integer> enumMap, List<String> enumList,
-                                          YangPluginConfig pluginConfig) {
+    static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
+                                   Map<String, Integer> enumMap, List<String> enumList,
+                                   YangPluginConfig pluginConfig) {
         String attrType = getReturnType(attr);
         String attrName = attr.getAttributeName();
 
@@ -1553,7 +1535,7 @@
                 + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
                 + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
                 + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
-        int value = 0;
+        int value;
         for (String str : enumList) {
 
             value = enumMap.get(str);
@@ -1570,42 +1552,13 @@
     }
 
     /**
-     * Returns activate method string.
-     *
-     * @return activate method string
-     */
-    public static String addActivateMethod() {
-        return FOUR_SPACE_INDENTATION + ACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
-                + PUBLIC + SPACE + VOID + SPACE + ACTIVATE + OPEN_PARENTHESIS
-                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
-                + NEW_LINE + EIGHT_SPACE_INDENTATION
-                + YANG_UTILS_TODO
-                + NEW_LINE + EIGHT_SPACE_INDENTATION
-                + STARTED_LOG_INFO + FOUR_SPACE_INDENTATION
-                + CLOSE_CURLY_BRACKET + NEW_LINE;
-    }
-
-    /**
-     * Returns deactivate method string.
-     *
-     * @return deactivate method string
-     */
-    public static String addDeActivateMethod() {
-        return NEW_LINE + FOUR_SPACE_INDENTATION + DEACTIVATE_ANNOTATION + FOUR_SPACE_INDENTATION
-                + PUBLIC + SPACE + VOID + SPACE + DEACTIVATE + OPEN_PARENTHESIS
-                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
-                + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION
-                + STOPPED_LOG_INFO + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
-    }
-
-    /**
      * Returns from string method parsed string.
      *
      * @param targetDataType target data type
      * @param yangType       YANG type
      * @return parsed string
      */
-    public static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
+    private static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
 
         YangDataTypes type = yangType.getDataType();
 
@@ -1629,7 +1582,6 @@
             case DECIMAL64:
                 return NEW + SPACE + BIG_DECIMAL;
             case STRING:
-                return EMPTY_STRING;
             case IDENTITYREF:
                 return EMPTY_STRING;
             case EMPTY:
@@ -1646,22 +1598,6 @@
     }
 
     /**
-     * Returns the constructor strings for class file.
-     *
-     * @param attr         attribute info
-     * @param pluginConfig plugin configurations
-     * @return constructor for class
-     */
-    public static String getAugmentedConstructor(JavaAttributeInfo attr, YangPluginConfig pluginConfig) {
-
-        String attributeName = getCamelCase(attr.getAttributeName(), pluginConfig.getConflictResolver());
-
-        return EIGHT_SPACE_INDENTATION + THIS + PERIOD + attributeName + OPEN_PARENTHESIS
-                + VALUE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
-                + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
-    }
-
-    /**
      * Returns augmented data getter and setter methods for service class.
      *
      * @param parent parent node
@@ -1688,11 +1624,9 @@
             }
             returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
             parentName = getParentNodeNameForDataMethods(augmentedNode, pluginConfig);
-            method = getJavaDoc(GETTER_METHOD, getSmallCase(AUGMENTED + parentName + curNodeName), false,
-                    pluginConfig) + getGetterForInterface(AUGMENTED + parentName
-                            + getCapitalCase(curNodeName),
-                    returnType, false, GENERATE_SERVICE_AND_MANAGER)
-                    + NEW_LINE;
+            method = generateForGetMethodWithAttribute(returnType)
+                    + getGetMethodWithArgument(returnType, AUGMENTED + parentName
+                    + getCapitalCase(curNodeName)) + NEW_LINE;
             methods.append(method);
 
             method = getJavaDoc(MANAGER_SETTER_METHOD, AUGMENTED +
@@ -1707,54 +1641,12 @@
     }
 
     /**
-     * Returns augmented data getter and setter methods for manager class.
-     *
-     * @param parent parent node
-     * @return augmented data getter and setter methods for manager class
-     */
-    static String getAugmentsDataMethodForManager(YangNode parent) {
-        List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
-        YangNode augmentedNode;
-        String curNodeName;
-        String returnType;
-        String method;
-        StringBuilder methods = new StringBuilder();
-        String parentName;
-        YangNode methodNode;
-        YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
-        for (YangAtomicPath nodeId : targets) {
-            augmentedNode = nodeId.getResolvedNode().getParent();
-            methodNode = nodeId.getResolvedNode();
-            if (((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName() != null) {
-                curNodeName = ((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName();
-            } else {
-                curNodeName = getCapitalCase(getCamelCase(methodNode.getName(), pluginConfig
-                        .getConflictResolver()));
-            }
-            returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
-            parentName = getParentNodeNameForDataMethods(augmentedNode, pluginConfig);
-            method = getOverRideString() + getGetter(returnType, AUGMENTED
-                            + parentName + getCapitalCase(curNodeName),
-                    GENERATE_SERVICE_AND_MANAGER) + NEW_LINE;
-            methods.append(method);
-
-            method = getOverRideString() + getSetter(parentName, getSmallCase(AUGMENTED) +
-                            getCapitalCase(parentName) + getCapitalCase(curNodeName),
-                    returnType,
-                    GENERATE_SERVICE_AND_MANAGER)
-                    + NEW_LINE;
-            methods.append(method);
-        }
-        return methods.toString();
-    }
-
-    /**
      * Returns validator method for range in union class.
      *
      * @param type type
      * @return validator method for range in union class
      */
-    public static String getRangeValidatorMethodForUnion(String type) {
+    static String getRangeValidatorMethodForUnion(String type) {
         String newType;
         if (type.contentEquals(BIG_INTEGER)) {
             newType = LONG;
@@ -1790,7 +1682,7 @@
      * @param addFirst true int/long need to be added first
      * @return if condition string for typedef constructor
      */
-    private static String ifConditionForIntInTypeDefConstrcutor(ValidatorTypeForUnionTypes type, boolean addFirst) {
+    private static String ifConditionForIntInTypeDefConstructor(ValidatorTypeForUnionTypes type, boolean addFirst) {
         String condition = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + VALIDATE_RANGE + OPEN_PARENTHESIS;
 
         if (type == INT_TYPE_CONFLICT) {
@@ -1809,5 +1701,249 @@
         return condition + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
+    //Get method with arguments.
+    private static String getGetMethodWithArgument(String returnType, String yangName) {
+        return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
+                + OPEN_PARENTHESIS + returnType + OP_PARAM + SPACE + getSmallCase(returnType) + CLOSE_PARENTHESIS +
+                SEMI_COLAN;
+    }
 
+    /**
+     * Returns add to list method interface.
+     *
+     * @param attr java attribute
+     * @return add to list method interface
+     */
+    public static String getAddToListMethodInterface(JavaAttributeInfo attr) {
+        return FOUR_SPACE_INDENTATION + VOID + SPACE + ADD_STRING + getCapitalCase(TO) +
+                getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS + getReturnType(attr) + SPACE +
+                VALUE + CLOSE_PARENTHESIS + SEMI_COLAN;
+    }
+
+    /**
+     * Returns add to list method impl.
+     *
+     * @param attr java attribute
+     * @return add to list method impl
+     */
+    public static String getAddToListMethodImpl(JavaAttributeInfo attr) {
+        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING +
+                getCapitalCase(TO) + getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS +
+                getReturnType(attr) + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
+                + NEW_LINE + EIGHT_SPACE_INDENTATION + attr.getAttributeName() + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
+                + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN +
+                NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+    }
+
+    /**
+     * Returns builder method for class.
+     *
+     * @param name name of class
+     * @return builder method for class
+     */
+    static String builderMethod(String name) {
+        return NEW_LINE + generateForBuilderMethod(name) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE
+                + name + BUILDER + SPACE + getSmallCase(BUILDER) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name +
+                BUILDER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET;
+    }
+
+    /**
+     * Returns is filter content match interface.
+     *
+     * @param name name of node
+     * @return is filter content match interface
+     */
+    static String isFilterContentMatchInterface(String name) {
+        String method = "    /**\n" +
+                "     * Checks if the passed " + name + " maps the content match query condition.\n" +
+                "     *\n" +
+                "     * @param " + getSmallCase(name) + SPACE + getSmallCase(name) + SPACE + "being passed to check" +
+                " for" +
+                " content match\n" +
+                "     * @return match result\n" +
+                "     */\n";
+        return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + FILTER_CONTENT_MATCH + OPEN_PARENTHESIS
+                + name + SPACE + getSmallCase(name) + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+    }
+
+    /**
+     * Returns is value set interface.
+     *
+     * @return is value set interface
+     */
+    static String isLeafValueSetInterface() {
+        String method = "    /**\n" +
+                "     * Checks if the leaf value is set.\n" +
+                "     *\n" +
+                "     * @param leaf leaf whose value status needs to checked\n" +
+                "     * @return result of leaf value set in object\n" +
+                "     */\n";
+        return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + VALUE_LEAF_SET + OPEN_PARENTHESIS
+                + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+    }
+
+    /**
+     * Returns is select leaf set interface.
+     *
+     * @return is select leaf set interface
+     */
+    static String isSelectLeafSetInterface() {
+        String method = "    /**\n" +
+                "     * Checks if the leaf is set to be a selected leaf.\n" +
+                "     *\n" +
+                "     * @param leaf if leaf needs to be selected\n" +
+                "     * @return result of leaf value set in object\n" +
+                "     */\n";
+        return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + IS_SELECT_LEAF + OPEN_PARENTHESIS
+                + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+    }
+
+    /**
+     * Returns set select leaf set interface.
+     *
+     * @param name node name
+     * @return set select leaf set interface
+     */
+    static String setSelectLeafSetInterface(String name) {
+        String method = "    /**\n" +
+                "     * Set a leaf to be selected.\n" +
+                "     *\n" +
+                "     * @param leaf leaf needs to be selected\n" +
+                "     */\n";
+        return method + FOUR_SPACE_INDENTATION + name + BUILDER + SPACE + SET_SELECT_LEAF + OPEN_PARENTHESIS
+                + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+    }
+
+    /**
+     * Returns leaf identifier interface enum signature.
+     *
+     * @param name name of node
+     * @return leaf identifier interface enum signature
+     */
+    static String getInterfaceLeafIdEnumSignature(String name) {
+        String start = "    /**\n" +
+                "     * Identify the leaf of " + name + PERIOD + NEW_LINE +
+                "     */\n";
+        return start + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE + LEAF_IDENTIFIER + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE;
+    }
+
+    /**
+     * Returns interface leaf identifier enum method.
+     *
+     * @return interface leaf identifier enum method
+     */
+    static String getInterfaceLeafIdEnumMethods() {
+        return "        private int leafIndex;\n" +
+                "\n" +
+                "        public int getLeafIndex() {\n" +
+                "            return leafIndex;\n" +
+                "        }\n" +
+                "\n" +
+                "        LeafIdentifier(int value) {\n" +
+                "            this.leafIndex = value;\n" +
+                "        }\n" +
+                "    }\n";
+    }
+
+    /**
+     * Returns getter methods for operation attributes.
+     *
+     * @return getter methods for operation attributes
+     */
+    static String getOperationAttributesGetters() {
+        return "\n" +
+                "    /**\n" +
+                "     * Returns the _valueLeafFlags.\n" +
+                "     *\n" +
+                "     * @return value of _valueLeafFlags\n" +
+                "     */\n" +
+                "    public BitSet get_valueLeafFlags() {\n" +
+                "        return _valueLeafFlags;\n" +
+                "    }\n" +
+                "\n" +
+                "    /**\n" +
+                "     * Returns the _selectLeafFlags.\n" +
+                "     *\n" +
+                "     * @return value of _selectLeafFlags\n" +
+                "     */\n" +
+                "    public BitSet get_selectLeafFlags() {\n" +
+                "        return _selectLeafFlags;\n" +
+                "    }\n" +
+                "\n";
+    }
+
+    /**
+     * Returns getter for operation type.
+     *
+     * @return getter for operation type
+     */
+    static String getGetterForOperationType() {
+        return "    /**\n" +
+                "     * Returns the _operationType.\n" +
+                "     *\n" +
+                "     * @return value of _operationType\n" +
+                "     */\n" +
+                "    public OperationType get_operationType() {\n" +
+                "        return _operationType;\n" +
+                "    }\n";
+    }
+
+    /**
+     * Returns getters for value and select leaf.
+     *
+     * @return getters for value and select leaf
+     */
+    static String getGettersForValueAndSelectLeaf() {
+        return "\n" +
+                "    @Override\n" +
+                "    public boolean isLeafValueSet(LeafIdentifier leaf) {\n" +
+                "        return get_valueLeafFlags().get(leaf.getLeafIndex());\n" +
+                "    }\n" +
+                "\n" +
+                "    @Override\n" +
+                "    public boolean isSelectLeaf(LeafIdentifier leaf) {\n" +
+                "        return get_selectLeafFlags().get(leaf.getLeafIndex());\n" +
+                "    }\n";
+    }
+
+    /**
+     * Returns setter for operation type.
+     *
+     * @param name name of node
+     * @return setter for operation type
+     */
+    static String getSetterForOperationType(String name) {
+        return "    /**\n" +
+                "     * Set operation type.\n" +
+                "     *\n" +
+                "     * @param _operationType operation type\n" +
+                "     */\n" +
+                "    public " + name + BUILDER + " set_operationType(OperationType _operationType) {\n" +
+                "       this._operationType = _operationType;\n" +
+                "        return this;\n" +
+                "    }\n";
+    }
+
+    /**
+     * Returns setter for select leaf.
+     *
+     * @param name       name of node
+     * @param isRootNode if root node
+     * @return setter for select leaf
+     */
+    static String getSetterForSelectLeaf(String name, boolean isRootNode) {
+        String append = OVERRIDE;
+        if (isRootNode) {
+            append = EMPTY_STRING;
+        }
+        return "\n" +
+                "    " + append + "\n" +
+                "    public " + name + BUILDER + " selectLeaf(LeafIdentifier leaf) {\n" +
+                "        get_selectLeafFlags().set(leaf.getLeafIndex());\n" +
+                "        return this;\n" +
+                "    }\n";
+    }
 }