class Conditional { private fn def run( fn ) { this.fn = fn this } def when( cond ) { if( cond ) fn() } def call(obj) { obj } } Conditional c = new Conditional() c.with { def a = "" run { a = "cool" } when ( 19 > 100 ) assert a == "" run { a = "cool" } when ( 19 > 1 ) assert a == "cool" print a }