anchor.diff:                  else
                       if isNullableTy g calledArgTy  then 
                           // CSharpMethod(x=b) when 'x' has nullable type
  -                        if isNullableTy g callerArgTy then 
  -                            // CSharpMethod(x=b) when both 'x' and 'b' have nullable type --> CSharpMethod(x=b)
  -                            callerArgExpr
  -                        else
  -                            // CSharpMethod(x=b) when 'x' has nullable type and 'b' does not --> CSharpMethod(x=Nullable(b))
  -                            let calledNonOptTy = destNullableTy g calledArgTy 
  -                            let minfo = GetIntrinsicConstructorInfosOfType infoReader m calledArgTy |> List.head
  -                            let callerArgExprCoerced = mkCoerceIfNeeded g calledNonOptTy callerArgTy callerArgExpr
  -                            MakeMethInfoCall amap m minfo [] [callerArgExprCoerced]
  +                        // CSharpMethod(x=b) when both 'x' and 'b' have nullable type --> CSharpMethod(x=b)
  +                        // CSharpMethod(x=b) when 'x' has nullable type and 'b' does not --> CSharpMethod(x=Nullable(b))
  +                        MakeNullableExprIfNeeded infoReader calledArgTy callerArgTy callerArgExpr m
                       else 
                           // CSharpMethod(x=b) --> CSharpMethod(?x=b)
                           callerArgExpr
  
positive.code:                     callerArgExpr 
                  else                            
                      // CSharpMethod(x=b) when CSharpMethod(A) --> CSharpMethod(?x=Some(b :> A))
                      let calledArgTy = assignedArg.CalledArg.CalledArgumentType
                      if isOptionTy g calledArgTy then 
                          let calledNonOptTy = destOptionTy g calledArgTy 
                          let callerArgExprCoerced = mkCoerceIfNeeded g calledNonOptTy callerArgTy callerArgExpr
  
negative.code:             calledArgTy
      else
          match calledArg.OptArgInfo with 
          // CSharpMethod(x = arg), non-optional C#-style argument, may have type Nullable<ty>. 
          | NotOptional when not (g.langVersion.SupportsFeature LanguageFeature.NullableOptionalInterop) ->
              calledArgTy
  
          // The arg should have type ty. However for backwards compat, we also allow arg to have type Nullable<ty>
          | NotOptional 
          // CSharpMethod(x = arg), optional C#-style argument, may have type Nullable<ty>. 
          | CallerSide _ ->
              if isNullableTy g calledArgTy && g.langVersion.SupportsFeature LanguageFeature.NullableOptionalInterop then 
                  // If inference has worked out it's a nullable then use this
  