Consider that we have two trait defs A_def and B_def. We have a node with the trait set [A_from, B_from] that we want to convert to a node with the traits set [A_to, B_to]. Suppose that:
- A_from.satisfies(A_to) = false
- B_from.satisfies(B_to) = true
Currently, the VolcanoPlanner will invoke convert on both A_trait and B_trait, because it skips the conversion only when two traits are equal. In our example, it will lead to an unnecessary call to B_def.convert(node, B_to). This is not a big problem but it forces implementors of custom traits to double-check whether the passed node already satisfies the required trait or not.
The proposal is to replace fromTrait.equals(toTrait) with fromTrait.satisfies(toTrait).