anchor.diff:  
         switch (p.mode) {
           case '@': // string
  -          var taskId = tasks.registerTask();
  +          var taskId = (tasks != null) ? tasks.registerTask() : 0;
             nodeAttrs.observe(attrName, (value) {
               dstAST.parsedExp.assign(directive, value);
  -            tasks.completeTask(taskId);
  +            if (tasks != null) tasks.completeTask(taskId);
             });
             break;
   
  
positive.code:       }
  
        if (directive is AttachAware) {
          var taskId = tasks.registerTask();
          Watch watch;
          watch = scope.watch('1', // Cheat a bit.
              (_, __) {
            watch.remove();
            tasks.completeTask(taskId);
          });
        }
  
        tasks.doneRegistering();
  
        if (directive is DetachAware) {
          scope.on(ScopeEvent.DESTROY).listen((_) => directive.detach());
  
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);
  