public void visitCatchStatement(CatchStatement statement) {
   pushState();
   Parameter p = statement.getVariable();
   p.setInStaticContext(currentScope.isInStaticContext());
   declare(p, statement);
   super.visitCatchStatement(statement);
   popState();
 }
 @Override
 public void visitCatchStatement(final CatchStatement statement) {
   pushContext(statement);
   super.visitCatchStatement(statement);
   popContext();
 }
 public void visitCatchStatement(CatchStatement cs) {
   if (!(cs.getExceptionType().isDerivedFrom(ClassHelper.make(Throwable.class)))) {
     addError("Catch statement parameter type is not a subclass of Throwable.", cs);
   }
   super.visitCatchStatement(cs);
 }
 @Override
 public final void visitCatchStatement(CatchStatement statement) {
   super.visitCatchStatement(statement);
 }