- Start with all methods from all used traits.
- Resolve conflicting method names using "insteadof" rules.
- Each trait offering a method may be excluded as the implementation of that method by being mentioned on the right hand side of the "insteadof" rules for the method.
- A trait cannot be mentioned on the right hand side of the "insteadof" rules for a method more than once in total.
- Of all the used traits which offer the method, either one or none must remain as the implemenation of the method. If none remain, the method does not exist after this step.
- The trait name used on the left hand side of an "insteadof" rule has no meaning, but must be one of the used traits which offer the method and must not be mentioned on the right hand side of the same "insteadof" rule.
- Add aliases.
- Qualified aliases use the method implementation from the specified trait.
- Unqualified aliases use the method implementation from the first used trait that offers it.
- The method visibility