public IfGenerator(IfExecute ifExecute) : base(ifExecute) { var _if = ifExecute.@if; condition = _if.Condition; resultGenerator = new Block.BlockGenerator(_if.Result); _elseIf = maybe(_if.Next != null, () => new IfGenerator(new IfExecute(_if.Next))); _elseBlockGenerator = maybe(_if.ElseBlock != null, () => new Block.BlockGenerator(_if.ElseBlock)); }