1 package : 2 annotation @A: @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) 3 annotation @B: @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) 4 annotation @C: @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) 5 annotation @D: @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) 6 7 package java.lang: 8 annotation @UnderInitialization: @Retention(value=RUNTIME) @java.lang.annotation.Target(value={TYPE_USE}) 9 annotation @Tainted: @Retention(value=RUNTIME) @java.lang.annotation.Target(value={TYPE_USE}) 10 11 package annotator.tests: 12 class TypeCastMultiple: 13 14 method <init>()V: 15 16 method foo(Ljava/lang/Object;)V: 17 typecast #1: @java.lang.UnderInitialization 18 typecast #6: @java.lang.Tainted 19 //typecast #11: @java.lang.Tainted // inserts in wrong place! 20 typecast *3: @java.lang.Tainted 21 typecast *4, 0: @A 22 typecast *4, 1: @B 23 inner-type 3, 0: @C 24 typecast *4, 2: @D 25 26