def METHOD_NAME(self):
    if not any(socket.is_linked for socket in self.outputs):
        return
    surfaces_s = self.inputs['Surface'].sv_get()
    surfaces_s = ensure_nesting_level(surfaces_s, 2, data_types=(SvSurface,))
    curves_s = self.inputs['Curve'].sv_get()
    curves_s = ensure_nesting_level(curves_s, 2, data_types=(SvCurve,))
    tolerance = 10**(-self.accuracy)
    points_out = []
    u_out = []
    for surfaces, curves in zip_long_repeat(surfaces_s, curves_s):
        for surface, curve in zip_long_repeat(surfaces, curves):
            result = intersect_curve_surface(curve, surface,
                        init_samples = self.curve_samples,
                        raycast_samples = self.raycast_samples,
                        tolerance = tolerance,
                        raycast_method = self.raycast_method,
                        support_nurbs = self.use_nurbs
                    )
            new_points = [p[1] for p in result]
            new_u = [p[0] for p in result]
            points_out.append(new_points)
            u_out.append(new_u)
    self.outputs['Point'].sv_set(points_out)
    self.outputs['T'].sv_set(u_out)