     case (.none, .none), (.some, .some):
       throw Strings.ParserError.invalidFormat
     case let (.some(formatKey), .none):
-      let sortedVariableNames = StringsDict.variableNamesFromFormatKey(formatKey)?.map { $0.name } ?? []
-      let variables = try sortedVariableNames.reduce(into: [PluralEntry.Variable]()) { variables, variableName in
+      let variableNames = StringsDict.variableNamesFromFormatKey(formatKey)?.map { $0.name } ?? []
+      let variables = try variableNames.reduce(into: [PluralEntry.Variable]()) { variables, variableName in
         let variableRule = try container.decode(PluralEntry.VariableRule.self, forKey: CodingKeys(key: variableName))
         variables.append(PluralEntry.Variable(name: variableName, rule: variableRule))
       }

    let nsrange = NSRange(formatKey.startIndex..<formatKey.endIndex, in: formatKey)
    let matches = regex.matches(in: formatKey, options: [], range: nsrange)

    let variableNameResults = matches.compactMap { match -> VariableNameResult? in
      // 1st capture group is the whole format string including delimeters
      let fullMatchNSRange = match.range(at: 1)
      // 2nd capture group is the positional argument of the format string (Optional!)


      return (String(formatKey[nameRange]), fullMatchRange, Int(formatKey[positionalArgumentRange]))
    }
  }
}

