> Yet, have a look at my example with private methods All of the bug reports, code excerts use regular (public) methods. Do you have code to share with !private_methods and/or submethods? I just made an example, will be at the end of this email
> If accidentally two roles declare same private method – I either must reject using one of them or resolve the conflict manually ... The docs say what to do if two roles declare the same regular method. I would expect the same to hold for private methods, and submethods- the consuming class would need to define its own same-named submethod or private method, calling the whichever role routine(s) it needs. it sounds like you'd like to have a role be able to declare some routines which only other methods in the role can use- not the consuming class, or any other role. Turns out that private methods in roles do the trick! use v6; # Turn anything into a public entertainer role Diva { method captivate (&talent) { say "tais toi!"; self.&talent; self!bow; } method !bow { say "<takes a bow>" } } # Learn to play role Violinist { method fiddle { say "got sheet music, got rosin..."; self!bow; } method !bow { say "<world's most beautiful melodies>" } } # cute and playful class Puppy { method greet { say "<sniff>"; self!bow; } method !bow { say "Bow wow wow!" } } my $best_friend=(Puppy.new but Violinist) but Diva; $best_friend.greet; $best_friend.captivate($best_friend.^lookup('fiddle')); says *<sniff>* *Bow wow wow!* *tais toi!* *got sheet music, got rosin...* *<world's most beautiful melodies>* *<takes a bow>* I'm very happy with that behavior. Would like it to be documented. (And, I'll add comments to your bug tickets now) -y