`for (collection in this.members.values()) { ... }` would iterate through the index numbers of the array.

Very good point about the lack of handling about no collection accepting `source` and `target`. I've been thinking of what to do in these cases, but not too sure yet. Will definitely make sure to do something about this at some stage.