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(); toString { ret position() + "@" + triple; } }