def METHOD_NAME(self):
    if not any(socket.is_linked for socket in self.outputs):
        return
    surface_in = self.inputs['SolidFace'].sv_get()
    sites_in = self.inputs['Sites'].sv_get()
    iterations_in = self.inputs['Iterations'].sv_get()
    thickness_in = self.inputs['Thickness'].sv_get()
    weights_in = self.inputs['Weights'].sv_get(default=[[None]])
    surface_in = ensure_nesting_level(surface_in, 2, data_types=(SvSurface,))
    input_level = get_data_nesting_level(sites_in)
    sites_in = ensure_nesting_level(sites_in, 4)
    iterations_in = ensure_nesting_level(iterations_in, 2)
    thickness_in = ensure_nesting_level(thickness_in, 2)
    if self.inputs['Weights'].is_linked:
        weights_in = ensure_nesting_level(weights_in, 2, data_types=(SvScalarField,))
    nested_output = input_level > 3
    verts_out = []
    uvpoints_out = []
    for params in zip_long_repeat(surface_in, sites_in, iterations_in, thickness_in, weights_in):
        new_verts = []
        new_uvpoints = []
        for surface, sites, iterations, thickness, weights in zip_long_repeat(*params):
            if is_solid_face_surface(surface):
                fc_face = surface.face
            else:
                fc_face = surface_to_freecad(surface, make_face=True).face
            uvpoints, sites = lloyd_on_fc_face(fc_face, sites, thickness, iterations, weight_field = weights)
            new_verts.append(sites)
            new_uvpoints.append(uvpoints)
        if nested_output:
            verts_out.append(new_verts)
            uvpoints_out.append(new_uvpoints)
        else:
            verts_out.extend(new_verts)
            uvpoints_out.extend(new_uvpoints)
    self.outputs['Sites'].sv_set(verts_out)
    self.outputs['UVPoints'].sv_set(uvpoints_out)