aspect LivenessAnalysis { /* // Define the in and out attributes syn BitSet Stmt.in() circular [empty()]; eq Stmt.in() = use().union(out().compl(def())); coll BitSet Stmt.out() circular [empty().mutable()] with add root BodyDecl; Stmt contributes in() to Stmt.out() for each pred(); */ // My implementation syn BitSet CFNode.in() circular [empty()]; eq Stmt.in() = use().union(out().compl(def())); eq Expr.in() = use().union(out().compl(def())); // EN: Need equations for all node types implementing the CFNode interface eq ParameterDeclaration.in() = empty(); eq Modifiers.in() = empty(); eq TypeDecl.in() = empty(); coll BitSet CFNode.out() circular [empty().mutable()] with add root BodyDecl; Stmt contributes in() to CFNode.out() for each pred(); Expr contributes in() to CFNode.out() for each pred(); }