public static <V> BiDiNavigator<V> unionNav(final BiDiNavigator<V> n1, final BiDiNavigator<V> n2) {
	return new BiDiNavigator<V>() {
	    public List<V> next(V v) {
		return DSUtil.unionList(n1.next(v), n2.next(v));
	    }
	    public List<V> prev(V v) {
		return DSUtil.unionList(n1.prev(v), n2.prev(v));
	    }	    
	};
    }
public static < V > BiDiNavigator < V > unionNav ( final BiDiNavigator < V > n1 , final BiDiNavigator < V > n2 ) { return new BiDiNavigator < V > ( ) { public List < V > next ( V v ) { return DSUtil . unionList ( n1 . next ( v ) , n2 . next ( v ) ) ; } public List < V > prev ( V v ) { return DSUtil . unionList ( n1 . prev ( v ) , n2 . prev ( v ) ) ; } } ; }
Unions two <code>BiDiNavigator</code>.  For each vertex
<code>v</code>, successors/predecessors indicated by the union
navigator consist of all the successors/predecessors indicated
by <code>n1</code>, followed by all the
successors/predecessors indicated by <code>n2</code>.  Note
that the same successor/predecessor may be indicated twice,
once by <code>fn1</code> and once by <code>fn2</code>.