def METHOD_NAME(self):
    if not any(socket.is_linked for socket in self.outputs):
        return
    curve_s = self.inputs['Curve'].sv_get()
    surface_s = self.inputs['Surface'].sv_get()
    offset_s = self.inputs['Offset'].sv_get()
    offset_curve_s = self.inputs['OffsetCurve'].sv_get(default = [[None]])
    curve_s = ensure_nesting_level(curve_s, 2, data_types=(SvCurve,))
    surface_s = ensure_nesting_level(surface_s, 2, data_types=(SvSurface,))
    offset_s = ensure_nesting_level(offset_s, 2)
    if self.inputs['OffsetCurve'].is_linked:
        offset_curve_s = ensure_nesting_level(offset_curve_s, 2, data_types=(SvCurve,))
    curves_out = []
    uv_curves_out = []
    for curves, surfaces, offsets, offset_curves in zip_long_repeat(curve_s, surface_s, offset_s, offset_curve_s):
        new_curves = []
        new_uv_curves = []
        for curve, surface, offset, offset_curve in zip_long_repeat(curves, surfaces, offsets, offset_curves):
            if self.offset_type == 'CONST':
                new_curve = SvCurveOffsetOnSurface(curve, surface, offset=offset,
                                uv_space=False, axis=self.curve_axis)
                new_uv_curve = SvCurveOffsetOnSurface(curve, surface, offset=offset,
                                uv_space=True, axis=self.curve_axis)
            else:
                if offset_curve is None:
                    raise SvNoDataError(socket=self.inputs['OffsetCurve'], node=self)
                new_curve = SvCurveOffsetOnSurface(curve, surface,
                                offset_curve = offset_curve,
                                offset_curve_type = self.offset_curve_type,
                                len_resolution = self.len_resolution,
                                uv_space = False, axis = self.curve_axis)
                new_uv_curve = SvCurveOffsetOnSurface(curve, surface,
                                offset_curve = offset_curve,
                                offset_curve_type = self.offset_curve_type,
                                len_resolution = self.len_resolution,
                                uv_space = True, axis = self.curve_axis)
            new_curves.append(new_curve)
            new_uv_curves.append(new_uv_curve)
        curves_out.append(new_curves)
        uv_curves_out.append(new_uv_curves)
    self.outputs['Curve'].sv_set(curves_out)
    self.outputs['UVCurve'].sv_set(uv_curves_out)