Here is a use case that I think would be very useful when porting code, especially small bug fixes, across forks. I have wanted to add this to DeltaStreams.
You fix a bug in squeak.org, and it involves changing the #foo method from:
foo ^ 1
to:
foo self ensureWhizbangInitialized. ^ 1
Now, you realize that this bug needs to be fixed in Croquet as well, where foo looks like:
foo ^ 2
So, you try loading the bug fix into Croquet, and, naturally, it brings up a conflict that you must resolve, since the expected previous method does not match the actual installed method. You resolve it like:
foo self ensureWhizbangInitialized. ^ 2
and forget about it, because the system has recorded this as an alternative, and whoever fetches the bug fix in the future will receive both versions and automatically choose the one that best matches their fork and has the same previous method that you had when you resolved the conflict.
I haven't really thought about how this would work if you needed to specify alternative groups of methods, again dependent on which fork you load code into.
spoon@lists.squeakfoundation.org