original_string: public static function addFilter($filter, $callback = null)
      {
          if (is_array($filter)) {
              $filters = $filter;
              foreach ($filters as $key => $filter) {
                  if (is_numeric($key)) {
                      $key = $filter;
                  }
                  self::addFilter($key, $filter);
              }
  
              return true;
          } elseif (is_string($filter) && class_exists($filter, false) && is_subclass_of($filter, 'FilterCollection')) {
              foreach (get_class_methods($filter) as $f) {
                  if (is_callable(array($filter, $f))) {
                      self::$filters[$f] = array($filter, $f);
                  }
              }
  
              return true;
          }
          if (is_null($callback)) {
              $callback = $filter;
          }
  
          if (!is_callable($callback)) {
              return false;
          }
          self::$filters[$filter] = $callback;
      }
code: public static function addFilter($filter, $callback = null)
      {
          if (is_array($filter)) {
              $filters = $filter;
              foreach ($filters as $key => $filter) {
                  if (is_numeric($key)) {
                      $key = $filter;
                  }
                  self::addFilter($key, $filter);
              }
  
              return true;
          } elseif (is_string($filter) && class_exists($filter, false) && is_subclass_of($filter, 'FilterCollection')) {
              foreach (get_class_methods($filter) as $f) {
                  if (is_callable(array($filter, $f))) {
                      self::$filters[$f] = array($filter, $f);
                  }
              }
  
              return true;
          }
          if (is_null($callback)) {
              $callback = $filter;
          }
  
          if (!is_callable($callback)) {
              return false;
          }
          self::$filters[$filter] = $callback;
      }
code_tokens: public static function addFilter ( $ filter , $ callback = null ) { if ( is_array ( $ filter ) ) { $ filters = $ filter ; foreach ( $ filters as $ key => $ filter ) { if ( is_numeric ( $ key ) ) { $ key = $ filter ; } self :: addFilter ( $ key , $ filter ) ; } return true ; } elseif ( is_string ( $ filter ) && class_exists ( $ filter , false ) && is_subclass_of ( $ filter , 'FilterCollection' ) ) { foreach ( get_class_methods ( $ filter ) as $ f ) { if ( is_callable ( array ( $ filter , $ f ) ) ) { self :: $ filters [ $ f ] = array ( $ filter , $ f ) ; } } return true ; } if ( is_null ( $ callback ) ) { $ callback = $ filter ; } if ( ! is_callable ( $ callback ) ) { return false ; } self :: $ filters [ $ filter ] = $ callback ; }
docstring: Register a new filter to h2o runtime.
  
  @param unknown_type $filter
  @param unknown_type $callback
  
  @return unknown
docstring_tokens: Register a new filter to h2o runtime .