.ToKeyValuePairs() now uses ThrowIf