class RootDecl { public void compose( AstNode etree ) { // Step 1: do some error checking RootDecl rd = (RootDecl) etree; // Step 2: composition of DelivClauses is simple replacement arg[0].Replace( rd.arg[0] ); // Step 3: there is no composition of NoTransitionClauses AstNode a = rd.arg[1].arg[0]; if (a != null) AstNode.error( a.tok[0], "State machine refinement cannot " + "have a NoTransition Clause"); } }