@Override
    public P<V> and(final Predicate<? super V> predicate) {
        if (!(predicate instanceof P))
            throw new IllegalArgumentException("Only P predicates can be and'd together");
        return new AndP<>(Arrays.asList(this, (P<V>) predicate));
    }
Gets the current value to be passed to the predicate for testing.
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java