public override IType check(Context context) { MethodFinder finder = new MethodFinder(context, this); IMethodDeclaration declaration = finder.findBest(false); if (declaration == null) { return(VoidType.Instance); } if (declaration.isAbstract()) { checkAbstractOnly(context, declaration); return(declaration.getReturnType() != null?declaration.getReturnType() : VoidType.Instance); } else { Context local = IsLocalClosure(context) ? context : selector.newLocalCheckContext(context, declaration); return(checkDeclaration(declaration, context, local)); } }