public static function sort()
    {
        $arguments = func_get_args();

        if (count($arguments) === 0) {
            return array();
        }

        // Versions array
        $versions = array();

        // If the first argument is an array, use that
        if (is_array($arguments[0])) {
            $versions = $arguments[0];
        } else {
            $versions = $arguments;
        }

        // Parse into Version isntances
        foreach($versions as $key => $version) {
            if ($version instanceof Version) {
                $versions[$key] = $version;
            } else if (is_string($version)) {
                $versions[$key] = Parser::parse($version);
            } else {
                throw new InvalidArgumentException(
                    'Invalid version given, pass either Version instances or strings'
                );
            }
        }

        // Use the array sorter
        return self::sortArray($versions);
    }