!752 concept Node { S name; void attachPhrase(L phrase) { print(name + ": phrase=" + phrase); } } Node > Is { void attachPhrase(L phrase) { super.attachPhrase(phrase); if (eq(first(phrase), "*") && l(phrase) == 3) { S adjective = third(phrase); print(" Could call is_" + adjective); } } } static Node getNode(S name) { Node node = findConcept(Node, +name); if (node != null) ret node; Class c = Node; if (eqic(name, "is")) c = Is; ret uniq(c, +name); } p { S s = "is the_button green?"; L words = words(s); for i over words: { S word = words.get(i); Node node = getNode(word); L phrase = replaceNthItem(words, i, "*"); node.attachPhrase(phrase); } }