@Override
    protected void sideEffect(final Traverser.Admin<Edge> traverser) {
        parentGraphFeatures = ((Graph) traversal.getGraph().get()).features().vertex();
        if (null == subgraph) {
            subgraph = traverser.sideEffects(sideEffectKey);
            if (!subgraph.features().vertex().supportsUserSuppliedIds() || !subgraph.features().edge().supportsUserSuppliedIds())
                throw new IllegalArgumentException("The provided subgraph must support user supplied ids for vertices and edges: " + this.subgraph);
        }

        subgraphSupportsMetaProperties = subgraph.features().vertex().supportsMetaProperties();

        addEdgeToSubgraph(traverser.get());
    }
A side-effect step that produces an edge induced subgraph.

@author Stephen Mallette (http://stephen.genoprime.com)
@author Marko A. Rodriguez (http://markorodriguez.com)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphStep.java