public static function map($scheme = null, $class = null)
    {
        if (is_array($scheme)) {
            foreach ($scheme as $s => $class) {
                static::map($s, $class);
            }
            return static::$schemeMap;
        }

        if ($scheme === null) {
            return static::$schemeMap;
        }

        if ($class === null) {
            return isset(static::$schemeMap[$scheme]) ? static::$schemeMap[$scheme] : null;
        }

        if ($class === false) {
            unset($schemeMap[$scheme]);
            return;
        }

        return static::$schemeMap[$scheme] = $class;
    }