sclass Element { double weight; } sclass ChooseCategory extends Element { AI_BottomUpParser1.Word word; L categories; *(AI_BottomUpParser1.Word *word, L *categories) {} toString { ret word.text() + " (" + n2(categories, "category", "categories") + ")"; } } sclass HaveCategory extends Element { AI_BottomUpParser1.Word word; S category; *(AI_BottomUpParser1.Word *word, S *category) {} toString { ret quote(word.text()) + " as " + category; } } sclass ChoosePart extends Element { ai_Reconstructed reconstruction; *(ai_Reconstructed *reconstruction) {} toString { ret reconstruction.a.text() + " + " + reconstruction.b.text(); } }