anchor.diff:      // We already set the value to the text node at creation
       return;
     }
  -
  -  var checkExpression =
  -      BoundValueConverter.forView(view, DetectChangesVars.cachedCtx)
  -          .convertSourceToExpression(binding.source, null);
  -  var updateStmt = bindingToUpdateStatement(
  -      binding, o.THIS_EXPR, compileNode.renderNode, false, checkExpression);
  -  view.detectChangesRenderPropertiesMethod.addStmt(updateStmt);
  +  _directBinding(
  +    binding,
  +    BoundValueConverter.forView(view, DetectChangesVars.cachedCtx),
  +    view.detectChangesRenderPropertiesMethod,
  +    o.THIS_EXPR,
  +    compileNode.renderNode,
  +    false,
  +  );
   }
   
   /// For each bound property, creates code to update the binding.
  
positive.code:   }
  
    for (var binding in inputs) {
      var checkExpression = converter.convertSourceToExpression(
          binding.source, binding.target.type);
  
      var inputName = (binding.target as ir.InputBinding).name;
  
      // Optimization specifically for NgIf. Since the directive already performs
      // change detection we can directly update it's input.
      // TODO: generalize to SingleInputDirective mixin.
      if (directive.identifier.name == 'NgIf' && inputName == 'ngIf') {
        var updateStatement = bindingToUpdateStatement(
            binding, directiveInstance, null, false, checkExpression);
        if (binding.source.isImmutable) {
          constantInputsMethod.addStmt(updateStatement);
        } else {
          dynamicInputsMethod.addStmt(updateStatement);
        }
        continue;
      }
      if (isStateful) {
        var updateStatement = bindingToUpdateStatement(
            binding, directiveInstance, null, false, checkExpression);
        if (binding.source.isImmutable) {
          constantInputsMethod.addStmt(updateStatement);
        } else {
          dynamicInputsMethod.addStmt(updateStatement);
        }
        continue;
      }
  
  
negative.code:     if (isOnPushComp || calcChangedState) {
        statements.add(DetectChangesVars.changed.set(o.literal(true)).toStmt());
      }
  
      var checkExpression = converter.convertSourceToExpression(
          binding.source, binding.target.type);
  
      _bind(
        view.storage,
  