@Override
    public P<V> or(final Predicate<? super V> predicate) {
        if (!(predicate instanceof P))
            throw new IllegalArgumentException("Only P predicates can be or'd together");
        else if (predicate instanceof OrP)
            this.predicates.addAll(((OrP) predicate).getPredicates());
        else
            this.predicates.add((P<V>) predicate);
        return this;
    }
@author Marko A. Rodriguez (http://markorodriguez.com)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/OrP.java