Based only on the subtree, the second option appears to be describing the case where the “method” is actually a property of closure type. For example if calling a.b(), if b is a method it calls it, but if there is a property “b” (via getB or field), and that property is of Closure type, then do a.b.call(). It seems that it should say “property exists in MetaClass or class”? I’m not a Groovy MOP expert though, but I thought only the MetaClass is used for lookups. I also don’t get the block “call interceptor or original method” in that diagram, because immediately before that it already checks if it’s GroovyInterceptable, so it seems like that block should just say “call original method”.
I'm reading through the metaprogramming section on groovy-lang.com, and the first flow chart has a duplicate decision box.
The flowchart can be found here: http://groovy-lang.org/metaprogramming.html#_runtime_metaprogramming
"Method exists in MetaClass or class?" is asked twice in a row, one after the other. Looks like a typo to me and I'm wondering if another question is supposed to be in that location or if the whole subtree under one of those is moot.