@Override public int hashCode() { return getSubPath().hashCode() ^ hashMulti; }
@Override public boolean equalTo(Path path2, NodeIsomorphismMap isoMap) { if ( !(path2 instanceof P_Multi) ) return false; P_Multi other = (P_Multi)path2; return getSubPath().equalTo(other.getSubPath(), isoMap); }
@Override public void visit(P_Multi path) { Path newSubPath = apply(path.getSubPath()); result = path.getSubPath() == newSubPath ? path : new P_Multi(newSubPath) ; }
@Override public Path transform(P_Multi path, Path subPath) { Path result = path.getSubPath() == subPath ? path : new P_Multi(subPath) ; return result; }
@Override public void visit(P_Multi pathMulti) { writePath(Tags.tagPathMulti, pathMulti.getSubPath()) ; }
@Override public void visit(P_Multi path) { before(path); if (path.getSubPath() != null) { path.getSubPath().visit(this); } proc.visit(path); after(path); }
@Override public void visit(P_Multi pathMulti) { out.print("MULTI(") ; pathMulti.getSubPath().visit(this) ; out.print(")") ; }
@Override public void visit(P_Multi pathMulti) { PathEngine engine2 = engine ; engine = new PathEngineN(graph, engine.direction()) ; engine.eval(pathMulti.getSubPath(), node, output) ; engine = engine2 ; }
@Override public void visit(P_Multi path) { result = new P_Multi(new P_Inverse(path.getSubPath())); }
@Override public void visit(P_Multi pathMulti) { pathMulti.getSubPath().visit(this); push(new P_Multi(pop())); }
@Override public void visit(P_Multi pathMulti) { pathMulti.getSubPath().visit(this); push(new P_Multi(pop())); }