Return a list of `MutantFeatureValue`s and a list of mutant Examples.

  Args:
    example_protos: The examples to mutate.
    original_feature: A `OriginalFeatureList` that encapsulates the feature to
      mutate.
    index_to_mutate: The index of the int64_list or float_list to mutate.
    viz_params: A `VizParams` object that contains the UI state of the request.

  Returns:
    A list of `MutantFeatureValue`s and a list of mutant examples.

def make_mutant_tuples(example_protos, original_feature, index_to_mutate,
                       viz_params):
  """Return a list of `MutantFeatureValue`s and a list of mutant Examples.

  Args:
    example_protos: The examples to mutate.
    original_feature: A `OriginalFeatureList` that encapsulates the feature to
      mutate.
    index_to_mutate: The index of the int64_list or float_list to mutate.
    viz_params: A `VizParams` object that contains the UI state of the request.

  Returns:
    A list of `MutantFeatureValue`s and a list of mutant examples.
  """
  mutant_features = make_mutant_features(original_feature, index_to_mutate,
                                         viz_params)
  mutant_examples = []
  for example_proto in example_protos:
    for mutant_feature in mutant_features:
      copied_example = copy.deepcopy(example_proto)
      feature_name = mutant_feature.original_feature.feature_name

      try:
        feature_list = proto_value_for_feature(copied_example, feature_name)
        if index_to_mutate is None:
          new_values = mutant_feature.mutant_value
        else:
          new_values = list(feature_list)
          new_values[index_to_mutate] = mutant_feature.mutant_value

        del feature_list[:]
        feature_list.extend(new_values)
        mutant_examples.append(copied_example)
      except (ValueError, IndexError):
        # If the mutant value can't be set, still add the example to the
        # mutant_example even though no change was made. This is necessary to
        # allow for computation of global PD plots when not all examples have
        # the same number of feature values for a feature.
        mutant_examples.append(copied_example)

  return mutant_features, mutant_examples