protected Object convertMapsToObjects(final JsonObject<String, Object> root) {
    """
	Walk a JsonObject (Map of String keys to values) and return the
	Java object equivalent filled in as best as possible (everything
	except unresolved reference fields or unresolved array/collection elements).
	
	@param root JsonObject reference to a Map-of-Maps representation of the JSON
	input after it has been completely read.
	@return Properly constructed, typed, Java object graph built from a Map
	of Maps representation (JsonObject root).
    """
        final Deque<JsonObject<String, Object>> stack = new ArrayDeque<JsonObject<String, Object>>();
        stack.addFirst(root);

        while (!stack.isEmpty())
        {
            final JsonObject<String, Object> jsonObj = stack.removeFirst();

            if (jsonObj.isArray())
            {
                traverseArray(stack, jsonObj);
            }
            else if (jsonObj.isCollection())
            {
                traverseCollection(stack, jsonObj);
            }
            else if (jsonObj.isMap())
            {
                traverseMap(stack, jsonObj);
            }
            else
            {
                Object special;
                if ((special = readIfMatching(jsonObj, null, stack)) != null)
                {
                    jsonObj.target = special;
                }
                else
                {
                    traverseFields(stack, jsonObj);
                }
            }
        }
        return root.target;
    }
protected Object convertMapsToObjects(final JsonObject<String, Object> root)
    {
        final Deque<JsonObject<String, Object>> stack = new ArrayDeque<JsonObject<String, Object>>();
        stack.addFirst(root);

        while (!stack.isEmpty())
        {
            final JsonObject<String, Object> jsonObj = stack.removeFirst();

            if (jsonObj.isArray())
            {
                traverseArray(stack, jsonObj);
            }
            else if (jsonObj.isCollection())
            {
                traverseCollection(stack, jsonObj);
            }
            else if (jsonObj.isMap())
            {
                traverseMap(stack, jsonObj);
            }
            else
            {
                Object special;
                if ((special = readIfMatching(jsonObj, null, stack)) != null)
                {
                    jsonObj.target = special;
                }
                else
                {
                    traverseFields(stack, jsonObj);
                }
            }
        }
        return root.target;
    }
protected Object convertMapsToObjects ( final JsonObject < String , Object > root ) { final Deque < JsonObject < String , Object > > stack = new ArrayDeque < JsonObject < String , Object > > ( ) ; stack . addFirst ( root ) ; while ( ! stack . isEmpty ( ) ) { final JsonObject < String , Object > jsonObj = stack . removeFirst ( ) ; if ( jsonObj . isArray ( ) ) { traverseArray ( stack , jsonObj ) ; } else if ( jsonObj . isCollection ( ) ) { traverseCollection ( stack , jsonObj ) ; } else if ( jsonObj . isMap ( ) ) { traverseMap ( stack , jsonObj ) ; } else { Object special ; if ( ( special = readIfMatching ( jsonObj , null , stack ) ) != null ) { jsonObj . target = special ; } else { traverseFields ( stack , jsonObj ) ; } } } return root . target ; }
Walk a JsonObject (Map of String keys to values) and return the
Java object equivalent filled in as best as possible (everything
except unresolved reference fields or unresolved array/collection elements).

@param root JsonObject reference to a Map-of-Maps representation of the JSON
input after it has been completely read.
@return Properly constructed, typed, Java object graph built from a Map
of Maps representation (JsonObject root).
Walk a JsonObject ( Map of String keys to values ) and return the Java object equivalent filled in as best as possible ( everything except unresolved reference fields or unresolved array / collection elements ) .