private function recursive(array $data, callable $cb)
    {
        foreach ($data as $key => $value) {
            if (is_array($value) || is_object($value)) {
                $this->recursive((array) $value, $cb);
            } else {
                $cb($value, $key);
            }
        }
    }