Just to get the problem fully... @Delegate adds all non public and non static methods to the class, including the MOP methods. Since they are special to the other class this makes obviously no sense. Ok... but why are they duplicated? That means that most probably Verifier adds those methods ignoring that they may already exist. I think we should add a check in Verifier that ensures the MOP methods are added only if the methods are not already there. If that is the case, then it should cause a compilation error. This way other transforms won't make the same mistake. Checking for duplicated methods in ACG is IMHO not such a good idea, because ACG should not do any checks, it should just output the bytecode. If there are dulpicated methods at this point, then it needs to be solved on an more early point.
But I think the problem here is, that the MOP methods are added in ACG... only... if they are added by ACG, then why is it that @Delegate even sees them? That is maybe only if the other class is precompiled... is that possible?
I assume, that then a check in @Delegate alone would be good enough... but we should maybe think about adding an additional check for MOP methods in Verifier.