private static Graph open(final Configuration configuration, final Class<?> graphFactoryClass)
    {
        final Graph g;
        try {
            // will use open(Configuration c) to instantiate
            g = (Graph) graphFactoryClass.getMethod("open", Configuration.class).invoke(null, configuration);
        } catch (final NoSuchMethodException e1) {
            throw new RuntimeException(String.format("GraphFactory can only instantiate Graph implementations from classes that have a static open() method that takes a single Apache Commons Configuration argument - [%s] does not seem to have one", graphFactoryClass));
        } catch (final Exception e2) {
            throw new RuntimeException(String.format("GraphFactory could not instantiate this Graph implementation [%s]", graphFactoryClass), e2);
        }
        return g;
    }
Open a graph.  See each {@link Graph} instance for its configuration options.

@param configuration A configuration object that specifies the minimally required properties for a
                     {@link Graph} instance. This minimum is determined by the
                     {@link Graph} instance itself.
@return A {@link Graph} instance.
@throws IllegalArgumentException if {@code configuration}
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/GraphFactory.java