@Override
        public TraversalExplanation deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
            final Map<String, Object> explainData = deserializationContext.readValue(jsonParser, Map.class);
            final String originalTraversal = explainData.get(GraphSONTokens.ORIGINAL).toString();
            final List<Triplet<String, String, String>> intermediates = new ArrayList<>();
            final List<Map<String,Object>> listMap = (List<Map<String,Object>>) explainData.get(GraphSONTokens.INTERMEDIATE);
            for (Map<String,Object> m : listMap) {
                intermediates.add(Triplet.with(m.get(GraphSONTokens.STRATEGY).toString(),
                        m.get(GraphSONTokens.CATEGORY).toString(),
                        m.get(GraphSONTokens.TRAVERSAL).toString()));
            }

            return new ImmutableExplanation(originalTraversal, intermediates);
        }
Maps in the JVM can have {@link Object} as a key, but in JSON they must be a {@link String}.
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2.java