!7 static withToList record Did$HappenBefore$(O event1, O event2) {} static withToList record WhenDid$Happen(O event) {} static withToList record $HappensAtSecond$(O event, O y) {} static ClassesAndPatterns classes; sO parseArg(S s) { ret isInteger(s) ? parseInt(s) : s; } sO parse(S s) { ret classes.parse(s, a -> parseArg(a)); } sS unparse(O o) { ret classes.unparse(o); } p-exp { classes = new ClassesAndPatterns(myRecordClasses(), mc()); pnl(classes.entries); for (S s : ll( "Did X happen before Y?", "when did Z happen", "{event 1} happens at second 100")) assertEqualsICVerbose(s, unparse(parse(s))); }