Java-класс хелпера переехал в Groovy на стороне сборочного скрипта, и тот же вызов ушёл в другой метод. По порядку.
class Printer {
void show(Object o) { println 'object' }
void show(String s) { println 'string' }
void run(Object x) { show(x) }
}
new Printer().run('hi')
В Java объявленный тип x - это Object, поэтому show(Object) выбирается при компиляции и печатается object. Groovy выбирает метод во время выполнения по фактическому типу аргумента, поэтому тот же код печатает string. В документации это описано как multi-methods, так что это не баг.
Путает третий случай. Стоит повесить на класс @CompileStatic, и снова печатается object. То есть один и тот же исходник вызывает разные методы в зависимости от одной аннотации. Есть ещё несколько хелперов с перегрузками по типам, и хочется понять, вешают ли @CompileStatic на файл или на класс, или правильнее вообще избавиться от перегрузок.