/**
  * Instantiates the given Filter class and performs any required resource injection into the new
  * Filter instance before returning it.
  */
 @Override
 @SuppressWarnings("unchecked") // doPrivileged() returns the correct type
 public <T extends Filter> T createFilter(Class<T> clazz) throws ServletException {
   if (SecurityUtil.isPackageProtectionEnabled()) {
     return (T) doPrivileged("createFilter", new Object[] {clazz});
   } else {
     return context.createFilter(clazz);
   }
 }