Fix bugs in migrator, ish.
diff --git a/errorprone/src/main/java/org/robolectric/errorprone/bugpatterns/DeprecatedMethodsCheck.java b/errorprone/src/main/java/org/robolectric/errorprone/bugpatterns/DeprecatedMethodsCheck.java
index 3975e4e..c6612ce 100644
--- a/errorprone/src/main/java/org/robolectric/errorprone/bugpatterns/DeprecatedMethodsCheck.java
+++ b/errorprone/src/main/java/org/robolectric/errorprone/bugpatterns/DeprecatedMethodsCheck.java
@@ -84,7 +84,7 @@
                     // transform `ShadowApplication.getInstance()`
                     //  to `shadowOf(RuntimeEnvironment.application)`:
                     Tree parent = state.getPath().getParentPath().getLeaf();
-                    replaceAssignmentRhs(parent, createSyntheticShadowAccess(state));
+                    // replaceAssignmentRhs(parent, createSyntheticShadowAccess(state));
 
                     possibleFixes.put(
                         parent,
diff --git a/errorprone/src/main/java/org/robolectric/errorprone/bugpatterns/ShadowUsageCheck.java b/errorprone/src/main/java/org/robolectric/errorprone/bugpatterns/ShadowUsageCheck.java
index c5ecf47..bd76348 100644
--- a/errorprone/src/main/java/org/robolectric/errorprone/bugpatterns/ShadowUsageCheck.java
+++ b/errorprone/src/main/java/org/robolectric/errorprone/bugpatterns/ShadowUsageCheck.java
@@ -62,6 +62,7 @@
 import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
 import com.sun.tools.javac.tree.TreeMaker;
 import com.sun.tools.javac.util.List;
+import com.sun.tools.javac.util.Name;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -207,7 +208,8 @@
                     replaceNode =
                         fieldAccess.selected =
                             createSyntheticShadowAccess(
-                                identifierTree, fieldAccess, shadowOfCall, newVarName, state);
+                                identifierTree, fieldAccess, shadowOfCall, newVarName, symbol,
+                                state);
                   } else {
                     identifierTree.name = state.getName(newVarName);
                     identifierTree.sym.name = state.getName(newVarName);
@@ -354,6 +356,7 @@
                                 (JCFieldAccess) container,
                                 shadowOfCall,
                                 newFieldName,
+                                symbol,
                                 state);
                       }
 
@@ -454,20 +457,38 @@
       JCFieldAccess fieldAccess,
       MethodInvocationTree shadowOfCall,
       String newFieldName,
+      Symbol originalSymbol,
       VisitorState state) {
     TreeMaker treeMaker = state.getTreeMaker();
 
+    Symbol newSymbol = createSymbol(originalSymbol, state.getName(newFieldName),
+        ((JCExpression) shadowOfCall.getArguments().get(0)).type);
+
     JCMethodInvocation callShadowOf =
         treeMaker.Apply(
             null,
             (JCExpression) shadowOfCall.getMethodSelect(),
-            List.of(treeMaker.Ident(state.getName(newFieldName))));
-    callShadowOf.type = new UnknownType();
+            com.sun.tools.javac.util.List.of(createIdent(treeMaker, newSymbol)));
+    callShadowOf.type = ((JCMethodInvocation) shadowOfCall).type;
     fieldAccess.selected = callShadowOf;
     callShadowOf.pos = replaceNode.pos;
     return callShadowOf;
   }
 
+  private static Symbol createSymbol(Symbol oldSymbol, Name newName, Type newType) {
+    Symbol newSymbol = oldSymbol.clone(oldSymbol.owner);
+    newSymbol.name = newName;
+    newSymbol.type = newType;
+    return newSymbol;
+  }
+
+  private static JCIdent createIdent(TreeMaker treeMaker, Symbol symbol) {
+    JCIdent newFieldIdent = treeMaker.Ident(symbol.name);
+    newFieldIdent.type = symbol.type;
+    newFieldIdent.sym = symbol;
+    return newFieldIdent;
+  }
+
   private static boolean isMethodParam(Symbol fieldSymbol, TreePath path) {
     JCMethodDecl enclosingMethodDecl = ASTHelpers.findEnclosingNode(path, JCMethodDecl.class);
     if (enclosingMethodDecl != null) {