anchor.diff:        }
       }, formatters: formatters);
       if (expressionFn.isAssignable) {
  -      scope.watch(dstExpression, (outboundValue, _) {
  +      directiveScope.watch(dstExpression, (outboundValue, _) {
           if (!viewOutbound) {
             viewInbound = true;
             scope.rootScope.runAsync(() => viewInbound = false);
             expressionFn.assign(scope.context, outboundValue);
             tasks.completeTask(taskId);
           }
  -      }, context: controller, formatters: formatters);
  +      }, formatters: formatters);
       }
     }
   
  
positive.code: 
          case '<=>': // two-way
            if (nodeAttrs[attrName] == null) return;
  
            _bindTwoWay(tasks, nodeAttrs[attrName], scope, dstPathFn,
                directive, formatters, dstExpression);
            break;
  
  
negative.code: 
    void _createAttrMappings(directive, scope, List<MappingParts> mappings, nodeAttrs, formatters,
                             tasks) {
      Scope directiveScope; // Only created if there is a two-way binding in the element.
      mappings.forEach((MappingParts p) {
        var attrName = p.attrName;
        var dstExpression = p.dstExpression;
  