def METHOD_NAME(self):
    if not any(socket.is_linked for socket in self.outputs):
        return
    curve1_s = self.inputs['Curve1'].sv_get()
    curve2_s = self.inputs['Curve2'].sv_get()
    curve1_s = ensure_nesting_level(curve1_s, 2, data_types=(SvCurve,))
    curve2_s = ensure_nesting_level(curve2_s, 2, data_types=(SvCurve,))
    points_out = []
    t1_out = []
    t2_out = []
    object_idx = 0
    for curve1s, curve2s in zip_long_repeat(curve1_s, curve2_s):
        new_points = []
        new_t1 = []
        new_t2 = []
        for (i, curve1), (j, curve2) in self.match(curve1s, curve2s):
            curve1 = SvNurbsCurve.to_nurbs(curve1)
            if curve1 is None:
                raise Exception("Curve1 is not a NURBS")
            curve2 = SvNurbsCurve.to_nurbs(curve2)
            if curve2 is None:
                raise Exception("Curve2 is not a NURBS")
            if self.implementation == 'SCIPY':
                t1s, t2s, ps = self.process_native(curve1, curve2)
            else:
                t1s, t2s, ps = self.process_freecad(curve1, curve2)
            if self.check_intersection:
                if not ps:
                    raise Exception(f"Object #{object_idx}: Curve #{i} does not intersect with curve #{j}!")
            if self.single:
                if len(ps) >= 1:
                    ps = ps[0]
                    t1s = t1s[0]
                    t2s = t2s[0]
            new_points.append(ps)
            new_t1.append(t1s)
            new_t2.append(t2s)
        if self.split:
            n = len(curve1s)
            new_points = split_by_count(new_points, n)
            new_t1 = split_by_count(new_t1, n)
            new_t1 = transpose_list(new_t1)
            new_t2 = split_by_count(new_t2, n)
        points_out.append(new_points)
        t1_out.append(new_t1)
        t2_out.append(new_t2)
        object_idx += 1
    self.outputs['Intersections'].sv_set(points_out)
    self.outputs['T1'].sv_set(t1_out)
    self.outputs['T2'].sv_set(t2_out)