def person1 = [firstName:"RJ", lastName:"Salicco", toString:{ return "$firstName $lastName" }] as Expando def person2 = [firstName:"Mike", lastName:"Test", toString:{ return "$firstName $lastName" }] as Expando def person3 = [firstName:"Test", lastName:"Value", toString:{ return "$firstName $lastName" }] as Expando interface Service { void doWork(Object... o) } impl = { args -> c = args[-1] if(c instanceof Closure) c.call(args-c) else args.each { println "$it " } } as Service impl.doWork(person1, person2, person3) impl.doWork(person1, person2, person3) { a, b, c -> println "$a, $b, $c [I wanted something different!]" }