!7 sclass Entry { S line; S ruleID; S varMap; S judgement; S matchedRuleStruct; S context; } cmodule SearchForStatements > DynObjectTable { transient ReliableSingleThread rstSearch = dm_rst(this, r search); start { } visualize { ret withCenteredButtons(super.visualize(), "Search", rstSearch); } void search { new L list; GazelleEvalContext ctx = dm_gazelle_stdEvalContext(dm_gazelle_rulesOnFacts()); pcall { for (GazelleTree t : gazelle_getChildren(GazelleTree(ctx, "john doe is a guy"))) pcall { list.add(nu Entry( line := t.parent.line, varMap := struct(t.varMap()), ruleID := t.rule().ruleID)); } } setList(list); } }