sclass Thoughts { new LinkedHashSet statements; new MultiMap statementsByHead; bool add(Lisp statement) { if (statement == null) false; bool isNew = statements.add(statement); if (isNew) statementsByHead.put(statement.head, statement); ret isNew; } // assumes s is a global ID bool has(S s) { assertPossibleGlobalID(s); ret statements.contains(lisp(s)); } }