groovy library source
memoize groovy type calculation result to combat exponential resolve in case of cyclic dependencies