@Override
 @SuppressWarnings("unchecked")
 // doPrivileged() returns the correct type
 public <T extends Filter> T createFilter(Class<T> c) throws ServletException {
   if (SecurityUtil.isPackageProtectionEnabled()) {
     try {
       return (T) invokeMethod(context, "createFilter", new Object[] {c});
     } catch (Throwable t) {
       handleThrowable(t);
       if (t instanceof ServletException) {
         throw (ServletException) t;
       }
       return null;
     }
   } else {
     return context.createFilter(c);
   }
 }