public function when(callable $predicate, string $errorId, array $details = [])
    {
        return $this->handleFilter(
                function() use($predicate, $errorId, $details)
                {
                    return new filter\PredicateFilter($predicate, $errorId, $details);
                }
        );
    }