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:         ])));
  }
  
  /// The same as [_bind], but we know that [checkExpression] is a literal.
  ///
  /// This means we don't need to create a change detection field or check if it
  /// has changed. We know for sure that there will only be one transition from
  /// [null] to whatever the value of [checkExpression] is. So we can just output
  /// the [actions] and run them once on the first change detection run.
  void _bindLiteral(
      o.Expression checkExpression,
      List<o.Statement> actions,
  
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,
  