original_string: public static function add($filter, array $options = [])
      {
          if (is_string($filter)) {
              $filter = static::_createFilter($filter, $options);
          }
          static::$_stack[] = $filter;
  
          return $filter;
      }
code: public static function add($filter, array $options = [])
      {
          if (is_string($filter)) {
              $filter = static::_createFilter($filter, $options);
          }
          static::$_stack[] = $filter;
  
          return $filter;
      }
code_tokens: public static function add ( $ filter , array $ options = [ ] ) { if ( is_string ( $ filter ) ) { $ filter = static :: _createFilter ( $ filter , $ options ) ; } static :: $ _stack [ ] = $ filter ; return $ filter ; }
docstring: Add a new middleware object to the stack of middleware
  that will be executed.
  
  Instances of filters will be re-used across all sub-requests
  in a request.
  
  @param string|\Cake\Routing\DispatcherFilter $filter Either the classname of the filter
  or an instance to use.
  @param array $options Constructor arguments/options for the filter if you are using a string name.
  If you are passing an instance, this argument will be ignored.
  @return \Cake\Routing\DispatcherFilter
docstring_tokens: Add a new middleware object to the stack of middleware that will be executed .