aspect AddRequiredMembers { public void TypeDecl.addRequiredMembers(java.util.Set meths, java.util.Set fds, java.util.Set mtds) { LinkedList worklist = new LinkedList(); worklist.addAll(meths); worklist.addAll(fds); worklist.addAll(mtds); while(!worklist.isEmpty()) worklist.removeFirst().addRequiredMembers(this, meths, fds, mtds); } public void ASTNode.addRequiredMembers(TypeDecl host, java.util.Set meths, java.util.Set fds, java.util.Set mtds) { for(int i=0;i meths, java.util.Set fds, java.util.Set mtds) { if(decl().isInstanceVariable() && ((FieldDeclaration)decl()).hostType() == host) fds.add((FieldDeclaration)decl().sourceVariableDecl()); super.addRequiredMembers(host, meths, fds, mtds); } public void MethodAccess.addRequiredMembers(TypeDecl host, java.util.Set meths, java.util.Set fds, java.util.Set mtds) { if(/*!decl().isStatic() &&*/ decl().hostType() == host) meths.add(decl().sourceMethodDecl()); super.addRequiredMembers(host, meths, fds, mtds); } public void TypeAccess.addRequiredMembers(TypeDecl host, java.util.Set meths, java.util.Set fds, java.util.Set mtds) { if(!decl().isStatic() && decl().getParent() instanceof MemberTypeDecl && decl().enclosingType() == host) mtds.add((MemberTypeDecl)decl().getParent()); super.addRequiredMembers(host, meths, fds, mtds); } }