- public Topology<V> complement() { /*return dup(hs.complement());*/ throw new Error(); }
- public Topology<V> intersect(Topology<V> t) { return new DiscreteTopology(hs().retainAll(((DiscreteTopology<V>)t).hs)); }
- public Topology<V> minus(Topology<V> t) { return new DiscreteTopology(hs().removeAll(((DiscreteTopology<V>)t).hs)); }
- public Topology<V> union(Topology<V> t) { return new DiscreteTopology(hs().addAll(((DiscreteTopology<V>)t).hs)); }
- public boolean disjoint(Topology<V> t) { return ((DiscreteTopology)intersect(t)).size()==0; }
- public boolean containsAll(Topology<V> t) { return hs.containsAll(((DiscreteTopology<V>)t).hs); }
+ public Topology<V> unwrap() { return this; }
+ public Topology<V> complement() { throw new Error(); }
+ public Topology<V> intersect(Topology<V> t) { return new DiscreteTopology(hs().retainAll(((DiscreteTopology<V>)t.unwrap()).hs)); }
+ public Topology<V> minus(Topology<V> t) { return new DiscreteTopology(hs().removeAll(((DiscreteTopology<V>)t.unwrap()).hs)); }
+ public Topology<V> union(Topology<V> t) { return new DiscreteTopology(hs().addAll(((DiscreteTopology<V>)t.unwrap()).hs)); }
+ public boolean disjoint(Topology<V> t) { return ((DiscreteTopology)intersect(t).unwrap()).size()==0; }
+ public boolean containsAll(Topology<V> t) { return hs.containsAll(((DiscreteTopology<V>)t.unwrap()).hs); }