@Override
    void verify(final Traversal.Admin<?, ?> traversal) throws VerificationException {
        for (final Step<?, ?> step : traversal.getSteps()) {
            if (step instanceof AddVertexStep || step instanceof AddVertexStartStep ||
                step instanceof AddEdgeStartStep || step instanceof AddEdgeStep ||
                step instanceof AddPropertyStep) {
                final Parameterizing propertySettingStep = (Parameterizing) step;
                final Parameters params = propertySettingStep.getParameters();
                for (String key : reservedKeys) {
                    if (params.contains(key)) {
                        final String msg = String.format(
                                "The provided traversal contains a %s that is setting a property key to a reserved" +
                                        " word: %s", propertySettingStep.getClass().getSimpleName(), key);
                        throw new VerificationException(msg, traversal);
                    }
                }
            }
        }
    }
This verification strategy detects property keys that should not be used by the traversal. A term may be reserved
by a particular graph implementation or as a convention given best practices.

@author Stephen Mallette (http://stephen.genoprime.com)
 * @example <pre>
 * __.addV("person").property("id", 123)           // throws an IllegalStateException
 * __.addE("knows").property("label", "green")     // throws an IllegalStateException
 * </pre>
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReservedKeysVerificationStrategy.java