'Construct the docutils content for the support matrix details.
This is generated as a bullet list of features. Against each feature we
provide the description of the feature and then the details of the
hypervisor impls, with any driver specific notes that exist'

def _build_details(self, matrix, content):

    detailstitle = nodes.subtitle(text='Details')
    details = nodes.bullet_list()
    content.append(detailstitle)
    content.append(details)
    for feature in matrix.features:
        item = nodes.list_item()
        status = feature.status
        if (feature.group is not None):
            status += (('(' + feature.group) + ')')
        id = re.sub('[^a-zA-Z0-9_]', '_', feature.key)
        item.append(nodes.strong(text=feature.title, ids=[id]))
        para = nodes.paragraph()
        para.append(nodes.strong(text=(('Status:    ' + status) + '.    ')))
        if (feature.notes is not None):
            para.append(nodes.inline(text=feature.notes))
        item.append(para)
        if feature.cli:
            item.append(self._create_cli_paragraph(feature))
        para_divers = nodes.paragraph()
        para_divers.append(nodes.strong(text='drivers:'))
        impls = nodes.bullet_list()
        for key in feature.implementations:
            target = matrix.targets[key]
            impl = feature.implementations[key]
            subitem = nodes.list_item()
            id = re.sub('[^a-zA-Z0-9_]', '_', ((feature.key + '_') + key))
            subitem += [nodes.strong(text=(target.title + ':    ')), nodes.literal(text=impl.status, classes=[('sp_impl_' + impl.status)], ids=[id])]
            if (impl.notes is not None):
                subitem.append(self._create_notes_paragraph(impl.notes))
            impls.append(subitem)
        para_divers.append(impls)
        item.append(para_divers)
        details.append(item)
