def METHOD_NAME(self):
    if not any(socket.is_linked for socket in self.outputs):
        return
    curve_s = self.inputs['Curve'].sv_get()
    t_before_s = self.inputs['StartExt'].sv_get()
    t_after_s = self.inputs['EndExt'].sv_get()
    t_before_s = ensure_nesting_level(t_before_s, 2)
    t_after_s = ensure_nesting_level(t_after_s, 2)
    curve_s = ensure_nesting_level(curve_s, 2, data_types=(SvCurve,))
    start_out = []
    end_out = []
    curve_out = []
    for curves, t_before_i, t_after_i in zip_long_repeat(curve_s, t_before_s, t_after_s):
        for curve, t_before, t_after in zip_long_repeat(curves, t_before_i, t_after_i):
            start_extent, end_extent = extend_curve(curve, t_before, t_after,
                                        mode = self.mode,
                                        len_mode = self.len_mode,
                                        len_resolution = self.len_resolution)
            start_out.append(start_extent)
            end_out.append(end_extent)
            curves = []
            if start_extent is not None:
                curves.append(start_extent)
            curves.append(curve)
            if end_extent is not None:
                curves.append(end_extent)
            new_curve = concatenate_curves(curves)#, allow_generic=False)
            curve_out.append(new_curve)
    self.outputs['StartExtent'].sv_set(start_out)
    self.outputs['EndExtent'].sv_set(end_out)
    self.outputs['ExtendedCurve'].sv_set(curve_out)