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(); /*public bool equals(O o) { if (!o instanceof TripleRef) false; ret position() == o/TripleRef.position() && eq(triple, o/TripleRef.triple); }*/ }