anchor.diff:            viewInbound = true;
             scope.rootScope.runAsync(() => viewInbound = false);
             ast.parsedExp.assign(scope.context, outboundValue);
  -          tasks.completeTask(taskId);
  +          if (tasks != null) tasks.completeTask(taskId);
           }
         });
       }
     }
   
     _bindOneWay(tasks, ast, scope, AST dstAST, controller) {
  -    var taskId = tasks.registerTask();
  +    var taskId = (tasks != null) ? tasks.registerTask() : 0;
   
       scope.watchAST(ast, (v, _) {
         dstAST.parsedExp.assign(controller, v);
  -      tasks.completeTask(taskId);
  +      if (tasks != null) tasks.completeTask(taskId);
       });
     }
   
  
positive.code:         viewOutbound = true;
          scope.rootScope.runAsync(() => viewOutbound = false);
          var value = dstAST.parsedExp.assign(controller, inboundValue);
          tasks.completeTask(taskId);
          return value;
        }
      });
  
negative.code:         scope.context[(ref.annotation as Controller).publishAs] = directive;
        }
  
        var tasks = directive is AttachAware ? new _TaskList(() {
          if (scope.isAttached) directive.attach();
        }) : null;
  
        if (ref.mappings.isNotEmpty) {
          if (nodeAttrs == null) nodeAttrs = new _AnchorAttrs(ref);
  