public static function toArray($mixed, $depth = 1, $whitelist = [], $blacklist = [])
    {

        // If we drop below depth 0, just return NULL
        if ($depth < 0) {
            return NULL;
        }

        // If this is an array, we need to loop through the values
        if (is_array($mixed) || $mixed instanceof Traversable) {
            // Somthing to Hold Return Values
            $anArray = [];

            // The Loop
            foreach ($mixed as $key => $value) {
                if (is_array($value) || $value instanceof Traversable) {
                    $anArray[] = self::toArray($value, $depth - 1, $whitelist, $blacklist);
                } elseif (is_object($value)) {
                    $anArray[] = self::arrayizor($value, $depth, $whitelist, $blacklist);
                } else {
                    $anArray[$key] = $value;
                }
            }

            // Return it
            return $anArray;
        } elseif (is_object($mixed)) {
            // Just return it
            return self::arrayizor($mixed, $depth, $whitelist, $blacklist);
        } else {
            return $mixed;
        }
    }