diff --git a/lib/Migrator/APIDiffMigratorPass.cpp b/lib/Migrator/APIDiffMigratorPass.cpp
index ef8f0bf..815be1d 100644
--- a/lib/Migrator/APIDiffMigratorPass.cpp
+++ b/lib/Migrator/APIDiffMigratorPass.cpp
@@ -1102,6 +1102,25 @@
     }
   }
 
+  // If a property has changed from nonnull to nullable, we should add ! to the
+  // reference of the property.
+  bool handlePropertyTypeChange(Expr *E) {
+    if (auto MRE = dyn_cast<MemberRefExpr>(E)) {
+      if (auto *VD = MRE->getReferencedDecl().getDecl()) {
+        for (auto *I: getRelatedDiffItems(VD)) {
+          if (auto *Item = dyn_cast<CommonDiffItem>(I)) {
+            if (Item->DiffKind == NodeAnnotation::WrapOptional &&
+                Item->NodeKind == SDKNodeKind::DeclVar) {
+              Editor.insertAfterToken(E->getEndLoc(), "!");
+              return true;
+            }
+          }
+        }
+      }
+    }
+    return false;
+  }
+
   bool walkToExprPre(Expr *E) override {
     if (E->getSourceRange().isInvalid())
       return false;
@@ -1115,6 +1134,8 @@
       return false;
     if (handleAttributeReference(E))
       return false;
+    if (handlePropertyTypeChange(E))
+      return false;
     if (auto *CE = dyn_cast<CallExpr>(E)) {
       auto Fn = CE->getFn();
       auto Args = CE->getArg();
diff --git a/test/Migrator/Inputs/CallExpr.json b/test/Migrator/Inputs/CallExpr.json
index ec11dd5..431f4cd 100644
--- a/test/Migrator/Inputs/CallExpr.json
+++ b/test/Migrator/Inputs/CallExpr.json
@@ -20,5 +20,16 @@
     "RightUsr": "",
     "RightComment": "",
     "ModuleName": "Cities"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:6CitiesAAC4nameSSvp",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Cities"
   }
 ]
diff --git a/test/Migrator/Inputs/Cities.swift b/test/Migrator/Inputs/Cities.swift
index 5cb7320..dc04453 100644
--- a/test/Migrator/Inputs/Cities.swift
+++ b/test/Migrator/Inputs/Cities.swift
@@ -1,5 +1,6 @@
 open class Cities {
   var x: Int
+  public var name: String = ""
   public init(x: Int) { self.x = x }
   public init!(y: Int) { self.x = y }
   open func mooloolaba(x: Cities, y: Cities?) {}
diff --git a/test/Migrator/call_expr_result.swift b/test/Migrator/call_expr_result.swift
index 01f1c8b..55dfcc5 100644
--- a/test/Migrator/call_expr_result.swift
+++ b/test/Migrator/call_expr_result.swift
@@ -10,4 +10,8 @@
   let c1 = Cities(x: 3)
   _ = Cities.init(x: 3)
   _ = c1.noosa()
-}
\ No newline at end of file
+  _ = c1.name
+  bar(c1.name)
+}
+
+func bar(_ n: String) {}
diff --git a/test/Migrator/call_expr_result.swift.expected b/test/Migrator/call_expr_result.swift.expected
index 4210d21..1a211b0 100644
--- a/test/Migrator/call_expr_result.swift.expected
+++ b/test/Migrator/call_expr_result.swift.expected
@@ -10,4 +10,8 @@
   let c1 = Cities(x: 3)!
   _ = Cities.init(x: 3)!
   _ = c1.noosa()!
-}
\ No newline at end of file
+  _ = c1.name!
+  bar(c1.name!)
+}
+
+func bar(_ n: String) {}
