@Override
    void verify(final Traversal.Admin<?, ?> traversal) throws VerificationException {
        for (final Step<?, ?> step : traversal.getSteps()) {
            if (step instanceof VertexStep && ((VertexStep) step).getEdgeLabels().length == 0) {
                final String msg = String.format(
                        "The provided traversal contains a vertex step without any specified edge label: %s\nAlways " +
                                "specify edge labels which restrict traversal paths ensuring optimal performance.", step);
                throw new VerificationException(msg, traversal);
            }
        }
    }
{@code EdgeLabelVerificationStrategy} does not allow edge traversal steps to have no label specified.
Providing one or more labels is considered to be a best practice, however, TinkerPop will not force the specification
of edge labels; instead, providers or users will have to enable this strategy explicitly.
<p/>

@author Daniel Kuppitz (http://gremlin.guru)
@example <pre>
__.outE()           // throws an IllegalStateException
__.out()            // throws an IllegalStateException
__.bothE()          // throws an IllegalStateException
__.to(OUT)          // throws an IllegalStateException
__.toE(IN)          // throws an IllegalStateException
</pre>
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/EdgeLabelVerificationStrategy.java