code: def make_mutant_features(original_feature, index_to_mutate, viz_params):
    
    lower = viz_params.x_min
    upper = viz_params.x_max
    examples = viz_params.examples
    num_mutants = viz_params.num_mutants
  
    if original_feature.feature_type == 'float_list':
      return [
          MutantFeatureValue(original_feature, index_to_mutate, value)
          for value in np.linspace(lower, upper, num_mutants)
      ]
    elif original_feature.feature_type == 'int64_list':
      mutant_values = np.linspace(int(lower), int(upper),
                                  num_mutants).astype(int).tolist()
      # Remove duplicates that can occur due to integer constraint.
      mutant_values = sorted(set(mutant_values))
      return [
          MutantFeatureValue(original_feature, index_to_mutate, value)
          for value in mutant_values
      ]
    elif original_feature.feature_type == 'bytes_list':
      feature_to_samples = get_categorical_features_to_sampling(
          examples, num_mutants)
  
      # `mutant_values` looks like:
      # [['Married-civ-spouse'], ['Never-married'], ['Divorced'], ['Separated']]
      mutant_values = feature_to_samples[original_feature.feature_name]['samples']
      return [
          MutantFeatureValue(original_feature, None, value)
          for value in mutant_values
      ]
    else:
      raise ValueError('Malformed original feature had type of: ' +
                       original_feature.feature_type)
docs: Return a list of `MutantFeatureValue`s that are variants of original.