import java.util.function.Supplier def loadDataIfNeccesary(cachedData) { //cachedData?:loadData() Optional.ofNullable(cachedData).orElseGet({ loadData() } as Supplier) } def loadData() { sleep(5000) // very expensive operation "fresh data" } loadDataIfNeccesary("dataz")