code: protected Object convertParsedMapsToJava(JsonObject root)
      {
          try
          {
              Resolver resolver = useMaps() ? new MapResolver(this) : new ObjectResolver(this, (ClassLoader)args.get(CLASSLOADER));
              resolver.createJavaObjectInstance(Object.class, root);
              Object graph = resolver.convertMapsToObjects((JsonObject<String, Object>) root);
              resolver.cleanup();
              readers.clear();
              return graph;
          }
          catch (Exception e)
          {
              try
              {
                  close();
              }
              catch (Exception ignored)
              {   // Exception handled in close()
              }
              if (e instanceof JsonIoException)
              {
                  throw (JsonIoException)e;
              }
              throw new JsonIoException(getErrorMessage(e.getMessage()), e);
          }
      }
docs: This method converts a root Map, (which contains nested Maps
  and so forth representing a Java Object graph), to a Java
  object instance.  The root map came from using the JsonReader
  to parse a JSON graph (using the API that puts the graph
  into Maps, not the typed representation).
  @param root JsonObject instance that was the root object from the
  JSON input that was parsed in an earlier call to JsonReader.
  @return a typed Java instance that was serialized into JSON.