This function is what recursively tries to connect a left and right together
This function is what recursively tries to connect a left and right together
There is some cleverness in the use of internal try-catch to catch exceptions during the recursive decent and then rethrow them with extra information added. This gives the user a 'path' to where in the connections things went wrong.
BiConnect.connect executes a bidirectional connection element-wise.
Note that the arguments are left and right (not source and sink) so the intent is for the operation to be commutative.
The connect operation will recurse down the left Data (with the right Data). An exception will be thrown if a movement through the left cannot be matched in the right (or if the right side has extra fields).
See elemConnect for details on how the root connections are issued.