code: boolean expectCanAssignTo(Node n, JSType rightType, JSType leftType, String msg) {
      if (!rightType.isSubtypeOf(leftType)) {
        mismatch(n, msg, rightType, leftType);
        return false;
      } else if (!rightType.isSubtypeWithoutStructuralTyping(leftType)) {
        TypeMismatch.recordImplicitInterfaceUses(this.implicitInterfaceUses, n, rightType, leftType);
        TypeMismatch.recordImplicitUseOfNativeObject(this.mismatches, n, rightType, leftType);
      }
      return true;
    }
docs: Expect that the first type can be assigned to a symbol of the second type.
  
  @param t The node traversal.
  @param n The node to issue warnings on.
  @param rightType The type on the RHS of the assign.
  @param leftType The type of the symbol on the LHS of the assign.
  @param msg An extra message for the mismatch warning, if necessary.
  @return True if the types matched, false otherwise.