     in container: KeyedDecodingContainer<StringsDict.CodingKeys>,
     formatKey: String
   ) throws -> [PluralEntry.Variable] {
-    guard let variableKeyTuples = StringsDict.variableKeysFromFormatKey(formatKey) else { return [] }
-    let sortedVariableKeys = variableKeyTuples
+    guard let variableNameResults = StringsDict.variableNamesFromFormatKey(formatKey) else { return [] }
+    let sortedVariableNames = variableNameResults
       .sorted { lhs, rhs in
         // Sort by positional argument if present, otherwise by occurrence in the format key
         switch (lhs.positionalArgument, rhs.positionalArgument, lhs.range.lowerBound, rhs.range.lowerBound) {

          return lhs < rhs
        }
      }
      .map { $0.key }

    return try sortedVariableKeys.reduce(into: [PluralEntry.Variable]()) { variables, variableKey in
      let variableRule = try container.decode(PluralEntry.VariableRule.self, forKey: CodingKeys(key: variableKey))
      variables.append(PluralEntry.Variable(key: variableKey, rule: variableRule))
    }
  }
}

  /// Variable width entries are used to define width variations for a localized string.
  ///
  /// Reference: https://developer.apple.com/documentation/foundation/nsstring/1413104-variantfittingpresentationwidth
  ///
  /// Note: SwiftGen doesn't yet support parsing those VariableWidth entries
  struct VariableWidthEntry: Codable {
    let rules: [String: String]
  }
}

extension StringsDict.PluralEntry {
  /// `Variable`s are a key-value pair specifying the rule to use for each variable (name).
  struct Variable: Codable {
    let name: String
    let rule: VariableRule
  }

