code: def _ParameterDecorator(naming_type, testcases):
    
    def _Apply(obj):
      if isinstance(obj, type):
        _ModifyClass(
            obj,
            list(testcases) if not isinstance(testcases, collections.Sequence)
            else testcases,
            naming_type)
        return obj
      else:
        return _ParameterizedTestIter(obj, testcases, naming_type)
  
    if _IsSingletonList(testcases):
      assert _NonStringIterable(testcases[0]), (
          'Single parameter argument must be a non-string iterable')
      testcases = testcases[0]
  
    return _Apply
docs: Implementation of the parameterization decorators.
  
    Args:
      naming_type: The naming type.
      testcases: Testcase parameters.
  
    Returns:
      A function for modifying the decorated object.