protected function validateTypes(Dictionary $types, $path = "")
    {
        $spath = empty($path) ? "" : $path . ".";
        foreach ($types as $key => $value)
        {
            $kpath = $spath . $key;
            if ($value instanceof Dictionary)
            {
                $this->validateTypes($value, $kpath);
            }
            elseif (is_string($value))
            {
                $types[$key] = new Validator($value);
            }
            elseif (!($value instanceof Validator))
            {
                throw new \InvalidArgumentException(
                    "Unknown type: " . Functions::str($value) . " for " . $kpath
                );
            }
        }
    }