def _requires_copy(experiment_data) -> bool:
    """Return True if a copy of the experiment data should be made."""
    # If data is from DB or contains analysis results it should be copied
    if (
        experiment_data._created_in_db
        or experiment_data._analysis_results
        or experiment_data._figures
    ):
        return True

    # Check child data:
    if hasattr(experiment_data, "_child_data"):
        for subdata in experiment_data._child_data.values():
            if _requires_copy(subdata):
                return True

    # No Copy required
    return False