CompositeNode<R> root = new CompositeNode<>("ROOT", Constants.DEFAULT_MATCH, null,
                 new HashMap<Object, Node<R>>());
 
-        if (logger.isDebugEnabled()) {
-            logger.debug(String.format("Building decision tree for ranked attributes: %s", config.getRankedAttributeNames()));
-        }
+        logDebugWhenEnabled(String.format("Building decision tree for ranked attributes: %s", config.getRankedAttributeNames()));
 
         for (ConfigurationEntry<R> entry : config.getEntries()) {
             process(entry, names, root);
     }
 
     private static <R> void process(ConfigurationEntry<R> entry, Object[] names, CompositeNode<R> root) {
-        CompositeNode<R> parentNode = null;
+        CompositeNode<R> parentNode = root;
         for (int i = 0; i < names.length; i++) {
 
-            if (i == 0) {
-                parentNode = root;
-            }
-
             final String name = (String) names[i];
 
             final Object value = value(entry, name);
             } else {
                 LeafNode<R> currentNode = (LeafNode<R>) parentNode.children().get(value);
                 if (currentNode == null) {
-                    currentNode = new LeafNode<R>(name, value, parentNode, entry.getResult());
+                    currentNode = new LeafNode<>(name, value, parentNode, entry.getResult());
                     parentNode.children().put(value, currentNode);
 
-                    if (logger.isDebugEnabled()) {
-                        logger.debug(String.format("Branch has been created: %s", currentNode));
-                    }
+                    logDebugWhenEnabled(String.format("Branch has been created: %s", currentNode));
                 } else {
                     logger.error(
                             String.format("Duplicated configuration entry has been detected for attribute '%s' with value '%s' - the node '%s'exists already",
         }
     }
 
+    private static void logDebugWhenEnabled(String message) {
+        if(logger.isDebugEnabled()) {
+            logger.debug(message);
+        }
+    }
+
     private static <R> Object value(ConfigurationEntry<R> entry, String name) {
         Object value = entry.getAttributeValue(name);
         return Utils.value(value);