'Constructs the docutils content for the details of
the feature matrix.
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()
        id = re.sub('[^a-zA-Z0-9_]', '_', feature.key)
        item.append(nodes.strong(text=feature.title, ids=[id]))
        if (feature.notes is not None):
            para_notes = nodes.paragraph()
            para_notes.append(nodes.inline(text=feature.notes))
            item.append(para_notes)
        self._add_feature_info(item, feature)
        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=[('fm_impl_' + impl.status)], ids=[id])]
            if impl.release:
                release_letter = impl.release.upper()
                release_text = ('    (updated    in    "%s"    release)' % release_letter)
                subitem.append(nodes.inline(text=release_text))
            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)
