def METHOD_NAME(self):
    outputs = self.outputs
    if not outputs['Vertices'].is_linked:
        return
    IVerts, IFaces, IMask, Imatr = self.inputs
    vertices_s = IVerts.sv_get()
    faces_s = IFaces.sv_get()
    linked_extruded_polygons = outputs['ExtrudedPolys'].is_linked
    linked_other_polygons = outputs['OtherPolys'].is_linked
    result_vertices = []
    result_edges = []
    result_faces = []
    result_extruded_faces = []
    result_other_faces = []
    bmlist = [bmesh_from_pydata(verts, [], faces) for verts, faces in zip(vertices_s, faces_s)]
    trans = Imatr.sv_get()
    if IMask.is_linked:
        flist = [np.extract(mask, bm.faces[:]) for bm, mask in zip(bmlist, IMask.sv_get())]
    else:
        flist = [bm.faces for bm in bmlist]
    for bm, selfaces in zip(bmlist, flist):
        extrfaces = extrude_discrete_faces(bm, faces=selfaces)['faces']
        fullList(trans, len(extrfaces))
        new_extruded_faces = []
        for face, ma in zip(extrfaces, trans):
            normal = face.normal
            if normal[0] == 0 and normal[1] == 0:
                m_r = Matrix() if normal[2] >= 0 else Matrix.Rotation(pi, 4, 'X')
            else:
                z_axis = normal
                x_axis = Vector((z_axis[1] * -1, z_axis[0], 0)).normalized()
                y_axis = z_axis.cross(x_axis).normalized()
                m_r = Matrix(list([*zip(x_axis[:], y_axis[:], z_axis[:])])).to_4x4()
            m = (Matrix.Translation(face.calc_center_median()) @ m_r).inverted()
            transform(bm, matrix=ma, space=m, verts=face.verts)
            if linked_extruded_polygons or linked_other_polygons:
                new_extruded_faces.append([v.index for v in face.verts])
        new_vertices, new_edges, new_faces = pydata_from_bmesh(bm)
        bm.free()
        new_other_faces = [f for f in new_faces if f not in new_extruded_faces] if linked_other_polygons else []
        result_vertices.append(new_vertices)
        result_edges.append(new_edges)
        result_faces.append(new_faces)
        result_extruded_faces.append(new_extruded_faces)
        result_other_faces.append(new_other_faces)
    outputs['Vertices'].sv_set(result_vertices)
    outputs['Edges'].sv_set(result_edges)
    outputs['Polygons'].sv_set(result_faces)
    outputs['ExtrudedPolys'].sv_set(result_extruded_faces)
    outputs['OtherPolys'].sv_set(result_other_faces)