<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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