Them being completely independent makes certain outputs harder, because transforms should be unaware of other ones at the moment.

Solution

Make them somehow aware of each other, then we could make our analysis easier which would lead to simpler implementation and cleaner output.

The only thing that really can be done is to merge them into a single package. Question is how people would opt-in into a certain transform?

Make current class transforms somehow only activate a certain flag in the central created class transform. That suffers from versioning problem, partly described by @loganfsmyth here - I think that would confuse people that for having a certain feature/bug fix from transform A they need to upgrade actually some other transform.

Remove old transforms and just merge them into one that would accept a simple and clear options object.

WDYT? I'd like to work on it to finally resolve https://github.com/babel/babel/pull/6963 .