diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index 8b86ca8..e21b00a 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -3,6 +3,11 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.graph;
 
+import static com.android.tools.r8.graph.DexEncodedMethod.CompilationState.PROCESSED_INLINING_CANDIDATE_PACKAGE_PRIVATE;
+import static com.android.tools.r8.graph.DexEncodedMethod.CompilationState.PROCESSED_INLINING_CANDIDATE_PRIVATE;
+import static com.android.tools.r8.graph.DexEncodedMethod.CompilationState.PROCESSED_INLINING_CANDIDATE_PUBLIC;
+import static com.android.tools.r8.graph.DexEncodedMethod.CompilationState.PROCESSED_NOT_INLINING_CANDIDATE;
+
 import com.android.tools.r8.code.Const;
 import com.android.tools.r8.code.ConstString;
 import com.android.tools.r8.code.ConstStringJumbo;
@@ -90,19 +95,23 @@
     }
   }
 
+  public boolean isPublicInlining() {
+    return compilationState == PROCESSED_INLINING_CANDIDATE_PUBLIC;
+  }
+
   public void markProcessed(InliningConstraint state) {
     switch (state) {
       case ALWAYS:
-        compilationState = CompilationState.PROCESSED_INLINING_CANDIDATE_PUBLIC;
+        compilationState = PROCESSED_INLINING_CANDIDATE_PUBLIC;
         break;
       case PACKAGE:
-        compilationState = CompilationState.PROCESSED_INLINING_CANDIDATE_PACKAGE_PRIVATE;
+        compilationState = PROCESSED_INLINING_CANDIDATE_PACKAGE_PRIVATE;
         break;
       case PRIVATE:
-        compilationState = CompilationState.PROCESSED_INLINING_CANDIDATE_PRIVATE;
+        compilationState = PROCESSED_INLINING_CANDIDATE_PRIVATE;
         break;
       case NEVER:
-        compilationState = CompilationState.PROCESSED_NOT_INLINING_CANDIDATE;
+        compilationState = PROCESSED_NOT_INLINING_CANDIDATE;
         break;
     }
   }
diff --git a/src/main/java/com/android/tools/r8/ir/code/FieldInstruction.java b/src/main/java/com/android/tools/r8/ir/code/FieldInstruction.java
index e93f3a5..ba1e0e9 100644
--- a/src/main/java/com/android/tools/r8/ir/code/FieldInstruction.java
+++ b/src/main/java/com/android/tools/r8/ir/code/FieldInstruction.java
@@ -49,9 +49,6 @@
     DexEncodedField target = info.lookupInstanceTarget(fieldHolder, field);
     DexClass fieldClass = info.definitionFor(fieldHolder);
     if ((target != null) && (fieldClass != null) && !fieldClass.isLibraryClass()) {
-      if (isInstanceGet() || isInstancePut()) {
-        return Inliner.InliningConstraint.PRIVATE;
-      }
       DexAccessFlags flags = target.accessFlags;
       if (flags.isPublic()) {
         return Inliner.InliningConstraint.ALWAYS;
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
index bc9b95e..f677637 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
@@ -257,6 +257,12 @@
               if (target.accessFlags.isConstructor() && !legalConstructorInline(method, inlinee)) {
                 continue;
               }
+              // Ensure the container is compatible with the target.
+             if (!forceInline
+                 && !result.target.isPublicInlining()
+                 && (method.method.getHolder() != result.target.method.getHolder())) {
+                continue;
+              }
               DexType downcast = null;
               if (invoke.isInvokeMethodWithReceiver()) {
                 // If the invoke has a receiver but the declared method holder is different
diff --git a/src/test/examples/shaking1/print-mapping.ref b/src/test/examples/shaking1/print-mapping.ref
index d9e7f7b..8382304 100644
--- a/src/test/examples/shaking1/print-mapping.ref
+++ b/src/test/examples/shaking1/print-mapping.ref
@@ -1,3 +1,4 @@
 shaking1.Shaking -> shaking1.Shaking:
 shaking1.Used -> shaking1.a:
     java.lang.String name -> a
+    java.lang.String method() -> a
