anchor.diff:      Expression right,
       DartType rightType,
     ) {
  -    // TODO(scheglov) should not happen
  -    if (writeType == null) {
  -      return;
  -    }
  -
       if (!writeType.isVoid && _checkForUseOfVoidResult(right)) {
         return;
       }
  
positive.code:     right?.accept(_resolver);
      right = node.rightHandSide;
  
      _resolve2(node, node.writeType, doNullShortingTermination: false);
  
      // TODO(scheglov) inline into resolve2().
      DartType assignedType;
      if (operator == TokenType.EQ ||
          operator == TokenType.QUESTION_QUESTION_EQ) {
        assignedType = right.staticType;
      } else {
        assignedType = node.staticType;
      }
      _checkForInvalidAssignment(node.writeType, right, assignedType);
  
      _resolver.nullShortingTermination(node);
  
  
negative.code:   /// TODO(scheglov) this is duplication
    void _recordStaticType(Expression expression, DartType type) {
      if (_resolver.migrationResolutionHooks != null) {
        type = _migrationResolutionHooks.modifyExpressionType(expression, type);
      }
  
      // TODO(scheglov) type cannot be null
  