001    
002    aspect TypeAnalysis {
003    
004         eq MethodDecl.type() = getType().decl().type();
005         
006         eq MethodUse.isValue() = true;
007         
008         inh ClassDecl MethodDecl.enclosingClassDecl();
009         eq ClassDecl.getBody().enclosingClassDecl() = this;
010        eq Program.getChild().enclosingClassDecl() = null;
011        syn boolean MethodDecl.hasEnclosingClass() = enclosingClassDecl() != null;
012        
013        
014        /*
015        syn MethodDecl MethodDecl.superMethod() {
016                if (hasEnclosingClass()) {
017                        ClassDecl classDecl = enclosingClassDecl();
018                        if (classDecl.hasSuperclass()) {
019                                ClassDecl superClass = classDecl.superClass();
020                                return superClass.remoteLookupMethod(getName(), getParamDeclList());
021                        }
022                }
023                return null;    
024        }
025        */
026        
027    }