// Static Constructors //////////////////////////////////////////////////////////////////////////////
- public Sequence and(Sequence s) { Sequence ret = dup(); ret.needs.add(s); s.needed.add(ret); return ret; }
- public Sequence not(Sequence s) { Sequence ret = dup(); ret.hates.add(s); s.hated.add(ret); return ret; }
abstract Sequence _clone();
Sequence dup() {
Sequence ret = _clone();
return Atom.toAtom(elements[0]);
}
+ public Sequence and(Sequence s) { Sequence ret = dup(); ret.needs.add(s); s.needed.add(ret); return ret; }
+ public Sequence not(Sequence s) { Sequence ret = dup(); ret.hates.add(s); s.hated.add(ret); return ret; }
+
protected final Element[] elements;
final HashSet<Sequence> needed = new HashSet<Sequence>();