anchor.diff:        var bindAttr = bindAttrs["bind-${p.attrName}"];
         if (bindAttr != null) {
           if (p.mode == '<=>') {
  -          _bindTwoWay(tasks, bindAttr, scope, dstPathFn,
  +          if (directiveScope == null) {
  +            directiveScope = scope.createChild(directive);
  +          }
  +          _bindTwoWay(tasks, bindAttr, scope, directiveScope, dstPathFn,
                 directive, formatters, dstExpression);
           } else if(p.mode == '&') {
             _bindCallback(dstPathFn, directive, bindAttr, scope);
  
positive.code: 
          case '<=>': // two-way
            if (nodeAttrs[attrName] == null) return;
  
            _bindTwoWay(tasks, nodeAttrs[attrName], scope, dstPathFn,
                directive, formatters, dstExpression);
            break;
  
  
negative.code:   bool get hasDirectivesOrEvents =>
        _usableDirectiveRefs.isNotEmpty || onEvents.isNotEmpty;
  
    void _bindTwoWay(tasks, expression, scope, directiveScope,
                     dstPathFn, controller, formatters, dstExpression) {
      var taskId = tasks.registerTask();
      Expression expressionFn = _parser(expression);
  
  