def METHOD_NAME(self):
    if not any(socket.is_linked for socket in self.outputs):
        return
    curve_s = self.inputs['Curve'].sv_get()
    t_min_s = self.inputs['TMin'].sv_get()
    t_max_s = self.inputs['TMax'].sv_get()
    resolution_s = self.inputs['Resolution'].sv_get()
    curve_s = ensure_nesting_level(curve_s, 2, data_types=(SvCurve,))
    t_min_s = ensure_nesting_level(t_min_s, 2)
    t_max_s = ensure_nesting_level(t_max_s, 2)
    resolution_s = ensure_nesting_level(resolution_s, 2)
    if self.specify_accuracy:
        tolerance = 10 ** (-self.accuracy)
    else:
        tolerance = None
    length_out = []
    for params in zip_long_repeat(curve_s, t_min_s, t_max_s, resolution_s):
        new_lengths = []
        for curve, t_min, t_max, resolution in zip_long_repeat(*params):
            if self.mode == 'REL':
                curve_t_min, curve_t_max = curve.get_u_bounds()
                curve_t_range = curve_t_max - curve_t_min
                t_min = t_min * curve_t_range + curve_t_min
                t_max = t_max * curve_t_range + curve_t_min
            if t_min >= t_max:
                length = 0.0
            else:
                # "resolution" is for whole range of curve;
                # take only part of it which corresponds to t_min...t_max segment.
                curve_t_min, curve_t_max = curve.get_u_bounds()
                resolution = int(resolution * (t_max - t_min) / (curve_t_max - curve_t_min))
                if resolution < 1:
                    resolution = 1
                if self.use_nurbs:
                    solver = SvNurbsCurveLengthSolver(curve)
                else:
                    solver = SvCurveLengthSolver(curve)
                solver.prepare('SPL', resolution, tolerance=tolerance)
                length = solver.calc_length(t_min, t_max)
            new_lengths.append(length)
        length_out.append(new_lengths)
    self.outputs['Length'].sv_set(length_out)