public static function get($from_class_name)
    {
        $to_class_name = $from_class_name;

        while (array_key_exists($from_class_name, self::$map)) {
            $to_class_name = self::$map[$from_class_name];

            if (!is_subclass_of($to_class_name, $from_class_name)) {
                throw new SwatInvalidClassException(
                    sprintf(
                        'Invalid ' .
                            'class-mapping detected. %s is not a subclass of %s.',
                        $to_class_name,
                        $from_class_name
                    )
                );
            }

            $from_class_name = $to_class_name;
        }

        return $to_class_name;
    }