Do not rebind field accesses if that would conflict with visibility.

This changes the assumption that field accesses are always dispatched to
an actual definition. Moving forward, your analysis has to make sure that
the field id is dispatched first.

This change also changes the semantics of some fields in AppInfoWithLiveness
to reflect this change.

Bug: 38187737
Change-Id: I221dac4ded6a6708d5bfc01bdd7a51a7b516294a
diff --git a/src/test/examples/memberrebinding/Test.java b/src/test/examples/memberrebinding/Memberrebinding.java
similarity index 97%
rename from src/test/examples/memberrebinding/Test.java
rename to src/test/examples/memberrebinding/Memberrebinding.java
index 62a2440..74c99fd 100644
--- a/src/test/examples/memberrebinding/Test.java
+++ b/src/test/examples/memberrebinding/Memberrebinding.java
@@ -6,7 +6,7 @@
 import memberrebinding.subpackage.PublicClass;
 import memberrebindinglib.AnIndependentInterface;
 
-public class Test {
+public class Memberrebinding {
 
   public static void main(String[] args) {
     ClassAtBottomOfChain bottomInstance = new ClassAtBottomOfChain();