<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def collection(name, child_names=None, child_source=None, child_view=None, child_model=None, child_label=None, child_desc=None, child_meta=None, label=None, desc=None, meta=None, model_meta=None):
 """ Annotate a dynamic collection of sub-models. @param name: name of the collection model containing the sub-models @type name: str or unicode @param child_names: an effect that retrieve all sub-models names or None if sub-models are not iterable. @type child_names: callable @param child_source: an effect that retrieve a sub-model source. @type child_source: callable @param child_view: an effect that retrieve a sub-model view. @type child_view: callable @param child_model: the model identity, model factory or effect to get it, or None to use IModel adapter. @type child_model: str or unicode or callable or IModelFactory or None @param child_label: the model items label or None. @type child_label: str or unicode or None @param child_desc: the model items description or None. @type child_desc: str or unicode or None @param child_meta: collection model's items metadata. @type child_meta: list of tuple @param label: the collection label or None. @type label: str or unicode or None @param desc: the collection description or None. @type desc: str or unicode or None @param meta: item metadata. @type meta: list of tuple @param model_meta: collection model metadata. @type model_meta: list of tuple """

    _annotate("collection", name, child_names=child_names,
              child_source=child_source, child_view=child_view,
              child_model=child_model, child_label=child_label,
              child_desc=child_desc, child_meta=child_meta,
              label=label, desc=desc, meta=meta, model_meta=model_meta)