         dynamic.clear()
 
   unless: (ast, model, controller) ->
-    Compile.bound ast, model, controller, (dynamic, value) ->
+    @bound ast, model, controller, (dynamic, value) ->
       if value
         dynamic.clear()
       else

    dynamic

  in: (ast, model, controller) ->
    Compile.bound ast, model, controller, (dynamic, value) ->
      if value
        dynamic.replace([compileAll(ast.children, value, controller)])
      else
        dynamic.clear()

  if: (ast, model, controller) ->
    Compile.bound ast, model, controller, (dynamic, value) ->
      if value
        dynamic.replace([compileAll(ast.children, model, controller)])
      else if ast.else

    dynamic

compile = (ast, model, controller) -> Compile[ast.type](ast, model, controller)
compileAll = (asts, model, controller) -> compile(ast, model, controller) for ast in asts
