def METHOD_NAME(self):
    # create a mesh
    self.info("creating mesh")
    mesh_data = Blender.Mesh.Primitives.Monkey()
    mesh_numverts = len(mesh_data.vertices)
    mesh_obj = self.context.scene.objects.new(mesh_data, "Monkey")
    # create an armature
    self.info("creating armature")
    arm_data = Blender.Armature.Armature("Scene Root")
    arm_data.drawAxes = True
    arm_data.envelopes = False
    arm_data.vertexGroups = True
    arm_data.display_type = 'STICK'
    arm_obj = self.context.scene.objects.new(arm_data, "Scene Root")
    arm_data.makeEditable()
    bone = Blender.Armature.Editbone()
    arm_data.bones["Bone"] = bone
    arm_data.update()
    # skin the mesh
    self.info("attaching mesh to armature")
    mesh_data.addVertGroup("Bone")
    mesh_data.assignVertsToGroup("Bone", list(range(mesh_numverts)), 1,
                                 Blender.Mesh.AssignModes.REPLACE)
    arm_obj.makeParentDeform([mesh_obj])
    # set body part
    self.info("creating body part vertex group")
    mesh_data.addVertGroup("BP_HEAD")
    mesh_data.assignVertsToGroup("BP_HEAD", list(range(mesh_numverts)), 1,
                                 Blender.Mesh.AssignModes.REPLACE)
    # export (do not advance layer, we will export this again)
    nif_export = self.test(
        filename='test/nif/fo3/_bodypart1.nif',
        config=dict(
            game='FALLOUT_3', EXPORT_SMOOTHOBJECTSEAMS=True,
            EXPORT_FLATTENSKIN=True),
        selection=['Scene Root'],
        next_layer=False)
    # check body part
    self.info("checking for body parts")
    skininst = nif_export.root_blocks[0].find(
        block_type = NifFormat.BSDismemberSkinInstance)
    if not skininst:
        raise ValueError("no body parts found")
    self.info("checking number of body parts")
    if skininst.num_partitions != 1:
        raise ValueError("bad number of body parts")
    if skininst.skin_partition.num_skin_partition_blocks != skininst.num_partitions:
        raise ValueError("num skin partitions do not match num body parts")
    self.info("checking body part indices")
    if skininst.partitions[0].body_part != NifFormat.BSDismemberBodyPartType.BP_HEAD:
        raise ValueError("bad body part type in skin partition")
    # remove a vertex from the body part vertex group
    self.info("removing vertex from vertex group")
    mesh_data.removeVertsFromGroup("BP_HEAD", [0])
    # try to export again, this must fail!
    self.info("check that export fails")
    try:
        nif_export = self.test(
            filename='test/nif/fo3/_bodypart2.nif',
            config=dict(
                game='FALLOUT_3', EXPORT_SMOOTHOBJECTSEAMS=True,
                EXPORT_FLATTENSKIN=True),
            selection=['Scene Root'])
    except ValueError:
        pass
    else:
        raise RuntimeError("expected ValueError")
    # add selected vertices from mesh to another group
    self.info("export failed: adding selected vertices to new group")
    mesh_data.addVertGroup("BP_HEAD2")
    mesh_data.assignVertsToGroup("BP_HEAD2",
                                 [vert.index for vert in mesh_data.vertices
                                  if vert.sel],
                                 1, Blender.Mesh.AssignModes.REPLACE)
    # now export must succeed
    nif_export = self.test(
        filename='test/nif/fo3/_bodypart3.nif',
        config=dict(
            game='FALLOUT_3', EXPORT_SMOOTHOBJECTSEAMS=True,
            EXPORT_FLATTENSKIN=True),
        selection=['Scene Root'],
        next_layer=False)
    # check body part
    self.info("checking for body parts")
    skininst = nif_export.root_blocks[0].find(
        block_type = NifFormat.BSDismemberSkinInstance)
    if not skininst:
        raise ValueError("no body parts found")
    self.info("checking number of body parts")
    if skininst.num_partitions != 2:
        raise ValueError("bad number of body parts")
    if skininst.skin_partition.num_skin_partition_blocks != skininst.num_partitions:
        raise ValueError("num skin partitions do not match num body parts")
    self.info("checking body part indices")
    if skininst.partitions[0].body_part != NifFormat.BSDismemberBodyPartType.BP_HEAD:
        raise ValueError("bad body part type in skin partition")
    if skininst.partitions[1].body_part != NifFormat.BSDismemberBodyPartType.BP_HEAD2:
        raise ValueError("bad body part type in skin partition")
    # export without body parts
    nif_export = self.test(
        filename='test/nif/fo3/_bodypart4.nif',
        config=dict(
            game='FALLOUT_3', EXPORT_SMOOTHOBJECTSEAMS=True,
            EXPORT_FLATTENSKIN=True, EXPORT_FO3_BODYPARTS=False),
        selection=['Scene Root'])
    # check that skinning is exported without body parts
    self.info("checking that there are no body parts")
    if nif_export.root_blocks[0].find(
        block_type=NifFormat.BSDismemberSkinInstance):