Propagate @Access and @ExclusiveAccess from @Use

Change-Id: I0fe4bf667333c9ec59de7c4ea700a8c2eeb439ef
diff --git a/jack/src/com/android/jack/backend/dex/MainDexTracer.java b/jack/src/com/android/jack/backend/dex/MainDexTracer.java
index 5e419d7..1fa5943 100644
--- a/jack/src/com/android/jack/backend/dex/MainDexTracer.java
+++ b/jack/src/com/android/jack/backend/dex/MainDexTracer.java
@@ -19,9 +19,11 @@
 import com.android.jack.analysis.tracer.Tracer;
 import com.android.jack.ir.ast.JAnnotation;
 import com.android.jack.ir.ast.JDefinedClassOrInterface;
+import com.android.jack.ir.ast.JSession;
 import com.android.jack.scheduling.feature.SourceVersion8;
 import com.android.jack.shrob.obfuscation.SubClassOrInterfaceMarker;
 import com.android.sched.item.Description;
+import com.android.sched.schedulable.Access;
 import com.android.sched.schedulable.Constraint;
 import com.android.sched.schedulable.Optional;
 import com.android.sched.schedulable.RunnableSchedulable;
@@ -35,6 +37,7 @@
  */
 @Description("Trace for main dex.")
 @Use({Tracer.class, MultiDexLegacyTracerBrush.class})
+@Access(JSession.class)
 @Constraint(need = SubClassOrInterfaceMarker.class)
 @Optional(@ToSupport(feature = SourceVersion8.class,
     add = @Constraint(need = JAnnotation.RepeatedAnnotation.class)))
diff --git a/jack/src/com/android/jack/shrob/shrink/Keeper.java b/jack/src/com/android/jack/shrob/shrink/Keeper.java
index cbfa240..0551512 100644
--- a/jack/src/com/android/jack/shrob/shrink/Keeper.java
+++ b/jack/src/com/android/jack/shrob/shrink/Keeper.java
@@ -19,9 +19,11 @@
 import com.android.jack.analysis.tracer.Tracer;
 import com.android.jack.ir.ast.JAnnotation;
 import com.android.jack.ir.ast.JDefinedClassOrInterface;
+import com.android.jack.ir.ast.JSession;
 import com.android.jack.scheduling.feature.SourceVersion8;
 import com.android.jack.shrob.obfuscation.SubClassOrInterfaceMarker;
 import com.android.sched.item.Description;
+import com.android.sched.schedulable.Access;
 import com.android.sched.schedulable.Constraint;
 import com.android.sched.schedulable.Optional;
 import com.android.sched.schedulable.RunnableSchedulable;
@@ -36,6 +38,7 @@
  */
 @Description("Marks all classes and members that will be kept when shrinking.")
 @Use({Tracer.class, KeeperBrush.class})
+@Access(JSession.class)
 @Constraint(need = SubClassOrInterfaceMarker.class)
 @Optional(@ToSupport(feature = SourceVersion8.class,
     add = @Constraint(need = JAnnotation.RepeatedAnnotation.class)))
diff --git a/jack/src/com/android/jack/shrob/shrink/ShrinkAndMainDexTracer.java b/jack/src/com/android/jack/shrob/shrink/ShrinkAndMainDexTracer.java
index 32d66b5..b311e64 100644
--- a/jack/src/com/android/jack/shrob/shrink/ShrinkAndMainDexTracer.java
+++ b/jack/src/com/android/jack/shrob/shrink/ShrinkAndMainDexTracer.java
@@ -22,9 +22,11 @@
 import com.android.jack.backend.dex.MultiDexLegacyTracerBrush;
 import com.android.jack.ir.ast.JAnnotation;
 import com.android.jack.ir.ast.JDefinedClassOrInterface;
+import com.android.jack.ir.ast.JSession;
 import com.android.jack.scheduling.feature.SourceVersion8;
 import com.android.jack.shrob.obfuscation.SubClassOrInterfaceMarker;
 import com.android.sched.item.Description;
+import com.android.sched.schedulable.Access;
 import com.android.sched.schedulable.Constraint;
 import com.android.sched.schedulable.Optional;
 import com.android.sched.schedulable.RunnableSchedulable;
@@ -38,6 +40,7 @@
  */
 @Description("Trace for shrink and main dex.")
 @Use({Tracer.class, KeeperBrush.class, MultiDexLegacyTracerBrush.class})
+@Access(JSession.class)
 @Constraint(need = SubClassOrInterfaceMarker.class)
 @Optional(@ToSupport(feature = SourceVersion8.class,
     add = @Constraint(need = JAnnotation.RepeatedAnnotation.class)))
diff --git a/jack/src/com/android/jack/transformations/annotation/ContainerAnnotationAdder.java b/jack/src/com/android/jack/transformations/annotation/ContainerAnnotationAdder.java
index ebf1ad2..d159271 100644
--- a/jack/src/com/android/jack/transformations/annotation/ContainerAnnotationAdder.java
+++ b/jack/src/com/android/jack/transformations/annotation/ContainerAnnotationAdder.java
@@ -54,7 +54,7 @@
  * Add container annotations when they are needed.
  */
 @Transform(add = {JAnnotation.class, JNameValuePair.class, JArrayLiteral.class})
-// Uses etOrCreateMethodIdWide on container JAnnotationType of JAnnotation founds on Annotable.
+// Uses getOrCreateMethodIdWide on container JAnnotationType of JAnnotation founds on Annotable.
 @ExclusiveAccess(JSession.class)
 public class ContainerAnnotationAdder {
 
@@ -65,6 +65,7 @@
   @Constraint(need = ContainerAnnotationMarker.class)
   @Transform(remove = {JAnnotation.RepeatedAnnotationOnType.class})
   @Use(ContainerAnnotationAdder.class)
+  @ExclusiveAccess(JSession.class)
   @Filter(TypeWithoutPrebuiltFilter.class)
   public static class TypeContainerAnnotationAdder extends ContainerAnnotationAdder
       implements RunnableSchedulable<JDefinedClassOrInterface> {
@@ -85,6 +86,7 @@
   @Constraint(need = ContainerAnnotationMarker.class)
   @Transform(remove = {JAnnotation.RepeatedAnnotationOnField.class})
   @Use(ContainerAnnotationAdder.class)
+  @ExclusiveAccess(JSession.class)
   @Filter(TypeWithoutPrebuiltFilter.class)
   public static class FieldContainerAnnotationAdder extends ContainerAnnotationAdder
       implements RunnableSchedulable<JField> {
@@ -105,6 +107,7 @@
   @Constraint(need = ContainerAnnotationMarker.class)
   @Transform(remove = {JAnnotation.RepeatedAnnotationOnMethod.class})
   @Use(ContainerAnnotationAdder.class)
+  @ExclusiveAccess(JSession.class)
   @Filter(TypeWithoutPrebuiltFilter.class)
   public static class MethodContainerAnnotationAdder extends ContainerAnnotationAdder
       implements RunnableSchedulable<JMethod> {
diff --git a/jack/src/com/android/jack/transformations/annotation/ContainerAnnotationMarkerAdder.java b/jack/src/com/android/jack/transformations/annotation/ContainerAnnotationMarkerAdder.java
index f3c9e37..9ea0b97 100644
--- a/jack/src/com/android/jack/transformations/annotation/ContainerAnnotationMarkerAdder.java
+++ b/jack/src/com/android/jack/transformations/annotation/ContainerAnnotationMarkerAdder.java
@@ -58,6 +58,7 @@
       + "are on the same type")
   @Constraint(need = JAnnotation.RepeatedAnnotationOnType.class)
   @Use(ContainerAnnotationMarkerAdder.class)
+  @Access(JSession.class)
   public static class TypeContainerAnnotationMarkerAdder extends ContainerAnnotationMarkerAdder
       implements RunnableSchedulable<JDefinedClassOrInterface> {
     @Override
@@ -74,6 +75,7 @@
       + "are on the same field")
   @Constraint(need = JAnnotation.RepeatedAnnotationOnField.class)
   @Use(ContainerAnnotationMarkerAdder.class)
+  @Access(JSession.class)
   public static class FieldContainerAnnotationMarkerAdder extends ContainerAnnotationMarkerAdder
       implements RunnableSchedulable<JField> {
     @Override
@@ -90,6 +92,7 @@
       + "are on the same method or parameter")
   @Constraint(need = JAnnotation.RepeatedAnnotationOnMethod.class)
   @Use(ContainerAnnotationMarkerAdder.class)
+  @Access(JSession.class)
   public static class MethodContainerAnnotationMarkerAdder extends ContainerAnnotationMarkerAdder
       implements RunnableSchedulable<JMethod> {
     @Override
diff --git a/jack/src/com/android/jack/transformations/ast/string/MethodStringLiteralRefiner.java b/jack/src/com/android/jack/transformations/ast/string/MethodStringLiteralRefiner.java
index fa5d5e0..d3f2e45 100644
--- a/jack/src/com/android/jack/transformations/ast/string/MethodStringLiteralRefiner.java
+++ b/jack/src/com/android/jack/transformations/ast/string/MethodStringLiteralRefiner.java
@@ -17,8 +17,10 @@
 package com.android.jack.transformations.ast.string;
 
 import com.android.jack.ir.ast.JMethod;
+import com.android.jack.ir.ast.JSession;
 import com.android.jack.transformations.request.TransformationRequest;
 import com.android.sched.item.Description;
+import com.android.sched.schedulable.Access;
 import com.android.sched.schedulable.RunnableSchedulable;
 import com.android.sched.schedulable.Transform;
 import com.android.sched.schedulable.Use;
@@ -30,6 +32,7 @@
  */
 @Description("Refine JStringLiteral in methods into more specific string literals.")
 @Use(StringLiteralRefinerVisitor.class)
+@Access(JSession.class)
 @Transform(add = StringLiteralRefined.Method.class)
 public class MethodStringLiteralRefiner implements RunnableSchedulable<JMethod> {
 
diff --git a/jack/src/com/android/jack/transformations/ast/string/ReflectionStringLiteralRefiner.java b/jack/src/com/android/jack/transformations/ast/string/ReflectionStringLiteralRefiner.java
index 8ea4506..c4ca7d3 100644
--- a/jack/src/com/android/jack/transformations/ast/string/ReflectionStringLiteralRefiner.java
+++ b/jack/src/com/android/jack/transformations/ast/string/ReflectionStringLiteralRefiner.java
@@ -22,6 +22,7 @@
 import com.android.jack.ir.ast.JAbstractStringLiteral;
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JMethodCall;
+import com.android.jack.ir.ast.JSession;
 import com.android.jack.ir.ast.JStringLiteral;
 import com.android.jack.ir.ast.JTypeStringLiteral;
 import com.android.jack.ir.ast.JVisitor;
@@ -41,6 +42,7 @@
 import com.android.jack.util.filter.Filter;
 import com.android.sched.item.Description;
 import com.android.sched.item.Name;
+import com.android.sched.schedulable.Access;
 import com.android.sched.schedulable.Constraint;
 import com.android.sched.schedulable.RunnableSchedulable;
 import com.android.sched.schedulable.Transform;
@@ -63,6 +65,7 @@
     AtomicReferenceUpdaterParameterRefiner.class,
     GetMethodParameterRefiner.class,
     GetDeclaredMethodParameterRefiner.class})
+@Access(JSession.class)
 public class ReflectionStringLiteralRefiner implements RunnableSchedulable<JMethod> {
 
   @Nonnull
diff --git a/jack/src/com/android/jack/transformations/ast/string/TypeStringLiteralRefiner.java b/jack/src/com/android/jack/transformations/ast/string/TypeStringLiteralRefiner.java
index 59dd82b..13c4031 100644
--- a/jack/src/com/android/jack/transformations/ast/string/TypeStringLiteralRefiner.java
+++ b/jack/src/com/android/jack/transformations/ast/string/TypeStringLiteralRefiner.java
@@ -17,8 +17,10 @@
 package com.android.jack.transformations.ast.string;
 
 import com.android.jack.ir.ast.JDefinedClassOrInterface;
+import com.android.jack.ir.ast.JSession;
 import com.android.jack.transformations.request.TransformationRequest;
 import com.android.sched.item.Description;
+import com.android.sched.schedulable.Access;
 import com.android.sched.schedulable.RunnableSchedulable;
 import com.android.sched.schedulable.Transform;
 import com.android.sched.schedulable.Use;
@@ -30,6 +32,7 @@
  */
 @Description("Refine JStringLiteral in types into more specific string literals.")
 @Use(StringLiteralRefinerVisitor.class)
+@Access(JSession.class)
 @Transform(add = StringLiteralRefined.Type.class)
 public class TypeStringLiteralRefiner implements RunnableSchedulable<JDefinedClassOrInterface> {