Create a section node that documents a ListField config field.

    Parameters
    ----------
    field_name : `str`
        Name of the configuration field (the attribute name of on the config
        class).
    field : ``lsst.pex.config.ListField``
        A configuration field.
    field_id : `str`
        Unique identifier for this field. This is used as the id and name of
        the section node. with a -section suffix
    state : ``docutils.statemachine.State``
        Usually the directive's ``state`` attribute.
    lineno (`int`)
        Usually the directive's ``lineno`` attribute.

    Returns
    -------
    ``docutils.nodes.section``
        Section containing documentation nodes for the ListField.

def format_listfield_nodes(field_name, field, field_id, state, lineno):
    """Create a section node that documents a ListField config field.

    Parameters
    ----------
    field_name : `str`
        Name of the configuration field (the attribute name of on the config
        class).
    field : ``lsst.pex.config.ListField``
        A configuration field.
    field_id : `str`
        Unique identifier for this field. This is used as the id and name of
        the section node. with a -section suffix
    state : ``docutils.statemachine.State``
        Usually the directive's ``state`` attribute.
    lineno (`int`)
        Usually the directive's ``lineno`` attribute.

    Returns
    -------
    ``docutils.nodes.section``
        Section containing documentation nodes for the ListField.
    """
    # ListField's store their item types in the itemtype attribute
    itemtype_node = nodes.definition_list_item()
    itemtype_node += nodes.term(text='Item type')
    itemtype_def = nodes.definition()
    itemtype_def += make_python_xref_nodes_for_type(
        field.itemtype,
        state,
        hide_namespace=False)
    itemtype_node += itemtype_def

    minlength_node = None
    if field.minLength:
        minlength_node = nodes.definition_list_item()
        minlength_node += nodes.term(text='Minimum length')
        minlength_def = nodes.definition()
        minlength_def += nodes.paragraph(text=str(field.minLength))
        minlength_node += minlength_def

    maxlength_node = None
    if field.maxLength:
        maxlength_node = nodes.definition_list_item()
        maxlength_node += nodes.term(text='Maximum length')
        maxlength_def = nodes.definition()
        maxlength_def += nodes.paragraph(text=str(field.maxLength))
        maxlength_node += maxlength_def

    length_node = None
    if field.length:
        length_node = nodes.definition_list_item()
        length_node += nodes.term(text='Required length')
        length_def = nodes.definition()
        length_def += nodes.paragraph(text=str(field.length))
        length_node += length_def

    # Type description
    field_type_item = nodes.definition_list_item()
    field_type_item.append(nodes.term(text="Field type"))
    field_type_item_content = nodes.definition()
    field_type_item_content_p = nodes.paragraph()
    field_type_item_content_p += make_python_xref_nodes_for_type(
        field.itemtype,
        state,
        hide_namespace=False)[0].children[0]
    field_type_item_content_p += nodes.Text(' ', ' ')
    field_type_item_content_p += make_python_xref_nodes_for_type(
        type(field),
        state,
        hide_namespace=True)[0].children[0]
    if field.optional:
        field_type_item_content_p += nodes.Text(' (optional)', ' (optional)')
    field_type_item_content += field_type_item_content_p
    field_type_item += field_type_item_content

    # Reference target
    env = state.document.settings.env
    ref_target = create_configfield_ref_target_node(field_id, env, lineno)

    # Title is the field's attribute name
    title = nodes.title(text=field_name)
    title += ref_target

    # Definition list for key-value metadata
    dl = nodes.definition_list()
    dl += create_default_item_node(field, state)
    dl += field_type_item
    if minlength_node:
        dl += minlength_node
    if maxlength_node:
        dl += maxlength_node
    if length_node:
        dl += length_node

    # Doc for this ConfigurableField, parsed as rst
    desc_node = create_description_node(field, state)

    # Title for configuration field
    title = create_title_node(field_name, field, field_id, state, lineno)

    return [title, dl, desc_node]