'modulestore: the module store that can be used to retrieve additional modules
course_key: the course for which everything in this runtime will be relative
module_data: a dict mapping Location -> json that was cached from the
underlying modulestore
default_class: The default_class to use when loading an
XModuleDescriptor from the module_data
cached_metadata: the cache for handling inheritance computation. internal use only
resources_fs: a filesystem, as per MakoDescriptorSystem
error_tracker: a function that logs errors for later display to users
render_template: a function for rendering templates, as per
MakoDescriptorSystem'

def __init__(self, modulestore, course_key, module_data, default_class, cached_metadata, **kwargs):

    id_manager = CourseLocationManager(course_key)
    kwargs.setdefault('id_reader', id_manager)
    kwargs.setdefault('id_generator', id_manager)
    super(CachingDescriptorSystem, self).__init__(field_data=None, load_item=self.load_item, **kwargs)
    self.modulestore = modulestore
    self.module_data = module_data
    self.default_class = default_class
    self.course_id = course_key
    self.cached_metadata = cached_metadata
