public static FilterExecutor resolve(final FilterChainContext context) {
   switch (context.getOperation()) {
     case READ:
       return READ_EXECUTOR;
     case WRITE:
       return WRITE_EXECUTOR;
     case ACCEPT:
       return ACCEPT_EXECUTOR;
     case CLOSE:
       return CLOSE_EXECUTOR;
     case CONNECT:
       return CONNECT_EXECUTOR;
     case EVENT:
       return (context.getFilterIdx() == FilterChainContext.NO_FILTER_INDEX
               || context.getStartIdx() <= context.getEndIdx())
           ? EVENT_UPSTREAM_EXECUTOR
           : EVENT_DOWNSTREAM_EXECUTOR;
     default:
       return null;
   }
 }