def METHOD_NAME(self):
    if not any(socket.is_linked for socket in self.outputs):
        return
    curve_s = self.inputs['Curve'].sv_get()
    degree_s = self.inputs['Degree'].sv_get()
    tolerance_s = self.inputs['Tolerance'].sv_get()
    input_level = get_data_nesting_level(curve_s, data_types=(SvCurve,))
    flat_output = input_level < 2
    curve_s = ensure_nesting_level(curve_s, 2, data_types=(SvCurve,))
    degree_s = ensure_nesting_level(degree_s, 2)
    tolerance_s = ensure_nesting_level(tolerance_s, 2)
    curves_out = []
    for params in zip_long_repeat(curve_s, degree_s, tolerance_s):
        new_curves = []
        for curve, degree, tolerance in zip_long_repeat(*params):
            curve = SvNurbsCurve.to_nurbs(curve)
            if curve is None:
                raise Exception("One of curves is not NURBS")
            if self.mode == 'DELTA':
                kwargs = dict(delta = degree)
            else:
                kwargs = dict(target = degree)
            curve = curve.reduce_degree(tolerance=tolerance,
                        if_possible = self.if_possible,
                        logger = self.sv_logger,
                        **kwargs)
            new_curves.append(curve)
        if flat_output:
            curves_out.extend(new_curves)
        else:
            curves_out.append(new_curves)
    self.outputs['Curve'].sv_set(curves_out)