protected static function __dropWhile(callable $predicate, array $list) : array
    {
        foreach ($list as $item) {
            if ($predicate($item)) {
                array_shift($list);
            } else {
                break;
            }
        }

        return $list;
    }