def METHOD_NAME(self):
    colors = [[255, 0, 0, 255],
              [0, 255, 0, 255],
              [0, 0, 255, 255],
              [100, 100, 100, 255]]
    funcs = [g.trimesh.creation.box,
             g.trimesh.creation.icosphere,
             g.trimesh.creation.capsule]
    fuze = g.get_mesh('fuze.obj')
    fuze.apply_scale(1.0 / fuze.extents.max())
    fuze.apply_translation([-2, 0, 0] - fuze.bounds[0])
    meshes = []
    for i, color in enumerate(colors):
        for j, f in enumerate(funcs):
            m = f()
            m.visual.face_colors = color
            # convert color visual to texture
            m.visual = m.visual.to_texture()
            m.apply_translation([i * 2.2, j * 2.2, 0.0])
            meshes.append(m)
    c = g.trimesh.util.concatenate(meshes)
    assert isinstance(c.visual, g.trimesh.visual.TextureVisuals)
    assert len(c.faces) == sum(len(i.faces) for i in meshes)
    assert g.np.prod(c.visual.material.image.size) >= 4
    # convert texture back to color
    roundtrip = c.visual.to_color()
    assert roundtrip.kind == 'vertex'
    vertex_c = roundtrip.vertex_colors
    # get the unique colors
    unique = vertex_c[g.trimesh.grouping.unique_rows(vertex_c)[0]]
    # roundtripped colors should be a superset of original colors
    assert set(tuple(c) for c in unique).issuperset(
        set(tuple(c) for c in colors))