public static function transform(&$str, $transformation = self::TR_LOWER)
    {
        switch($transformation) {
            case self::TR_LOWER:
                $str = self::toLower($str);
                break;
            case self::TR_UPPER:
                $str = self::toUpper($str);
                break;
            case self::TR_TITLE:
                $str = self::title($str);
                break;
            case self::TR_UC_FIRST:
                $str = self::ucFirst($str);
                break;
            case self::TR_LC_FIRST:
                $str = self::lcFirst($str);
                break;
            case self::TR_UNDERSCORE:
                $str = self::camelCaseToUnderscore($str);
                break;
            case self::TR_CAMEL_CASE:
                $str = self::underscoreToCamelCase($str);
                break;
            default:
                self::toss(
                    "InvalidArgumentException",
                    "Transforming argument {0}({1}) must be one of the {me}::TR constants",
                    __METHOD__,
                    $transformation
                );
                break;
        }
    }