abstract sclass TripleRef {
Triple triple;
*() {}
*(Triple *triple) {}
A get() {
ret tripleAtPosition(triple(), position());
}
Triple triple() { ret triple; }
// 0 = a, 1 = b, 2 = c
abstract int position();
// currently compares triple with ==
public bool equals(O o) {
if (!o instanceof TripleRef) false;
ret position() == o/TripleRef.position() && triple == o/TripleRef.triple;
}
}