def METHOD_NAME(verts,
                      edges=None,
                      faces=None,
                      selected_verts: List[bool] = None,
                      face_data=None):
    """it ignores edges for now"""
    edges = edges or []
    faces = faces or []
    if not selected_verts:
        selected_verts = [True] * len(verts)
    elif len(selected_verts) != len(verts):
        selected_verts = list(fixed_iter(selected_verts, len(verts)))
    out_verts = []
    out_faces = []
    old_new_verts: Dict[int, int] = dict()
    for face in faces:
        new_face = []
        for i in face:
            if selected_verts[i]:
                out_verts.append(verts[i])
                new_face.append(len(out_verts) - 1)
            else:
                if i in old_new_verts:
                    new_face.append(old_new_verts[i])
                else:
                    out_verts.append(verts[i])
                    old_new_verts[i] = len(out_verts) - 1
                    new_face.append(len(out_verts) - 1)
        out_faces.append(new_face)
    out_edges = polygons_to_edges_np([out_faces], unique_edges=True)[0]
    return out_verts, out_edges, out_faces, face_data