aspect SpecializeStaticVirtualCalls { syn boolean MethodAccess.isExactMethodAccess() = true; eq StaticMethodAccess.isExactMethodAccess() = false; eq VirtualMethodAccess.isExactMethodAccess() = false; rewrite MethodAccess { when (isExactMethodAccess() && decl().isStatic()) to StaticMethodAccess new StaticMethodAccess(getID(), getArgList()); when (isExactMethodAccess() && !decl().isStatic()) to VirtualMethodAccess new VirtualMethodAccess(getID(), getArgList()); } }