Hi Jochen, Thanks for looking, and for the findings - interesting!
Actually I think my reproducer was not a good representation of the real issue I saw in production. I added the getName() call in my first repro as a random thing to do with the argument, but that introduced unintended behaviour. My real case is closer to this (literally implementations of List, in my case): ``` def foo(List<String> x) { } def bar(List<String> x) { foo(x) } List<String> l1 = new ArrayList(); List<String> l2 = new LinkedList(); while (true) { bar(l1) 127.times { bar(l2) } } ``` The call site causing the difficulty here is (I think) foo(x) within bar, where a 'sameClasses' guard is inserted and invalidates the previous method handle whenever the argument class changes (LinkedList != ArrayList) - I confirmed this by adding logging to the guard. Oli P.S. I now have a JIRA account for Groovy, should I create a ticket? Amazon Development Centre (London) Ltd. Registered in England and Wales with registration number 04543232 with its registered office at 1 Principal Place, Worship Street, London EC2A 2FA, United Kingdom.