original_string: public function filter($expression)
      {
          $new = new static;
  
          $this->walk(function ($v, $k) use ($expression, $new) {
              $result = $this->call($expression, $v, $k);
              if ($this->passes($result)) {
                  $new[$k] = $v;
              }
          });
  
          return $new;
      }
code: public function filter($expression)
      {
          $new = new static;
  
          $this->walk(function ($v, $k) use ($expression, $new) {
              $result = $this->call($expression, $v, $k);
              if ($this->passes($result)) {
                  $new[$k] = $v;
              }
          });
  
          return $new;
      }
code_tokens: public function filter ( $ expression ) { $ new = new static ; $ this -> walk ( function ( $ v , $ k ) use ( $ expression , $ new ) { $ result = $ this -> call ( $ expression , $ v , $ k ) ; if ( $ this -> passes ( $ result ) ) { $ new [ $ k ] = $ v ; } } ) ; return $ new ; }
docstring: Apply the filter to every element, creating a new map with only those
  elements from the original map that do not fail this filter.
  
  The filter expressions receives two arguments:
  - The current value
  - The current key
  
  If the filter returns exactly boolean false, the element is not copied
  into the new map.  Otherwise, it is.  Keys from the original map carry
  into the new map.
  
  @param callable|string $expression
  @return new static
  @api
docstring_tokens: Apply the filter to every element creating a new map with only those elements from the original map that do not fail this filter .