protected function containsRecursive(&$array, &$value)
    {
        if (!is_array($array)) {
            return false;
        }

        foreach ($array as $sub) {
            if (is_string($sub) && !strcasecmp($sub, $value)) {
                return true;
            }

            if (is_array($sub) && $this->containsRecursive($sub, $value)) {
                return true;
            }
        }
        return false;
    }