public static function arrayWalkRecursiveDelete(&$values, Closure $callback, $data = null)
    {
        foreach ($values as $key => &$value) {
            if (is_array($value)) {
                $value = static::arrayWalkRecursiveDelete(
                    $value, $callback, $data
                );
            }

            if ($callback($value, $key, $data)) {
                unset($values[$key]);
            }
        }

        return $values;
    }