aspect BoundNames { public Access FieldDeclaration.createQualifiedBoundAccess() { return new FieldDot( new ThisAccess(new List(), new IdUse("this")), new BoundFieldAccess(this) ); } // A BoundMethodAccess is a MethodAccess where the name analysis is bypassed by explicitly setting the desired binding // this is useful when name binding is cached and recomputation is undesired public BoundMethodAccess.BoundMethodAccess(String name, List args, MethodDecl methodDecl) { this(args, new IdUse(name)); this.methodDecl = methodDecl; } private MethodDecl BoundMethodAccess.methodDecl; eq BoundMethodAccess.decl() = methodDecl; public BoundFieldAccess.BoundFieldAccess(FieldDeclaration f) { this(new IdUse(f.name()), f); } eq BoundFieldAccess.decl() = getFieldDeclaration(); public boolean BoundFieldAccess.isExactVarAccess() { return false; } }