code: def copy(self, extra=None):
          
          if extra is None:
              extra = dict()
          bestModel = self.bestModel.copy(extra)
          avgMetrics = self.avgMetrics
          subModels = self.subModels
          return CrossValidatorModel(bestModel, avgMetrics, subModels)
docs: Creates a copy of this instance with a randomly generated uid
          and some extra params. This copies the underlying bestModel,
          creates a deep copy of the embedded paramMap, and
          copies the embedded and extra parameters over.
          It does not copy the extra Params into the subModels.
  
          :param extra: Extra parameters to copy to the new instance
          :return: Copy of this instance