docs: def _copy_old_features(new_eopatch, old_eopatch, copy_features):
          """ Copy features from old EOPatch
  
          :param new_eopatch: New EOPatch container where the old features will be copied to
          :type new_eopatch: EOPatch
          :param old_eopatch: Old EOPatch container where the old features are located
          :type old_eopatch: EOPatch
          :param copy_features: List of tuples of type (FeatureType, str) or (FeatureType, str, str) that are copied
              over into the new EOPatch. The first string is the feature name, and the second one (optional) is a new name
              to be used for the feature
          :type copy_features: list((FeatureType, str) or (FeatureType, str, str))
          """
          if copy_features:
              existing_features = set(new_eopatch.get_feature_list())
  
              for copy_feature_type, copy_feature_name, copy_new_feature_name in copy_features:
                  new_feature = copy_feature_type, copy_new_feature_name
  
                  if new_feature in existing_features:
                      raise ValueError('Feature {} of {} already exists in the new EOPatch! '
                                       'Use a different name!'.format(copy_new_feature_name, copy_feature_type))
                  else:
                      existing_features.add(new_feature)
  
                      new_eopatch[copy_feature_type][copy_new_feature_name] = \
                          old_eopatch[copy_feature_type][copy_feature_name]
  
          return new_eopatch