@Override
 public boolean beforeMethodCall(final MethodCall call) {
   for (TypeCheckingExtension handler : handlers) {
     if (handler.beforeMethodCall(call)) return true;
   }
   return false;
 }
 @Override
 public boolean beforeVisitMethod(final MethodNode node) {
   for (TypeCheckingExtension handler : handlers) {
     if (handler.beforeVisitMethod(node)) return true;
   }
   return false;
 }
 @Override
 public boolean handleIncompatibleAssignment(
     final ClassNode lhsType, final ClassNode rhsType, final Expression assignmentExpression) {
   for (TypeCheckingExtension handler : handlers) {
     if (handler.handleIncompatibleAssignment(lhsType, rhsType, assignmentExpression)) return true;
   }
   return false;
 }
 public List<MethodNode> handleMissingMethod(
     final ClassNode receiver,
     final String name,
     final ArgumentListExpression argumentList,
     final ClassNode[] argumentTypes,
     final MethodCall call) {
   List<MethodNode> result = new LinkedList<MethodNode>();
   for (TypeCheckingExtension handler : handlers) {
     result.addAll(handler.handleMissingMethod(receiver, name, argumentList, argumentTypes, call));
   }
   return result;
 }
 @Override
 public void afterVisitMethod(final MethodNode node) {
   for (TypeCheckingExtension handler : handlers) {
     handler.afterVisitMethod(node);
   }
 }
 public boolean handleUnresolvedAttribute(final AttributeExpression aexp) {
   for (TypeCheckingExtension handler : handlers) {
     if (handler.handleUnresolvedAttribute(aexp)) return true;
   }
   return false;
 }
 public boolean handleUnresolvedProperty(final PropertyExpression pexp) {
   for (TypeCheckingExtension handler : handlers) {
     if (handler.handleUnresolvedProperty(pexp)) return true;
   }
   return false;
 }
 public boolean handleUnresolvedVariableExpression(VariableExpression vexp) {
   for (TypeCheckingExtension handler : handlers) {
     if (handler.handleUnresolvedVariableExpression(vexp)) return true;
   }
   return false;
 }
 @Override
 public void finish() {
   for (TypeCheckingExtension handler : handlers) {
     handler.finish();
   }
 }
 @Override
 public void setup() {
   for (TypeCheckingExtension handler : handlers) {
     handler.setup();
   }
 }
 @Override
 public void onMethodSelection(final Expression expression, final MethodNode target) {
   for (TypeCheckingExtension handler : handlers) {
     handler.onMethodSelection(expression, target);
   }
 }
 @Override
 public void afterMethodCall(final MethodCall call) {
   for (TypeCheckingExtension handler : handlers) {
     handler.afterMethodCall(call);
   }
 }