anchor.diff:        try {
           var linkMapTimer;
           assert((linkTimer = _perf.startTimer('ng.view.link', ref.type)) != false);
  -        var controller = nodeInjector.get(ref.type);
  -        probe.directives.add(controller);
  +        var directive = nodeInjector.get(ref.type);
  +        probe.directives.add(directive);
           assert((linkMapTimer = _perf.startTimer('ng.view.link.map', ref.type)) != false);
   
           if (ref.annotation is Controller) {
  -          scope.context[(ref.annotation as Controller).publishAs] = controller;
  -        }
  -
  -        var tasks = new _TaskList(controller is AttachAware ? () {
  -          if (scope.isAttached) controller.attach();
  +          scope.context[(ref.annotation as Controller).publishAs] = directive;
  +        }
  +
  +        var tasks = new _TaskList(directive is AttachAware ? () {
  +          if (scope.isAttached) directive.attach();
           } : null);
   
           if (ref.mappings.isNotEmpty) {
             if (nodeAttrs == null) nodeAttrs = new _AnchorAttrs(ref);
  -          _createAttrMappings(controller, scope, ref.mappings, nodeAttrs, formatters, tasks);
  -        }
  -
  -        if (controller is AttachAware) {
  +          _createAttrMappings(directive, scope, ref.mappings, nodeAttrs, formatters, tasks);
  +        }
  +
  +        if (directive is AttachAware) {
             var taskId = tasks.registerTask();
             Watch watch;
             watch = scope.watch('1', // Cheat a bit.
  
positive.code:         case '@': // string
            var taskId = tasks.registerTask();
            nodeAttrs.observe(attrName, (value) {
              dstPathFn.assign(controller, value);
              tasks.completeTask(taskId);
            });
            break;
  
negative.code:           if (nodeAttrs[attrName] == null) return;
  
            _bindTwoWay(tasks, nodeAttrs[attrName], scope, dstPathFn,
                directive, formatters, dstExpression);
            break;
  
          case '=>': // one-way
            if (nodeAttrs[attrName] == null) return;
            _bindOneWay(tasks, nodeAttrs[attrName], scope,
                dstPathFn, directive, formatters);
            break;
  
          case '=>!': //  one-way, one-time
  