@Override
    public JsonToken nextToken() throws IOException, JsonParseException {
        JsonToken t = this.delegate.nextToken();
        if (t != null) {
            return t;
        } else {
            do {
                if (!this.switchToNext()) {
                    return null;
                }
                // call getCurrentToken() instead of nextToken() in JsonParserSequence.
                t = this.delegate.getCurrentToken() == null
                        ? this.nextToken()
                        : this.getCurrentToken();
            } while (t == null);

            return t;
        }
    }
Utility class to easily concatenate multiple JsonParsers. This class had to be implemented because the class it is
extending, {@link JsonParserSequence}, inevitably skips a token when switching from one empty parser to a new one.
I.e. it is automatically calling {@link JsonParser#nextToken()} when switching to the new parser, ignoring
the current token.

This class is used for high performance in GraphSON when trying to detect types.

@author Kevin Gallardo (https://kgdo.me)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/JsonParserConcat.java