I just noticed something strange around the top-level match method.
In version 5.1.0, the match function return type is a union of the return types of the case functions:

In version 6.3.0, the match function return type is an array of the return types of the case functions:

When executed, the return type appears to always be consistent with the 5.1.0 return type above.