'See the superclass for the general documentation.
If cloning w/in a store, delegates to that store\'s clone_course which, in order to be self-
sufficient, should handle the asset copying (call the same method as this one does)
If cloning between stores,
* copy the assets
* migrate the courseware'

@strip_key
def clone_course(self, source_course_id, dest_course_id, user_id, fields=None, **kwargs):

    source_modulestore = self._get_modulestore_for_courselike(source_course_id)
    dest_modulestore = self._get_modulestore_for_courselike(dest_course_id)
    if (source_modulestore == dest_modulestore):
        return source_modulestore.clone_course(source_course_id, dest_course_id, user_id, fields, **kwargs)
    if (dest_modulestore.get_modulestore_type() == ModuleStoreEnum.Type.split):
        split_migrator = SplitMigrator(dest_modulestore, source_modulestore)
        split_migrator.migrate_mongo_course(source_course_id, user_id, dest_course_id.org, dest_course_id.course, dest_course_id.run, fields, **kwargs)
        super(MixedModuleStore, self).clone_course(source_course_id, dest_course_id, user_id, fields, **kwargs)
    else:
        raise NotImplementedError('No    code    for    cloning    from    {}    to    {}'.format(source_modulestore, dest_modulestore))
