public function filter(\Closure $callback): self
    {
        $collection = new static();

        foreach ($this->props as $key => $value) {
            if ($callback($value, $key)) {
                $collection->add($key, $value);
            }
        }

        return $collection;
    }
public function filter(\Closure $callback): self
    {
        $collection = new static();

        foreach ($this->props as $key => $value) {
            if ($callback($value, $key)) {
                $collection->add($key, $value);
            }
        }

        return $collection;
    }
public function filter ( \ Closure $ callback ) : self { $ collection = new static ( ) ; foreach ( $ this -> props as $ key => $ value ) { if ( $ callback ( $ value , $ key ) ) { $ collection -> add ( $ key , $ value ) ; } } return $ collection ; }
filter the props againt rule on callback
IMMUTABLE

@return self with filtered properties
filter the props againt rule on callback IMMUTABLE