1 /*
   2  * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 import static com.sun.tools.classfile.TypeAnnotation.TargetType.*;
  25 
  26 /*
  27  * @test
  28  * @bug 8042451 8044009 8044010
  29  * @summary Test population of reference info for nested types
  30  * @modules jdk.compiler/com.sun.tools.classfile
  31  * @ignore 8057687 emit correct byte code an attributes for type annotations
  32  * @compile -g Driver.java ReferenceInfoUtil.java NestedTypes.java
  33  * @run main Driver NestedTypes
  34  */
  35 public class NestedTypes {
  36 
  37     // method parameters
  38 
  39     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
  40             genericLocation = {}, paramIndex = 0)
  41     @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
  42             genericLocation = {1, 0}, paramIndex = 0)
  43     public String testParam1() {
  44         return "void test(@TA Outer.@TB Inner a) { }";
  45     }
  46 
  47     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
  48             genericLocation = {3, 0}, paramIndex = 0)
  49     @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
  50             genericLocation = {3, 0, 1, 0}, paramIndex = 0)
  51     public String testParam1b() {
  52         return "void test(List<@TA Outer.@TB Inner> a) { }";
  53     }
  54 
  55     // TODO: the tests that use @TA Map.Entry should fail, as
  56     // Map cannot be annotated.
  57     // We need some tests for the fully qualified name syntax.
  58     /*
  59     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
  60             genericLocation = {}, paramIndex = 0)
  61     public String testParam1c() {
  62         return "void test(java.util.@TA Map.Entry a) { }";
  63     }
  64 
  65     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
  66                 genericLocation = {}, paramIndex = 0)
  67     @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
  68                 genericLocation = {1, 0}, paramIndex = 0)
  69     })
  70     public String testParam1d() {
  71         return "void test(java.util.@TA Map.@TB Entry a) { }";
  72     }
  73 
  74     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
  75             genericLocation = {3, 0}, paramIndex = 0)
  76     public String testParam1e() {
  77         return "void test(List<java.util.@TA Map.Entry> a) { }";
  78     }
  79 
  80     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
  81                 genericLocation = {3, 0}, paramIndex = 0)
  82     @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
  83                 genericLocation = {3, 0, 1, 0}, paramIndex = 0)
  84     })
  85     public String testParam1f() {
  86         return "void test(List<java.util.@TA Map. @TB Entry> a) { }";
  87     }
  88     */
  89 
  90     @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
  91            genericLocation = {3, 0}, paramIndex = 0)
  92     public String testParam1g() {
  93         return "void test(List<java.util.Map. @TB Entry> a) { }";
  94     }
  95 
  96     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
  97             genericLocation = {}, paramIndex = 0)
  98     @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
  99             genericLocation = {1, 0}, paramIndex = 0)
 100     public String testParam2() {
 101         return "void test(@TA GOuter<String,String>.@TB GInner<String,String> a) { }";
 102     }
 103 
 104     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
 105             genericLocation = {3, 0}, paramIndex = 0)
 106     @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
 107             genericLocation = {3, 0, 1, 0}, paramIndex = 0)
 108     public String testParam2b() {
 109         return "void test(List<@TA GOuter<String,String>.@TB GInner<String,String>> a) { }";
 110     }
 111 
 112     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
 113             genericLocation = {0, 0, 0, 0}, paramIndex = 0)
 114     @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
 115             genericLocation = {0, 0, 0, 0, 1, 0}, paramIndex = 0)
 116     @TADescription(annotation = "TC", type = METHOD_FORMAL_PARAMETER,
 117             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0}, paramIndex = 0)
 118     @TADescription(annotation = "TD", type = METHOD_FORMAL_PARAMETER,
 119             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0}, paramIndex = 0)
 120     @TADescription(annotation = "TE", type = METHOD_FORMAL_PARAMETER,
 121             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0}, paramIndex = 0)
 122     @TADescription(annotation = "TF", type = METHOD_FORMAL_PARAMETER,
 123             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0}, paramIndex = 0)
 124     @TADescription(annotation = "TG", type = METHOD_FORMAL_PARAMETER,
 125             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0}, paramIndex = 0)
 126     @TADescription(annotation = "TH", type = METHOD_FORMAL_PARAMETER,
 127             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 0}, paramIndex = 0)
 128     @TADescription(annotation = "TI", type = METHOD_FORMAL_PARAMETER,
 129             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 1}, paramIndex = 0)
 130     @TADescription(annotation = "TJ", type = METHOD_FORMAL_PARAMETER, paramIndex = 0)
 131     @TADescription(annotation = "TK", type = METHOD_FORMAL_PARAMETER,
 132             genericLocation = {0, 0}, paramIndex = 0)
 133     public String testParam3() {
 134         return "class Outer {\n" +
 135                 " class GInner<X> {\n" +
 136                 "  class GInner2<Y, Z> {}\n" +
 137                 "}}\n\n" +
 138                 "class %TEST_CLASS_NAME% {\n" +
 139                 " void test(@TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[] a) { }\n" +
 140                 "}";
 141     }
 142 
 143     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER,
 144             genericLocation = {3, 0, 0, 0, 0, 0}, paramIndex = 0)
 145     @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER,
 146             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0}, paramIndex = 0)
 147     @TADescription(annotation = "TC", type = METHOD_FORMAL_PARAMETER,
 148             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0}, paramIndex = 0)
 149     @TADescription(annotation = "TD", type = METHOD_FORMAL_PARAMETER,
 150             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0}, paramIndex = 0)
 151     @TADescription(annotation = "TE", type = METHOD_FORMAL_PARAMETER,
 152             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0}, paramIndex = 0)
 153     @TADescription(annotation = "TF", type = METHOD_FORMAL_PARAMETER,
 154             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0}, paramIndex = 0)
 155     @TADescription(annotation = "TG", type = METHOD_FORMAL_PARAMETER,
 156             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0}, paramIndex = 0)
 157     @TADescription(annotation = "TH", type = METHOD_FORMAL_PARAMETER,
 158             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0}, paramIndex = 0)
 159     @TADescription(annotation = "TI", type = METHOD_FORMAL_PARAMETER,
 160             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1}, paramIndex = 0)
 161     @TADescription(annotation = "TJ", type = METHOD_FORMAL_PARAMETER,
 162             genericLocation = {3, 0}, paramIndex = 0)
 163     @TADescription(annotation = "TK", type = METHOD_FORMAL_PARAMETER,
 164             genericLocation = {3, 0, 0, 0}, paramIndex = 0)
 165     public String testParam4() {
 166         return "class Outer {\n" +
 167                 " class GInner<X> {\n" +
 168                 "  class GInner2<Y, Z> {}\n" +
 169                 "}}\n\n" +
 170                 "class %TEST_CLASS_NAME% {\n" +
 171                 " void test(List<@TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[]> a) { }\n" +
 172                 "}";
 173     }
 174 
 175 
 176     // Local variables
 177 
 178     @TADescription(annotation = "TA", type = LOCAL_VARIABLE,
 179             genericLocation = {},
 180             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 181     @TADescription(annotation = "TB", type = LOCAL_VARIABLE,
 182             genericLocation = {1, 0},
 183             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 184     public String testLocal1a() {
 185         return "void test() { @TA Outer.@TB Inner a = null; }";
 186     }
 187 
 188     @TADescription(annotation = "TA", type = LOCAL_VARIABLE,
 189             genericLocation = {},
 190             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 191     public String testLocal1b() {
 192         return "void test() { @TA Outer.Inner a = null; }";
 193     }
 194 
 195     @TADescription(annotation = "TB", type = LOCAL_VARIABLE,
 196             genericLocation = {1, 0},
 197             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 198     public String testLocal1c() {
 199         return "void test() { Outer.@TB Inner a = null; }";
 200     }
 201 
 202     @TADescription(annotation = "TA", type = LOCAL_VARIABLE,
 203             genericLocation = {},
 204             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 205     @TADescription(annotation = "TB", type = LOCAL_VARIABLE,
 206             genericLocation = {1, 0},
 207             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 208     public String testLocal2() {
 209         return "void test() { @TA GOuter<String,String>.@TB GInner<String,String> a = null; }";
 210     }
 211 
 212     @TADescription(annotation = "TA", type = LOCAL_VARIABLE,
 213             genericLocation = {0, 0, 0, 0},
 214             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 215     @TADescription(annotation = "TB", type = LOCAL_VARIABLE,
 216             genericLocation = {0, 0, 0, 0, 1, 0},
 217             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 218     @TADescription(annotation = "TC", type = LOCAL_VARIABLE,
 219             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0},
 220             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 221     @TADescription(annotation = "TD", type = LOCAL_VARIABLE,
 222             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0},
 223             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 224     @TADescription(annotation = "TE", type = LOCAL_VARIABLE,
 225             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0},
 226             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 227     @TADescription(annotation = "TF", type = LOCAL_VARIABLE,
 228             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0},
 229             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 230     @TADescription(annotation = "TG", type = LOCAL_VARIABLE,
 231             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0},
 232             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 233     @TADescription(annotation = "TH", type = LOCAL_VARIABLE,
 234             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 0},
 235             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 236     @TADescription(annotation = "TI", type = LOCAL_VARIABLE,
 237             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 1},
 238             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 239     @TADescription(annotation = "TJ", type = LOCAL_VARIABLE,
 240             genericLocation = {},
 241             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 242     @TADescription(annotation = "TK", type = LOCAL_VARIABLE,
 243             genericLocation = {0, 0},
 244             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 245     public String testLocal3() {
 246         return "class Outer {\n" +
 247                 " class GInner<X> {\n" +
 248                 "  class GInner2<Y, Z> {}\n" +
 249                 "}}\n\n" +
 250                 "class %TEST_CLASS_NAME% {\n" +
 251                 " void test() { @TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[] a = null; }\n" +
 252                 "}";
 253     }
 254 
 255 
 256     @TADescription(annotation = "TA", type = LOCAL_VARIABLE,
 257             genericLocation = {3, 0, 0, 0, 0, 0},
 258             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 259     @TADescription(annotation = "TB", type = LOCAL_VARIABLE,
 260             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0},
 261             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 262     @TADescription(annotation = "TC", type = LOCAL_VARIABLE,
 263             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0},
 264             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 265     @TADescription(annotation = "TD", type = LOCAL_VARIABLE,
 266             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0},
 267             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 268     @TADescription(annotation = "TE", type = LOCAL_VARIABLE,
 269             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0},
 270             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 271     @TADescription(annotation = "TF", type = LOCAL_VARIABLE,
 272             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0},
 273             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 274     @TADescription(annotation = "TG", type = LOCAL_VARIABLE,
 275             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0},
 276             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 277     @TADescription(annotation = "TH", type = LOCAL_VARIABLE,
 278             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0},
 279             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 280     @TADescription(annotation = "TI", type = LOCAL_VARIABLE,
 281             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1},
 282             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 283     @TADescription(annotation = "TJ", type = LOCAL_VARIABLE,
 284             genericLocation = {3, 0},
 285             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 286     @TADescription(annotation = "TK", type = LOCAL_VARIABLE,
 287             genericLocation = {3, 0, 0, 0},
 288             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 289     public String testLocal4() {
 290         return "class Outer {\n" +
 291                 " class GInner<X> {\n" +
 292                 "  class GInner2<Y, Z> {}\n" +
 293                 "}}\n\n" +
 294                 "class %TEST_CLASS_NAME% {\n" +
 295                 " void test() { List<@TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[]> a = null; }\n" +
 296                 "}";
 297     }
 298 
 299 
 300     // fields
 301 
 302     @TADescription(annotation = "TA", type = FIELD,
 303             genericLocation = {})
 304     @TADescription(annotation = "TB", type = FIELD,
 305             genericLocation = {1, 0})
 306     public String testField1a() {
 307         return "@TA Outer.@TB Inner a;";
 308     }
 309 
 310     @TADescription(annotation = "TA", type = FIELD,
 311             genericLocation = {})
 312     public String testField1b() {
 313         return "@TA Outer.Inner a;";
 314     }
 315 
 316     @TADescription(annotation = "TB", type = FIELD,
 317             genericLocation = {1, 0})
 318     public String testField1c() {
 319         return "Outer.@TB Inner a;";
 320     }
 321 
 322     @TADescription(annotation = "TA", type = FIELD,
 323             genericLocation = {})
 324     @TADescription(annotation = "TB", type = FIELD,
 325             genericLocation = {1, 0})
 326     public String testField2() {
 327         return "@TA GOuter<String,String>.@TB GInner<String,String> a;";
 328     }
 329 
 330     @TADescription(annotation = "TA", type = FIELD,
 331             genericLocation = {0, 0, 0, 0})
 332     @TADescription(annotation = "TB", type = FIELD,
 333             genericLocation = {0, 0, 0, 0, 1, 0})
 334     @TADescription(annotation = "TC", type = FIELD,
 335             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0})
 336     @TADescription(annotation = "TD", type = FIELD,
 337             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0})
 338     @TADescription(annotation = "TE", type = FIELD,
 339             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0})
 340     @TADescription(annotation = "TF", type = FIELD,
 341             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0})
 342     @TADescription(annotation = "TG", type = FIELD,
 343             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0})
 344     @TADescription(annotation = "TH", type = FIELD,
 345             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 0})
 346     @TADescription(annotation = "TI", type = FIELD,
 347             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 1})
 348     @TADescription(annotation = "TJ", type = FIELD)
 349     @TADescription(annotation = "TK", type = FIELD,
 350             genericLocation = {0, 0})
 351     public String testField3() {
 352         return "class Outer {\n" +
 353                 " class GInner<X> {\n" +
 354                 "  class GInner2<Y, Z> {}\n" +
 355                 "}}\n\n" +
 356                 "class %TEST_CLASS_NAME% {\n" +
 357                 " @TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[] a;\n" +
 358                 "}";
 359     }
 360 
 361     @TADescription(annotation = "TA", type = FIELD,
 362             genericLocation = {3, 0, 0, 0, 0, 0})
 363     @TADescription(annotation = "TB", type = FIELD,
 364             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0})
 365     @TADescription(annotation = "TC", type = FIELD,
 366             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0})
 367     @TADescription(annotation = "TD", type = FIELD,
 368             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0})
 369     @TADescription(annotation = "TE", type = FIELD,
 370             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0})
 371     @TADescription(annotation = "TF", type = FIELD,
 372             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0})
 373     @TADescription(annotation = "TG", type = FIELD,
 374             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0})
 375     @TADescription(annotation = "TH", type = FIELD,
 376             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0})
 377     @TADescription(annotation = "TI", type = FIELD,
 378             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1})
 379     @TADescription(annotation = "TJ", type = FIELD,
 380             genericLocation = {3, 0})
 381     @TADescription(annotation = "TK", type = FIELD,
 382             genericLocation = {3, 0, 0, 0})
 383     public String testField4() {
 384         return "class Outer {\n" +
 385                 " class GInner<X> {\n" +
 386                 "  class GInner2<Y, Z> {}\n" +
 387                 "}}\n\n" +
 388                 "class %TEST_CLASS_NAME% {\n" +
 389                 " List<@TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[]> a;\n" +
 390                 "}";
 391     }
 392 
 393 
 394     // return types
 395 
 396     @TADescription(annotation = "TA", type = METHOD_RETURN,
 397             genericLocation = {})
 398     @TADescription(annotation = "TB", type = METHOD_RETURN,
 399             genericLocation = {1, 0})
 400     public String testReturn1() {
 401         return "@TA Outer.@TB Inner test() { return null; }";
 402     }
 403 
 404     @TADescription(annotation = "TA", type = METHOD_RETURN,
 405             genericLocation = {})
 406     @TADescription(annotation = "TB", type = METHOD_RETURN,
 407             genericLocation = {1, 0})
 408     public String testReturn2() {
 409         return "@TA GOuter<String,String>.@TB GInner<String,String> test() { return null; }";
 410     }
 411 
 412     @TADescription(annotation = "TA", type = METHOD_RETURN,
 413             genericLocation = {0, 0, 0, 0})
 414     @TADescription(annotation = "TB", type = METHOD_RETURN,
 415             genericLocation = {0, 0, 0, 0, 1, 0})
 416     @TADescription(annotation = "TC", type = METHOD_RETURN,
 417             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0})
 418     @TADescription(annotation = "TD", type = METHOD_RETURN,
 419             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0})
 420     @TADescription(annotation = "TE", type = METHOD_RETURN,
 421             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0})
 422     @TADescription(annotation = "TF", type = METHOD_RETURN,
 423             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0})
 424     @TADescription(annotation = "TG", type = METHOD_RETURN,
 425             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0})
 426     @TADescription(annotation = "TH", type = METHOD_RETURN,
 427             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 0})
 428     @TADescription(annotation = "TI", type = METHOD_RETURN,
 429             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 1})
 430     @TADescription(annotation = "TJ", type = METHOD_RETURN)
 431     @TADescription(annotation = "TK", type = METHOD_RETURN,
 432             genericLocation = {0, 0})
 433     public String testReturn3() {
 434         return "class Outer {\n" +
 435                 " class GInner<X> {\n" +
 436                 "  class GInner2<Y, Z> {}\n" +
 437                 "}}\n\n" +
 438                 "class %TEST_CLASS_NAME% {\n" +
 439                 " @TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[] test() { return null; }\n" +
 440                 "}";
 441     }
 442 
 443     @TADescription(annotation = "TA", type = METHOD_RETURN,
 444             genericLocation = {3, 0, 0, 0, 0, 0})
 445     @TADescription(annotation = "TB", type = METHOD_RETURN,
 446             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0})
 447     @TADescription(annotation = "TC", type = METHOD_RETURN,
 448             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0})
 449     @TADescription(annotation = "TD", type = METHOD_RETURN,
 450             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0})
 451     @TADescription(annotation = "TE", type = METHOD_RETURN,
 452             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0})
 453     @TADescription(annotation = "TF", type = METHOD_RETURN,
 454             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0})
 455     @TADescription(annotation = "TG", type = METHOD_RETURN,
 456             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0})
 457     @TADescription(annotation = "TH", type = METHOD_RETURN,
 458             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0})
 459     @TADescription(annotation = "TI", type = METHOD_RETURN,
 460             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1})
 461     @TADescription(annotation = "TJ", type = METHOD_RETURN,
 462             genericLocation = {3, 0})
 463     @TADescription(annotation = "TK", type = METHOD_RETURN,
 464             genericLocation = {3, 0, 0, 0})
 465     public String testReturn4() {
 466         return "class Outer {\n" +
 467                 " class GInner<X> {\n" +
 468                 "  class GInner2<Y, Z> {}\n" +
 469                 "}}\n\n" +
 470                 "class %TEST_CLASS_NAME% {\n" +
 471                 " List<@TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[]> test() { return null; }\n" +
 472                 "}";
 473     }
 474 
 475     @TADescription(annotation = "TA", type = METHOD_RETURN,
 476                 genericLocation = {3, 0})
 477     @TADescription(annotation = "TB", type = METHOD_RETURN,
 478                 genericLocation = {3, 0, 3, 0})
 479     @TADescription(annotation = "TC", type = METHOD_RETURN,
 480                 genericLocation = {3, 0, 3, 1})
 481     @TADescription(annotation = "TD", type = METHOD_RETURN,
 482                 genericLocation = {3, 0, 3, 1, 3, 0})
 483     @TADescription(annotation = "TE", type = METHOD_RETURN,
 484                 genericLocation = {3, 0, 1, 0})
 485     @TADescription(annotation = "TF", type = METHOD_RETURN,
 486                 genericLocation = {3, 0, 1, 0, 3, 0})
 487     @TADescription(annotation = "TG", type = METHOD_RETURN,
 488                 genericLocation = {3, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0})
 489     @TADescription(annotation = "TH", type = METHOD_RETURN,
 490                 genericLocation = {3, 0, 1, 0, 3, 0, 3, 0})
 491     @TADescription(annotation = "TI", type = METHOD_RETURN,
 492                 genericLocation = {3, 0, 1, 0, 3, 0, 3, 0, 0, 0})
 493     @TADescription(annotation = "TJ", type = METHOD_RETURN,
 494                 genericLocation = {3, 0, 1, 0, 1, 0})
 495     public String testReturn5() {
 496         return "class GOuter<A, B> {\n" +
 497                 " class GInner<X> {\n" +
 498                 "  class GInner2<Y, Z> {}\n" +
 499                 "}}\n\n" +
 500                 "class %TEST_CLASS_NAME% {\n" +
 501                 " List<@TA GOuter<@TB String, @TC List<@TD Object>> . @TE GInner<@TF List<@TG Object @TH[] @TI[]>>. @TJ GInner2<String, String>> test() { return null; }\n" +
 502                 "}";
 503     }
 504 
 505 
 506     // type parameters
 507 
 508     @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND,
 509                 genericLocation = {}, paramIndex = 0, boundIndex = 0)
 510     @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND,
 511                 genericLocation = {1, 0}, paramIndex = 0, boundIndex = 0)
 512     public String testTypeparam1() {
 513         return "<X extends @TA Outer.@TB Inner> X test() { return null; }";
 514     }
 515 
 516     @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND,
 517                 genericLocation = {}, paramIndex = 0, boundIndex = 0)
 518     @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND,
 519                 genericLocation = {1, 0}, paramIndex = 0, boundIndex = 0)
 520     public String testTypeparam2() {
 521         return "<X extends @TA GOuter<String,String>.@TB GInner<String,String>> X test() { return null; }";
 522     }
 523 
 524     @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND,
 525                 genericLocation = {},
 526                 paramIndex = 0, boundIndex = 0)
 527     @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND,
 528                 genericLocation = {1, 0},
 529                 paramIndex = 0, boundIndex = 0)
 530     @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND,
 531                 genericLocation = {1, 0, 3, 0},
 532                 paramIndex = 0, boundIndex = 0)
 533     @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND,
 534                 genericLocation = {1, 0, 3, 0, 3, 0, 0, 0, 0, 0},
 535                 paramIndex = 0, boundIndex = 0)
 536     @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND,
 537                 genericLocation = {1, 0, 3, 0, 3, 0},
 538                 paramIndex = 0, boundIndex = 0)
 539     @TADescription(annotation = "TF", type = METHOD_TYPE_PARAMETER_BOUND,
 540                 genericLocation = {1, 0, 3, 0, 3, 0, 0, 0},
 541                 paramIndex = 0, boundIndex = 0)
 542     @TADescription(annotation = "TG", type = METHOD_TYPE_PARAMETER_BOUND,
 543                 genericLocation = {1, 0, 1, 0},
 544                 paramIndex = 0, boundIndex = 0)
 545     @TADescription(annotation = "TH", type = METHOD_TYPE_PARAMETER_BOUND,
 546                 genericLocation = {1, 0, 1, 0, 3, 0},
 547                 paramIndex = 0, boundIndex = 0)
 548     @TADescription(annotation = "TI", type = METHOD_TYPE_PARAMETER_BOUND,
 549                 genericLocation = {1, 0, 1, 0, 3, 1},
 550                 paramIndex = 0, boundIndex = 0)
 551     public String testTypeparam3() {
 552         return "class Outer {\n" +
 553                 " class GInner<X> {\n" +
 554                 "  class GInner2<Y, Z> {}\n" +
 555                 "}}\n\n" +
 556                 "class %TEST_CLASS_NAME% {\n" +
 557                 " <X extends @TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object>> X test() { return null; }\n" +
 558                 "}";
 559     }
 560 
 561     @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND,
 562                 genericLocation = {3, 0, 0, 0, 0, 0},
 563                 paramIndex = 0, boundIndex = 1)
 564     @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND,
 565                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0},
 566                 paramIndex = 0, boundIndex = 1)
 567     @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND,
 568                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0},
 569                 paramIndex = 0, boundIndex = 1)
 570     @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND,
 571                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0},
 572                 paramIndex = 0, boundIndex = 1)
 573     @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND,
 574                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0},
 575                 paramIndex = 0, boundIndex = 1)
 576     @TADescription(annotation = "TF", type = METHOD_TYPE_PARAMETER_BOUND,
 577                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0},
 578                 paramIndex = 0, boundIndex = 1)
 579     @TADescription(annotation = "TG", type = METHOD_TYPE_PARAMETER_BOUND,
 580                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0},
 581                 paramIndex = 0, boundIndex = 1)
 582     @TADescription(annotation = "TH", type = METHOD_TYPE_PARAMETER_BOUND,
 583                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0},
 584                 paramIndex = 0, boundIndex = 1)
 585     @TADescription(annotation = "TI", type = METHOD_TYPE_PARAMETER_BOUND,
 586                 genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1},
 587                 paramIndex = 0, boundIndex = 1)
 588     @TADescription(annotation = "TJ", type = METHOD_TYPE_PARAMETER_BOUND,
 589                 genericLocation = {3, 0},
 590                 paramIndex = 0, boundIndex = 1)
 591     @TADescription(annotation = "TK", type = METHOD_TYPE_PARAMETER_BOUND,
 592                 genericLocation = {3, 0, 0, 0},
 593                 paramIndex = 0, boundIndex = 1)
 594     public String testTypeparam4() {
 595         return "class Outer {\n" +
 596                 " class GInner<X> {\n" +
 597                 "  class GInner2<Y, Z> {}\n" +
 598                 "}}\n\n" +
 599                 "class %TEST_CLASS_NAME% {\n" +
 600                 " <X extends List<@TA Outer . @TB GInner<@TC List<@TD Object @TE[] @TF[]>>. @TG GInner2<@TH Integer, @TI Object> @TJ[] @TK[]>> X test() { return null; }\n" +
 601                 "}";
 602     }
 603 
 604     @TADescription(annotation = "TA", type = METHOD_TYPE_PARAMETER_BOUND,
 605                 genericLocation = {3, 0}, paramIndex = 0, boundIndex = 1)
 606     @TADescription(annotation = "TB", type = METHOD_TYPE_PARAMETER_BOUND,
 607                 genericLocation = {3, 0, 3, 0}, paramIndex = 0, boundIndex = 1)
 608     @TADescription(annotation = "TC", type = METHOD_TYPE_PARAMETER_BOUND,
 609                 genericLocation = {3, 0, 3, 1}, paramIndex = 0, boundIndex = 1)
 610     @TADescription(annotation = "TD", type = METHOD_TYPE_PARAMETER_BOUND,
 611                 genericLocation = {3, 0, 3, 1, 3, 0}, paramIndex = 0, boundIndex = 1)
 612     @TADescription(annotation = "TE", type = METHOD_TYPE_PARAMETER_BOUND,
 613                 genericLocation = {3, 0, 1, 0}, paramIndex = 0, boundIndex = 1)
 614     @TADescription(annotation = "TF", type = METHOD_TYPE_PARAMETER_BOUND,
 615                 genericLocation = {3, 0, 1, 0, 3, 0}, paramIndex = 0, boundIndex = 1)
 616     @TADescription(annotation = "TG", type = METHOD_TYPE_PARAMETER_BOUND,
 617                 genericLocation = {3, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0}, paramIndex = 0, boundIndex = 1)
 618     @TADescription(annotation = "TH", type = METHOD_TYPE_PARAMETER_BOUND,
 619                 genericLocation = {3, 0, 1, 0, 3, 0, 3, 0}, paramIndex = 0, boundIndex = 1)
 620     @TADescription(annotation = "TI", type = METHOD_TYPE_PARAMETER_BOUND,
 621                 genericLocation = {3, 0, 1, 0, 3, 0, 3, 0, 0, 0}, paramIndex = 0, boundIndex = 1)
 622     @TADescription(annotation = "TJ", type = METHOD_TYPE_PARAMETER_BOUND,
 623                 genericLocation = {3, 0, 1, 0, 1, 0}, paramIndex = 0, boundIndex = 1)
 624     public String testTypeparam5() {
 625         return "class GOuter<A, B> {\n" +
 626                 " class GInner<X> {\n" +
 627                 "  class GInner2<Y, Z> {}\n" +
 628                 "}}\n\n" +
 629                 "class %TEST_CLASS_NAME% {\n" +
 630                 " <X extends List<@TA GOuter<@TB String, @TC List<@TD Object>> . @TE GInner<@TF List<@TG Object @TH[] @TI[]>>. @TJ GInner2<String, String>>> X test() { return null; }\n" +
 631                 "}";
 632     }
 633 
 634     @TADescription(annotation = "TA", type = FIELD,
 635             genericLocation = {3, 0, 1, 0})
 636     public String testUses1a() {
 637         return "class %TEST_CLASS_NAME% { class Inner {}    List<@TA Inner> f; }";
 638     }
 639 
 640     @TADescription(annotation = "TA", type = FIELD,
 641             genericLocation = {3, 0})
 642     public String testUses1b() {
 643         return "class %TEST_CLASS_NAME% { class Inner {}    List<@TA %TEST_CLASS_NAME%.Inner> f; }";
 644     }
 645 
 646     @TADescription(annotation = "TA", type = FIELD,
 647             genericLocation = {3, 0, 1, 0, 1, 0})
 648     @TestClass("%TEST_CLASS_NAME%$Inner")
 649     public String testUses2a() {
 650         return "class %TEST_CLASS_NAME% { class Inner { class Inner2{}    List<@TA Inner2> f; }}";
 651     }
 652 
 653     @TADescription(annotation = "TA", type = FIELD,
 654             genericLocation = {3, 0, 1, 0})
 655     @TestClass("%TEST_CLASS_NAME%$Inner")
 656     public String testUses2b() {
 657         return "class %TEST_CLASS_NAME% { class Inner { class Inner2{}    List<@TA Inner.Inner2> f; }}";
 658     }
 659 
 660     @TADescription(annotation = "TA", type = FIELD,
 661             genericLocation = {3, 0, 1, 0, 1, 0})
 662     @TestClass("%TEST_CLASS_NAME%$Inner")
 663     public String testUses2c() {
 664         return "class %TEST_CLASS_NAME% { class Inner { class Inner2{}    List<Inner.@TA Inner2> f; }}";
 665     }
 666 
 667     @TADescription(annotation = "TA", type = FIELD,
 668             genericLocation = {3, 0})
 669     @TestClass("%TEST_CLASS_NAME%$Inner")
 670     public String testUses2d() {
 671         return "class %TEST_CLASS_NAME%{ class Inner { class Inner2{}    List<@TA %TEST_CLASS_NAME%.Inner.Inner2> f; }}";
 672     }
 673 
 674     @TADescription(annotation = "TA", type = FIELD,
 675             genericLocation = {3, 0, 1, 0})
 676     @TestClass("%TEST_CLASS_NAME%$Inner")
 677     public String testUses2e() {
 678         return "class %TEST_CLASS_NAME% { class Inner { class Inner2{}    List<%TEST_CLASS_NAME%.@TA Inner.Inner2> f; }}";
 679     }
 680 
 681     @TADescription(annotation = "TA", type = FIELD,
 682             genericLocation = {3, 0, 1, 0, 1, 0})
 683     @TestClass("%TEST_CLASS_NAME%$Inner")
 684     public String testUses2f() {
 685         return "class %TEST_CLASS_NAME% { class Inner { class Inner2{}    List<%TEST_CLASS_NAME%.Inner.@TA Inner2> f; }}";
 686     }
 687 
 688     @TADescription(annotation = "TA", type = FIELD,
 689             genericLocation = {3, 0, 1, 0, 1, 0})
 690     @TestClass("%TEST_CLASS_NAME%$Inner")
 691     public String testUses3a() {
 692         return "class %TEST_CLASS_NAME% { class Inner<A, B> { class Inner2<C, D>{}\n" +
 693                 "    List<%TEST_CLASS_NAME%.Inner.@TA Inner2> f; }}";
 694     }
 695 
 696     @TADescription(annotation = "TA", type = FIELD,
 697             genericLocation = {3, 0, 1, 0})
 698     @TestClass("%TEST_CLASS_NAME%$Inner")
 699     public String testUses3b() {
 700         return "class %TEST_CLASS_NAME% { class Inner<A, B> { class Inner2<C, D>{}\n" +
 701                 "    List<%TEST_CLASS_NAME%.@TA Inner.Inner2> f; }}";
 702     }
 703 
 704     @TADescription(annotation = "TA", type = FIELD,
 705                 genericLocation = {})
 706     @TADescription(annotation = "TB", type = FIELD,
 707                 genericLocation = {3, 0})
 708     public String testUses4() {
 709         return "class %TEST_CLASS_NAME% { static class TInner {}\n" +
 710                 "    @TA TInner f; \n" +
 711                 "    List<@TB TInner> g; }";
 712     }
 713 
 714     @TADescription(annotation = "TA", type = FIELD,
 715             genericLocation = {3, 0, 1, 0, 3, 1})
 716     @TestClass("%TEST_CLASS_NAME%$Inner")
 717     public String testUses3c() {
 718         return "class %TEST_CLASS_NAME% { class Inner<A, B> { class Inner2<C, D>{}\n" +
 719                 "    List<%TEST_CLASS_NAME%.Inner<String, @TA Object>.Inner2<%TEST_CLASS_NAME%, %TEST_CLASS_NAME%>> f; }}";
 720     }
 721 
 722     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER, paramIndex=0)
 723     public String testFullyQualified1() {
 724         return "void testme(java.security.@TA ProtectionDomain protectionDomain) {}";
 725     }
 726 
 727     @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER, paramIndex=0,
 728             genericLocation = {3, 0})
 729     public String testFullyQualified2() {
 730         return "void testme(List<java.security.@TA ProtectionDomain> protectionDomain) {}";
 731     }
 732 
 733     @TADescription(annotation = "TA", type = LOCAL_VARIABLE,
 734                 genericLocation = {},
 735                 lvarOffset = ReferenceInfoUtil.IGNORE_VALUE,
 736                 lvarLength = ReferenceInfoUtil.IGNORE_VALUE,
 737                 lvarIndex = ReferenceInfoUtil.IGNORE_VALUE)
 738     @TADescription(annotation = "TB", type = LOCAL_VARIABLE,
 739                 genericLocation = {1, 0},
 740                 lvarOffset = ReferenceInfoUtil.IGNORE_VALUE,
 741                 lvarLength = ReferenceInfoUtil.IGNORE_VALUE,
 742                 lvarIndex = ReferenceInfoUtil.IGNORE_VALUE)
 743     @TADescription(annotation = "TC", type = LOCAL_VARIABLE,
 744                 // Only classes count, not methods.
 745                 genericLocation = {1, 0, 1, 0},
 746                 lvarOffset = ReferenceInfoUtil.IGNORE_VALUE,
 747                 lvarLength = ReferenceInfoUtil.IGNORE_VALUE,
 748                 lvarIndex = ReferenceInfoUtil.IGNORE_VALUE)
 749     @TestClass("Outer$Inner")
 750     public String testMethodNesting1() {
 751         return "class Outer {\n" +
 752                 " class Inner {\n" +
 753                 "  void foo() {\n" +
 754                 "    class MInner {}\n" +
 755                 "    @TA Outer . @TB Inner l1 = null;\n" +
 756                 "    @TC MInner l2 = null;\n" +
 757                 "  }\n" +
 758                 "}}\n";
 759     }
 760 
 761     @TADescription(annotation = "TA", type = NEW,
 762                 genericLocation = {},
 763                 offset = 0)
 764     @TADescription(annotation = "TB", type = NEW,
 765                 genericLocation = {1, 0},
 766                 offset = 0)
 767     @TADescription(annotation = "TC", type = NEW,
 768                 // Only classes count, not methods.
 769                 genericLocation = {1, 0, 1, 0},
 770                 offset = 12)
 771     @TestClass("Outer$Inner")
 772     public String testMethodNesting2() {
 773         return "class Outer {\n" +
 774                 " class Inner {\n" +
 775                 "  void foo() {\n" +
 776                 "    class MInner {}\n" +
 777                 "    Object o1 = new @TA Outer . @TB Inner();" +
 778                 "    Object o2 = new @TC MInner();\n" +
 779                 "  }\n" +
 780                 "}}\n";
 781     }
 782 
 783     @TADescription(annotation = "TA", type = CLASS_EXTENDS,
 784                 genericLocation = {}, typeIndex = -1)
 785     @TADescription(annotation = "TB", type = CLASS_EXTENDS,
 786                 genericLocation = {3, 0}, typeIndex = -1)
 787     @TADescription(annotation = "TC", type = CLASS_EXTENDS,
 788                 genericLocation = {3, 1}, typeIndex = -1)
 789     @TADescription(annotation = "TD", type = CLASS_EXTENDS,
 790                 genericLocation = {1, 0}, typeIndex = -1)
 791     @TADescription(annotation = "TE", type = CLASS_EXTENDS,
 792                 genericLocation = {1, 0, 3, 0}, typeIndex = -1)
 793     @TADescription(annotation = "TF", type = CLASS_EXTENDS,
 794                 genericLocation = {1, 0, 3, 1}, typeIndex = -1)
 795     @TestClass("GOuter$GInner$Test")
 796     public String testExtends1() {
 797         return "class GOuter<A, B> {\n" +
 798                 "  class GInner<X, Y> {\n" +
 799                 "    class Test extends @TA GOuter<@TB String, @TC String>.@TD GInner<@TE String, @TF String> {}" +
 800                 "  }" +
 801                 "}";
 802     }
 803 
 804     @TADescription(annotation = "TA", type = CLASS_TYPE_PARAMETER,
 805                 genericLocation = {}, paramIndex = 0)
 806     @TADescription(annotation = "TB", type = CLASS_TYPE_PARAMETER_BOUND,
 807                 genericLocation = {}, paramIndex = 0, boundIndex = 0)
 808     @TADescription(annotation = "TC", type = FIELD,
 809                 genericLocation = {})
 810     @TADescription(annotation = "TD", type = FIELD,
 811                 genericLocation = {3, 0})
 812     @TestClass("%TEST_CLASS_NAME%$1Nested")
 813     public String testNestedInMethod1() {
 814         return "class %TEST_CLASS_NAME% {\n" +
 815                 "  void foobar() {\n" +
 816                 "    class Nested<@TA X extends @TB Object> {\n" +
 817                 "      @TC List<@TD Object> f;\n" +
 818                 "    }\n" +
 819                 "  }" +
 820                 "}";
 821     }
 822 
 823     @TADescription(annotation = "RTAs", type = METHOD_FORMAL_PARAMETER,
 824             genericLocation = {}, paramIndex = 0)
 825     @TADescription(annotation = "RTBs", type = METHOD_FORMAL_PARAMETER,
 826             genericLocation = {1, 0}, paramIndex = 0)
 827     public String testParamRepeatableAnnotation1() {
 828         return "void test(@RTA @RTA Outer.@RTB @RTB Inner a) { }";
 829     }
 830 
 831     @TADescription(annotation = "RTAs", type = METHOD_FORMAL_PARAMETER,
 832             genericLocation = {3, 0}, paramIndex = 0)
 833     @TADescription(annotation = "RTBs", type = METHOD_FORMAL_PARAMETER,
 834             genericLocation = {3, 0, 1, 0}, paramIndex = 0)
 835     public String testParamRepeatableAnnotation1b() {
 836         return "void test(List<@RTA @RTA Outer.@RTB @RTB Inner> a) { }";
 837     }
 838 
 839     @TADescription(annotation = "RTBs", type = METHOD_FORMAL_PARAMETER,
 840             genericLocation = {3, 0}, paramIndex = 0)
 841     public String testParamRepeatableAnnotation1g() {
 842         return "void test(List<java.util.Map. @RTB @RTB Entry> a) { }";
 843     }
 844 
 845     @TADescription(annotation = "RTAs", type = METHOD_FORMAL_PARAMETER,
 846             genericLocation = {}, paramIndex = 0)
 847     @TADescription(annotation = "RTBs", type = METHOD_FORMAL_PARAMETER,
 848             genericLocation = {1, 0}, paramIndex = 0)
 849     public String testParamRepeatableAnnotation2() {
 850         return "void test(@RTA @RTA GOuter<String,String>.@RTB @RTB GInner<String,String> a) { }";
 851     }
 852 
 853     @TADescription(annotation = "RTAs", type = METHOD_FORMAL_PARAMETER,
 854             genericLocation = {3, 0}, paramIndex = 0)
 855     @TADescription(annotation = "RTBs", type = METHOD_FORMAL_PARAMETER,
 856             genericLocation = {3, 0, 1, 0}, paramIndex = 0)
 857     public String testParamRepeatableAnnotation2b() {
 858         return "void test(List<@RTA @RTA GOuter<String,String>.@RTB @RTB GInner<String,String>> a) { }";
 859     }
 860 
 861     @TADescription(annotation = "RTAs", type = METHOD_FORMAL_PARAMETER,
 862             genericLocation = {0, 0, 0, 0}, paramIndex = 0)
 863     @TADescription(annotation = "RTBs", type = METHOD_FORMAL_PARAMETER,
 864             genericLocation = {0, 0, 0, 0, 1, 0}, paramIndex = 0)
 865     @TADescription(annotation = "RTCs", type = METHOD_FORMAL_PARAMETER,
 866             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0}, paramIndex = 0)
 867     @TADescription(annotation = "RTDs", type = METHOD_FORMAL_PARAMETER,
 868             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0}, paramIndex = 0)
 869     @TADescription(annotation = "RTEs", type = METHOD_FORMAL_PARAMETER,
 870             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0}, paramIndex = 0)
 871     @TADescription(annotation = "RTFs", type = METHOD_FORMAL_PARAMETER,
 872             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0}, paramIndex = 0)
 873     @TADescription(annotation = "RTGs", type = METHOD_FORMAL_PARAMETER,
 874             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0}, paramIndex = 0)
 875     @TADescription(annotation = "RTHs", type = METHOD_FORMAL_PARAMETER,
 876             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 0}, paramIndex = 0)
 877     @TADescription(annotation = "RTIs", type = METHOD_FORMAL_PARAMETER,
 878             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 1}, paramIndex = 0)
 879     @TADescription(annotation = "RTJs", type = METHOD_FORMAL_PARAMETER, paramIndex = 0)
 880     @TADescription(annotation = "RTKs", type = METHOD_FORMAL_PARAMETER,
 881             genericLocation = {0, 0}, paramIndex = 0)
 882     public String testParamRepeatableAnnotation3() {
 883         return "class Outer {\n" +
 884                 " class GInner<X> {\n" +
 885                 "  class GInner2<Y, Z> {}\n" +
 886                 "}}\n\n" +
 887                 "class %TEST_CLASS_NAME% {\n" +
 888                 " void test(@RTA @RTA Outer . @RTB @RTB GInner<@RTC @RTC List<@RTD @RTD Object" +
 889                 " @RTE @RTE[] @RTF @RTF[]>>. @RTG @RTG GInner2<@RTH @RTH Integer, @RTI @RTI Object>" +
 890                 " @RTJ @RTJ[] @RTK @RTK[] a) { }\n" +
 891                 "}";
 892     }
 893 
 894     @TADescription(annotation = "RTAs", type = METHOD_FORMAL_PARAMETER,
 895             genericLocation = {3, 0, 0, 0, 0, 0}, paramIndex = 0)
 896     @TADescription(annotation = "RTBs", type = METHOD_FORMAL_PARAMETER,
 897             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0}, paramIndex = 0)
 898     @TADescription(annotation = "RTCs", type = METHOD_FORMAL_PARAMETER,
 899             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0}, paramIndex = 0)
 900     @TADescription(annotation = "RTDs", type = METHOD_FORMAL_PARAMETER,
 901             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0}, paramIndex = 0)
 902     @TADescription(annotation = "RTEs", type = METHOD_FORMAL_PARAMETER,
 903             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0}, paramIndex = 0)
 904     @TADescription(annotation = "RTFs", type = METHOD_FORMAL_PARAMETER,
 905             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0}, paramIndex = 0)
 906     @TADescription(annotation = "RTGs", type = METHOD_FORMAL_PARAMETER,
 907             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0}, paramIndex = 0)
 908     @TADescription(annotation = "RTHs", type = METHOD_FORMAL_PARAMETER,
 909             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0}, paramIndex = 0)
 910     @TADescription(annotation = "RTIs", type = METHOD_FORMAL_PARAMETER,
 911             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1}, paramIndex = 0)
 912     @TADescription(annotation = "RTJs", type = METHOD_FORMAL_PARAMETER,
 913             genericLocation = {3, 0}, paramIndex = 0)
 914     @TADescription(annotation = "RTKs", type = METHOD_FORMAL_PARAMETER,
 915             genericLocation = {3, 0, 0, 0}, paramIndex = 0)
 916     public String testParamRepeatableAnnotation4() {
 917         return "class Outer {\n" +
 918                 " class GInner<X> {\n" +
 919                 "  class GInner2<Y, Z> {}\n" +
 920                 "}}\n\n" +
 921                 "class %TEST_CLASS_NAME% {\n" +
 922                 " void test(List<@RTA @RTA Outer . @RTB @RTB GInner<@RTC @RTC List<@RTD @RTD Object" +
 923                 " @RTE @RTE[] @RTF @RTF[]>>. @RTG @RTG GInner2<@RTH @RTH Integer," +
 924                 " @RTI @RTI Object> @RTJ @RTJ[] @RTK @RTK[]> a) { }\n" +
 925                 "}";
 926     }
 927 
 928     // Local variables
 929 
 930     @TADescription(annotation = "RTAs", type = LOCAL_VARIABLE,
 931             genericLocation = {},
 932             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 933     @TADescription(annotation = "RTBs", type = LOCAL_VARIABLE,
 934             genericLocation = {1, 0},
 935             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 936     public String testLocalRepeatableAnnotation1a() {
 937         return "void test() { @RTA @RTA Outer.@RTB @RTB Inner a = null; }";
 938     }
 939 
 940     @TADescription(annotation = "RTAs", type = LOCAL_VARIABLE,
 941             genericLocation = {},
 942             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 943     public String testLocalRepeatableAnnotation1b() {
 944         return "void test() { @RTA @RTA Outer.Inner a = null; }";
 945     }
 946 
 947     @TADescription(annotation = "RTBs", type = LOCAL_VARIABLE,
 948             genericLocation = {1, 0},
 949             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 950     public String testLocalRepeatableAnnotation1c() {
 951         return "void test() { Outer.@RTB @RTB Inner a = null; }";
 952     }
 953 
 954     @TADescription(annotation = "RTAs", type = LOCAL_VARIABLE,
 955             genericLocation = {},
 956             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 957     @TADescription(annotation = "RTBs", type = LOCAL_VARIABLE,
 958             genericLocation = {1, 0},
 959             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
 960     public String testLocalRepeatableAnnotation2() {
 961         return "void test() { @RTA @RTA GOuter<String,String>.@RTB @RTB GInner<String,String> a = null; }";
 962     }
 963 
 964     @TADescription(annotation = "RTAs", type = LOCAL_VARIABLE,
 965             genericLocation = {0, 0, 0, 0},
 966             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 967     @TADescription(annotation = "RTBs", type = LOCAL_VARIABLE,
 968             genericLocation = {0, 0, 0, 0, 1, 0},
 969             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 970     @TADescription(annotation = "RTCs", type = LOCAL_VARIABLE,
 971             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0},
 972             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 973     @TADescription(annotation = "RTDs", type = LOCAL_VARIABLE,
 974             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0},
 975             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 976     @TADescription(annotation = "RTEs", type = LOCAL_VARIABLE,
 977             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0},
 978             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 979     @TADescription(annotation = "RTFs", type = LOCAL_VARIABLE,
 980             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0},
 981             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 982     @TADescription(annotation = "RTGs", type = LOCAL_VARIABLE,
 983             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0},
 984             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 985     @TADescription(annotation = "RTHs", type = LOCAL_VARIABLE,
 986             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 0},
 987             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 988     @TADescription(annotation = "RTIs", type = LOCAL_VARIABLE,
 989             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 1},
 990             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 991     @TADescription(annotation = "RTJs", type = LOCAL_VARIABLE,
 992             genericLocation = {},
 993             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 994     @TADescription(annotation = "RTKs", type = LOCAL_VARIABLE,
 995             genericLocation = {0, 0},
 996             lvarOffset = {5}, lvarLength = {1}, lvarIndex = {1})
 997     public String testLocalRepeatableAnnotation3() {
 998         return "class Outer {\n" +
 999                 " class GInner<X> {\n" +
1000                 "  class GInner2<Y, Z> {}\n" +
1001                 "}}\n\n" +
1002                 "class %TEST_CLASS_NAME% {\n" +
1003                 " void test() { @RTA @RTA Outer . @RTB @RTB GInner<@RTC @RTC List<@RTD @RTD Object" +
1004                 " @RTE @RTE[] @RTF @RTF[]>>. @RTG @RTG GInner2<@RTH @RTH Integer, @RTI @RTI Object>" +
1005                 " @RTJ @RTJ[] @RTK @RTK[] a = null; }\n" +
1006                 "}";
1007     }
1008 
1009 
1010     @TADescription(annotation = "RTAs", type = LOCAL_VARIABLE,
1011             genericLocation = {3, 0, 0, 0, 0, 0},
1012             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
1013     @TADescription(annotation = "RTBs", type = LOCAL_VARIABLE,
1014             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0},
1015             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
1016     @TADescription(annotation = "RTCs", type = LOCAL_VARIABLE,
1017             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0},
1018             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
1019     @TADescription(annotation = "RTDs", type = LOCAL_VARIABLE,
1020             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0},
1021             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
1022     @TADescription(annotation = "RTEs", type = LOCAL_VARIABLE,
1023             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0},
1024             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
1025     @TADescription(annotation = "RTFs", type = LOCAL_VARIABLE,
1026             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0},
1027             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
1028     @TADescription(annotation = "RTGs", type = LOCAL_VARIABLE,
1029             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0},
1030             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
1031     @TADescription(annotation = "RTHs", type = LOCAL_VARIABLE,
1032             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0},
1033             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
1034     @TADescription(annotation = "RTIs", type = LOCAL_VARIABLE,
1035             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1},
1036             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
1037     @TADescription(annotation = "RTJs", type = LOCAL_VARIABLE,
1038             genericLocation = {3, 0},
1039             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
1040     @TADescription(annotation = "RTKs", type = LOCAL_VARIABLE,
1041             genericLocation = {3, 0, 0, 0},
1042             lvarOffset = {2}, lvarLength = {1}, lvarIndex = {1})
1043     public String testLocalRepeatableAnnotation4() {
1044         return "class Outer {\n" +
1045                 " class GInner<X> {\n" +
1046                 "  class GInner2<Y, Z> {}\n" +
1047                 "}}\n\n" +
1048                 "class %TEST_CLASS_NAME% {\n" +
1049                 " void test() { List<@RTA @RTA Outer . @RTB @RTB GInner<@RTC @RTC List<@RTD @RTD" +
1050                 " Object @RTE @RTE [] @RTF @RTF []>>. @RTG @RTG GInner2<@RTH @RTH" +
1051                 " Integer, @RTI @RTI Object> @RTJ @RTJ [] @RTK @RTK []> a = null; }\n" +
1052                 "}";
1053     }
1054 
1055 
1056     // fields
1057 
1058     @TADescription(annotation = "RTAs", type = FIELD,
1059             genericLocation = {})
1060     @TADescription(annotation = "RTBs", type = FIELD,
1061             genericLocation = {1, 0})
1062     public String testFieldRepeatableAnnotation1a() {
1063         return "@RTA @RTA Outer.@RTB @RTB Inner a;";
1064     }
1065 
1066     @TADescription(annotation = "RTAs", type = FIELD,
1067             genericLocation = {})
1068     public String testFieldRepeatableAnnotation1b() {
1069         return "@RTA @RTA Outer.Inner a;";
1070     }
1071 
1072     @TADescription(annotation = "RTBs", type = FIELD,
1073             genericLocation = {1, 0})
1074     public String testFieldRepeatableAnnotation1c() {
1075         return "Outer.@RTB @RTB Inner a;";
1076     }
1077 
1078     @TADescription(annotation = "RTAs", type = FIELD,
1079             genericLocation = {})
1080     @TADescription(annotation = "RTBs", type = FIELD,
1081             genericLocation = {1, 0})
1082     public String testFieldRepeatableAnnotation2() {
1083         return "@RTA @RTA GOuter<String,String>.@RTB @RTB GInner<String,String> a;";
1084     }
1085 
1086     @TADescription(annotation = "RTAs", type = FIELD,
1087             genericLocation = {0, 0, 0, 0})
1088     @TADescription(annotation = "RTBs", type = FIELD,
1089             genericLocation = {0, 0, 0, 0, 1, 0})
1090     @TADescription(annotation = "RTCs", type = FIELD,
1091             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0})
1092     @TADescription(annotation = "RTDs", type = FIELD,
1093             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0})
1094     @TADescription(annotation = "RTEs", type = FIELD,
1095             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0})
1096     @TADescription(annotation = "RTFs", type = FIELD,
1097             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0})
1098     @TADescription(annotation = "RTGs", type = FIELD,
1099             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0})
1100     @TADescription(annotation = "RTHs", type = FIELD,
1101             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 0})
1102     @TADescription(annotation = "RTIs", type = FIELD,
1103             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 1})
1104     @TADescription(annotation = "RTJs", type = FIELD)
1105     @TADescription(annotation = "RTKs", type = FIELD,
1106             genericLocation = {0, 0})
1107     public String testFieldRepeatableAnnotation3() {
1108         return "class Outer {\n" +
1109                 " class GInner<X> {\n" +
1110                 "  class GInner2<Y, Z> {}\n" +
1111                 "}}\n\n" +
1112                 "class %TEST_CLASS_NAME% {\n" +
1113                 " @RTA @RTA Outer . @RTB @RTB GInner<@RTC @RTC List<@RTD @RTD Object @RTE @RTE[] @RTF @RTF[]>>." +
1114                 " @RTG @RTG GInner2<@RTH @RTH Integer, @RTI @RTI Object> @RTJ @RTJ[] @RTK @RTK[] a;\n" +
1115                 "}";
1116     }
1117 
1118     @TADescription(annotation = "RTAs", type = FIELD,
1119             genericLocation = {3, 0, 0, 0, 0, 0})
1120     @TADescription(annotation = "RTBs", type = FIELD,
1121             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0})
1122     @TADescription(annotation = "RTCs", type = FIELD,
1123             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0})
1124     @TADescription(annotation = "RTDs", type = FIELD,
1125             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0})
1126     @TADescription(annotation = "RTEs", type = FIELD,
1127             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0})
1128     @TADescription(annotation = "RTFs", type = FIELD,
1129             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0})
1130     @TADescription(annotation = "RTGs", type = FIELD,
1131             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0})
1132     @TADescription(annotation = "RTHs", type = FIELD,
1133             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0})
1134     @TADescription(annotation = "RTIs", type = FIELD,
1135             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1})
1136     @TADescription(annotation = "RTJs", type = FIELD,
1137             genericLocation = {3, 0})
1138     @TADescription(annotation = "RTKs", type = FIELD,
1139             genericLocation = {3, 0, 0, 0})
1140     public String testFieldRepeatableAnnotation4() {
1141         return "class Outer {\n" +
1142                 " class GInner<X> {\n" +
1143                 "  class GInner2<Y, Z> {}\n" +
1144                 "}}\n\n" +
1145                 "class %TEST_CLASS_NAME% {\n" +
1146                 " List<@RTA @RTA Outer . @RTB @RTB GInner<@RTC @RTC List<@RTD @RTD Object" +
1147                 " @RTE @RTE[] @RTF @RTF[]>>. @RTG @RTG GInner2<@RTH @RTH Integer," +
1148                 " @RTI @RTI Object> @RTJ @RTJ[] @RTK @RTK[]> a;\n" +
1149                 "}";
1150     }
1151 
1152 
1153     // return types
1154 
1155     @TADescription(annotation = "RTAs", type = METHOD_RETURN,
1156             genericLocation = {})
1157     @TADescription(annotation = "RTBs", type = METHOD_RETURN,
1158             genericLocation = {1, 0})
1159     public String testReturnRepeatableAnnotation1() {
1160         return "@RTA @RTA Outer.@RTB @RTB Inner test() { return null; }";
1161     }
1162 
1163     @TADescription(annotation = "RTAs", type = METHOD_RETURN,
1164             genericLocation = {})
1165     @TADescription(annotation = "RTBs", type = METHOD_RETURN,
1166             genericLocation = {1, 0})
1167     public String testReturnRepeatableAnnotation2() {
1168         return "@RTA @RTA GOuter<String,String>." +
1169                 "@RTB @RTB GInner<String,String> test() { return null; }";
1170     }
1171 
1172     @TADescription(annotation = "RTAs", type = METHOD_RETURN,
1173             genericLocation = {0, 0, 0, 0})
1174     @TADescription(annotation = "RTBs", type = METHOD_RETURN,
1175             genericLocation = {0, 0, 0, 0, 1, 0})
1176     @TADescription(annotation = "RTCs", type = METHOD_RETURN,
1177             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0})
1178     @TADescription(annotation = "RTDs", type = METHOD_RETURN,
1179             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0})
1180     @TADescription(annotation = "RTEs", type = METHOD_RETURN,
1181             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0})
1182     @TADescription(annotation = "RTFs", type = METHOD_RETURN,
1183             genericLocation = {0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0})
1184     @TADescription(annotation = "RTGs", type = METHOD_RETURN,
1185             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0})
1186     @TADescription(annotation = "RTHs", type = METHOD_RETURN,
1187             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 0})
1188     @TADescription(annotation = "RTIs", type = METHOD_RETURN,
1189             genericLocation = {0, 0, 0, 0, 1, 0, 1, 0, 3, 1})
1190     @TADescription(annotation = "RTJs", type = METHOD_RETURN)
1191     @TADescription(annotation = "RTKs", type = METHOD_RETURN,
1192             genericLocation = {0, 0})
1193     public String testReturnRepeatableAnnotation3() {
1194         return "class Outer {\n" +
1195                 " class GInner<X> {\n" +
1196                 "  class GInner2<Y, Z> {}\n" +
1197                 "}}\n\n" +
1198                 "class %TEST_CLASS_NAME% {\n" +
1199                 " @RTA @RTA Outer . @RTB @RTB GInner<@RTC @RTC List<@RTD @RTD Object @RTE @RTE[]" +
1200                 " @RTF @RTF[]>>. @RTG @RTG GInner2<@RTH @RTH Integer," +
1201                 " @RTI @RTI Object> @RTJ @RTJ[] @RTK @RTK[] test() { return null; }\n" +
1202                 "}";
1203     }
1204 
1205     @TADescription(annotation = "RTAs", type = METHOD_RETURN,
1206             genericLocation = {3, 0, 0, 0, 0, 0})
1207     @TADescription(annotation = "RTBs", type = METHOD_RETURN,
1208             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0})
1209     @TADescription(annotation = "RTCs", type = METHOD_RETURN,
1210             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0})
1211     @TADescription(annotation = "RTDs", type = METHOD_RETURN,
1212             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0})
1213     @TADescription(annotation = "RTEs", type = METHOD_RETURN,
1214             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0})
1215     @TADescription(annotation = "RTFs", type = METHOD_RETURN,
1216             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0})
1217     @TADescription(annotation = "RTGs", type = METHOD_RETURN,
1218             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0})
1219     @TADescription(annotation = "RTHs", type = METHOD_RETURN,
1220             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0})
1221     @TADescription(annotation = "RTIs", type = METHOD_RETURN,
1222             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1})
1223     @TADescription(annotation = "RTJs", type = METHOD_RETURN,
1224             genericLocation = {3, 0})
1225     @TADescription(annotation = "RTKs", type = METHOD_RETURN,
1226             genericLocation = {3, 0, 0, 0})
1227     public String testReturnRepeatableAnnotation4() {
1228         return "class Outer {\n" +
1229                 " class GInner<X> {\n" +
1230                 "  class GInner2<Y, Z> {}\n" +
1231                 "}}\n\n" +
1232                 "class %TEST_CLASS_NAME% {\n" +
1233                 " List<@RTA @RTA Outer . @RTB @RTB GInner<@RTC @RTC List<@RTD @RTD Object" +
1234                 " @RTE @RTE[] @RTF @RTF[]>>. @RTG @RTG GInner2<@RTH @RTH Integer," +
1235                 " @RTI @RTI Object> @RTJ @RTJ[] @RTK @RTK[]> test() { return null; }\n" +
1236                 "}";
1237     }
1238 
1239     @TADescription(annotation = "RTAs", type = METHOD_RETURN,
1240             genericLocation = {3, 0})
1241     @TADescription(annotation = "RTBs", type = METHOD_RETURN,
1242             genericLocation = {3, 0, 3, 0})
1243     @TADescription(annotation = "RTCs", type = METHOD_RETURN,
1244             genericLocation = {3, 0, 3, 1})
1245     @TADescription(annotation = "RTDs", type = METHOD_RETURN,
1246             genericLocation = {3, 0, 3, 1, 3, 0})
1247     @TADescription(annotation = "RTEs", type = METHOD_RETURN,
1248             genericLocation = {3, 0, 1, 0})
1249     @TADescription(annotation = "RTFs", type = METHOD_RETURN,
1250             genericLocation = {3, 0, 1, 0, 3, 0})
1251     @TADescription(annotation = "RTGs", type = METHOD_RETURN,
1252             genericLocation = {3, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0})
1253     @TADescription(annotation = "RTHs", type = METHOD_RETURN,
1254             genericLocation = {3, 0, 1, 0, 3, 0, 3, 0})
1255     @TADescription(annotation = "RTIs", type = METHOD_RETURN,
1256             genericLocation = {3, 0, 1, 0, 3, 0, 3, 0, 0, 0})
1257     @TADescription(annotation = "RTJs", type = METHOD_RETURN,
1258             genericLocation = {3, 0, 1, 0, 1, 0})
1259     public String testReturnRepeatableAnnotation5() {
1260         return "class GOuter<A, B> {\n" +
1261                 " class GInner<X> {\n" +
1262                 "  class GInner2<Y, Z> {}\n" +
1263                 "}}\n\n" +
1264                 "class %TEST_CLASS_NAME% {\n" +
1265                 " List<@RTA @RTA GOuter<@RTB @RTB String, @RTC @RTC List<@RTD @RTD Object>> ." +
1266                 " @RTE @RTE GInner<@RTF @RTF List<@RTG @RTG Object @RTH @RTH[] @RTI @RTI[]>>." +
1267                 " @RTJ @RTJ GInner2<String, String>> test() { return null; }\n" +
1268                 "}";
1269     }
1270 
1271 
1272     // type parameters
1273 
1274     @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER_BOUND,
1275             genericLocation = {}, paramIndex = 0, boundIndex = 0)
1276     @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND,
1277             genericLocation = {1, 0}, paramIndex = 0, boundIndex = 0)
1278     public String testTypeparamRepeatableAnnotation1() {
1279         return "<X extends @RTA @RTA Outer.@RTB @RTB Inner> X test() { return null; }";
1280     }
1281 
1282     @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER_BOUND,
1283             genericLocation = {}, paramIndex = 0, boundIndex = 0)
1284     @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND,
1285             genericLocation = {1, 0}, paramIndex = 0, boundIndex = 0)
1286     public String testTypeparamRepeatableAnnotation2() {
1287         return "<X extends @RTA @RTA GOuter<String,String>.@RTB @RTB GInner<String,String>> X test() { return null; }";
1288     }
1289 
1290     @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER_BOUND,
1291             genericLocation = {},
1292             paramIndex = 0, boundIndex = 0)
1293     @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND,
1294             genericLocation = {1, 0},
1295             paramIndex = 0, boundIndex = 0)
1296     @TADescription(annotation = "RTCs", type = METHOD_TYPE_PARAMETER_BOUND,
1297             genericLocation = {1, 0, 3, 0},
1298             paramIndex = 0, boundIndex = 0)
1299     @TADescription(annotation = "RTDs", type = METHOD_TYPE_PARAMETER_BOUND,
1300             genericLocation = {1, 0, 3, 0, 3, 0, 0, 0, 0, 0},
1301             paramIndex = 0, boundIndex = 0)
1302     @TADescription(annotation = "RTEs", type = METHOD_TYPE_PARAMETER_BOUND,
1303             genericLocation = {1, 0, 3, 0, 3, 0},
1304             paramIndex = 0, boundIndex = 0)
1305     @TADescription(annotation = "RTFs", type = METHOD_TYPE_PARAMETER_BOUND,
1306             genericLocation = {1, 0, 3, 0, 3, 0, 0, 0},
1307             paramIndex = 0, boundIndex = 0)
1308     @TADescription(annotation = "RTGs", type = METHOD_TYPE_PARAMETER_BOUND,
1309             genericLocation = {1, 0, 1, 0},
1310             paramIndex = 0, boundIndex = 0)
1311     @TADescription(annotation = "RTHs", type = METHOD_TYPE_PARAMETER_BOUND,
1312             genericLocation = {1, 0, 1, 0, 3, 0},
1313             paramIndex = 0, boundIndex = 0)
1314     @TADescription(annotation = "RTIs", type = METHOD_TYPE_PARAMETER_BOUND,
1315             genericLocation = {1, 0, 1, 0, 3, 1},
1316             paramIndex = 0, boundIndex = 0)
1317     public String testTypeparamRepeatableAnnotation3() {
1318         return "class Outer {\n" +
1319                 " class GInner<X> {\n" +
1320                 "  class GInner2<Y, Z> {}\n" +
1321                 "}}\n\n" +
1322                 "class %TEST_CLASS_NAME% {\n" +
1323                 " <X extends @RTA @RTA Outer . @RTB @RTB GInner<@RTC @RTC List<@RTD @RTD Object" +
1324                 " @RTE @RTE[] @RTF @RTF[]>>. @RTG @RTG GInner2<@RTH @RTH Integer," +
1325                 " @RTI @RTI Object>> X test() { return null; }\n" +
1326                 "}";
1327     }
1328 
1329     @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER_BOUND,
1330             genericLocation = {3, 0, 0, 0, 0, 0},
1331             paramIndex = 0, boundIndex = 1)
1332     @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND,
1333             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0},
1334             paramIndex = 0, boundIndex = 1)
1335     @TADescription(annotation = "RTCs", type = METHOD_TYPE_PARAMETER_BOUND,
1336             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0},
1337             paramIndex = 0, boundIndex = 1)
1338     @TADescription(annotation = "RTDs", type = METHOD_TYPE_PARAMETER_BOUND,
1339             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0},
1340             paramIndex = 0, boundIndex = 1)
1341     @TADescription(annotation = "RTEs", type = METHOD_TYPE_PARAMETER_BOUND,
1342             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0},
1343             paramIndex = 0, boundIndex = 1)
1344     @TADescription(annotation = "RTFs", type = METHOD_TYPE_PARAMETER_BOUND,
1345             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 3, 0, 0, 0},
1346             paramIndex = 0, boundIndex = 1)
1347     @TADescription(annotation = "RTGs", type = METHOD_TYPE_PARAMETER_BOUND,
1348             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0},
1349             paramIndex = 0, boundIndex = 1)
1350     @TADescription(annotation = "RTHs", type = METHOD_TYPE_PARAMETER_BOUND,
1351             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0},
1352             paramIndex = 0, boundIndex = 1)
1353     @TADescription(annotation = "RTIs", type = METHOD_TYPE_PARAMETER_BOUND,
1354             genericLocation = {3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1},
1355             paramIndex = 0, boundIndex = 1)
1356     @TADescription(annotation = "RTJs", type = METHOD_TYPE_PARAMETER_BOUND,
1357             genericLocation = {3, 0},
1358             paramIndex = 0, boundIndex = 1)
1359     @TADescription(annotation = "RTKs", type = METHOD_TYPE_PARAMETER_BOUND,
1360             genericLocation = {3, 0, 0, 0},
1361             paramIndex = 0, boundIndex = 1)
1362     public String testTypeparamRepeatableAnnotation4() {
1363         return "class Outer {\n" +
1364                 " class GInner<X> {\n" +
1365                 "  class GInner2<Y, Z> {}\n" +
1366                 "}}\n\n" +
1367                 "class %TEST_CLASS_NAME% {\n" +
1368                 " <X extends List<@RTA @RTA Outer . @RTB @RTB GInner<@RTC @RTC List<@RTD @RTD Object" +
1369                 " @RTE @RTE[] @RTF @RTF[]>>. @RTG @RTG GInner2<@RTH @RTH Integer," +
1370                 " @RTI @RTI Object> @RTJ @RTJ[] @RTK @RTK[]>> X test() { return null; }\n" +
1371                 "}";
1372     }
1373 
1374     @TADescription(annotation = "RTAs", type = METHOD_TYPE_PARAMETER_BOUND,
1375             genericLocation = {3, 0}, paramIndex = 0, boundIndex = 1)
1376     @TADescription(annotation = "RTBs", type = METHOD_TYPE_PARAMETER_BOUND,
1377             genericLocation = {3, 0, 3, 0}, paramIndex = 0, boundIndex = 1)
1378     @TADescription(annotation = "RTCs", type = METHOD_TYPE_PARAMETER_BOUND,
1379             genericLocation = {3, 0, 3, 1}, paramIndex = 0, boundIndex = 1)
1380     @TADescription(annotation = "RTDs", type = METHOD_TYPE_PARAMETER_BOUND,
1381             genericLocation = {3, 0, 3, 1, 3, 0}, paramIndex = 0, boundIndex = 1)
1382     @TADescription(annotation = "RTEs", type = METHOD_TYPE_PARAMETER_BOUND,
1383             genericLocation = {3, 0, 1, 0}, paramIndex = 0, boundIndex = 1)
1384     @TADescription(annotation = "RTFs", type = METHOD_TYPE_PARAMETER_BOUND,
1385             genericLocation = {3, 0, 1, 0, 3, 0}, paramIndex = 0, boundIndex = 1)
1386     @TADescription(annotation = "RTGs", type = METHOD_TYPE_PARAMETER_BOUND,
1387             genericLocation = {3, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0}, paramIndex = 0, boundIndex = 1)
1388     @TADescription(annotation = "RTHs", type = METHOD_TYPE_PARAMETER_BOUND,
1389             genericLocation = {3, 0, 1, 0, 3, 0, 3, 0}, paramIndex = 0, boundIndex = 1)
1390     @TADescription(annotation = "RTIs", type = METHOD_TYPE_PARAMETER_BOUND,
1391             genericLocation = {3, 0, 1, 0, 3, 0, 3, 0, 0, 0}, paramIndex = 0, boundIndex = 1)
1392     @TADescription(annotation = "RTJs", type = METHOD_TYPE_PARAMETER_BOUND,
1393             genericLocation = {3, 0, 1, 0, 1, 0}, paramIndex = 0, boundIndex = 1)
1394     public String testTypeparamRepeatableAnnotation5() {
1395         return "class GOuter<A, B> {\n" +
1396                 " class GInner<X> {\n" +
1397                 "  class GInner2<Y, Z> {}\n" +
1398                 "}}\n\n" +
1399                 "class %TEST_CLASS_NAME% {\n" +
1400                 " <X extends List<@RTA @RTA GOuter<@RTB @RTB String, @RTC @RTC List<@RTD @RTD Object>> ." +
1401                 " @RTE @RTE GInner<@RTF @RTF List<@RTG @RTG Object @RTH @RTH[] @RTI @RTI[]>>." +
1402                 " @RTJ @RTJ GInner2<String, String>>> X test() { return null; }\n" +
1403                 "}";
1404     }
1405 
1406     @TADescription(annotation = "RTAs", type = FIELD,
1407             genericLocation = {3, 0, 1, 0})
1408     public String testUsesRepeatableAnnotation1a() {
1409         return "class %TEST_CLASS_NAME% { class Inner {}    List<@RTA @RTA Inner> f; }";
1410     }
1411 
1412     @TADescription(annotation = "RTAs", type = FIELD,
1413             genericLocation = {3, 0})
1414     public String testUsesRepeatableAnnotation1b() {
1415         return "class %TEST_CLASS_NAME% { class Inner {}    List<@RTA @RTA %TEST_CLASS_NAME%.Inner> f; }";
1416     }
1417 
1418     @TADescription(annotation = "RTAs", type = FIELD,
1419             genericLocation = {3, 0, 1, 0, 1, 0})
1420     @TestClass("%TEST_CLASS_NAME%$Inner")
1421     public String testUsesRepeatableAnnotation2a() {
1422         return "class %TEST_CLASS_NAME% { class Inner { class Inner2{}    List<@RTA @RTA Inner2> f; }}";
1423     }
1424 
1425     @TADescription(annotation = "RTAs", type = FIELD,
1426             genericLocation = {3, 0, 1, 0})
1427     @TestClass("%TEST_CLASS_NAME%$Inner")
1428     public String testUsesRepeatableAnnotation2b() {
1429         return "class %TEST_CLASS_NAME% { class Inner { class Inner2{}    List<@RTA @RTA Inner.Inner2> f; }}";
1430     }
1431 
1432     @TADescription(annotation = "RTAs", type = FIELD,
1433             genericLocation = {3, 0, 1, 0, 1, 0})
1434     @TestClass("%TEST_CLASS_NAME%$Inner")
1435     public String testUsesRepeatableAnnotation2c() {
1436         return "class %TEST_CLASS_NAME% { class Inner { class Inner2{}    List<Inner.@RTA @RTA Inner2> f; }}";
1437     }
1438 
1439     @TADescription(annotation = "RTAs", type = FIELD,
1440             genericLocation = {3, 0})
1441     @TestClass("%TEST_CLASS_NAME%$Inner")
1442     public String testUsesRepeatableAnnotation2d() {
1443         return "class %TEST_CLASS_NAME%{ class Inner { class Inner2{}" +
1444                 "    List<@RTA @RTA %TEST_CLASS_NAME%.Inner.Inner2> f; }}";
1445     }
1446 
1447     @TADescription(annotation = "RTAs", type = FIELD,
1448             genericLocation = {3, 0, 1, 0})
1449     @TestClass("%TEST_CLASS_NAME%$Inner")
1450     public String testUsesRepeatableAnnotation2e() {
1451         return "class %TEST_CLASS_NAME% { class Inner { class Inner2{}" +
1452                 "    List<%TEST_CLASS_NAME%.@RTA @RTA Inner.Inner2> f; }}";
1453     }
1454 
1455     @TADescription(annotation = "RTAs", type = FIELD,
1456             genericLocation = {3, 0, 1, 0, 1, 0})
1457     @TestClass("%TEST_CLASS_NAME%$Inner")
1458     public String testUsesRepeatableAnnotation2f() {
1459         return "class %TEST_CLASS_NAME% { class Inner { class Inner2{}" +
1460                 "    List<%TEST_CLASS_NAME%.Inner.@RTA @RTA Inner2> f; }}";
1461     }
1462 
1463     @TADescription(annotation = "RTAs", type = FIELD,
1464             genericLocation = {3, 0, 1, 0, 1, 0})
1465     @TestClass("%TEST_CLASS_NAME%$Inner")
1466     public String testUsesRepeatableAnnotation3a() {
1467         return "class %TEST_CLASS_NAME% { class Inner<A, B> { class Inner2<C, D>{}\n" +
1468                 "    List<%TEST_CLASS_NAME%.Inner.@RTA @RTA Inner2> f; }}";
1469     }
1470 
1471     @TADescription(annotation = "RTAs", type = FIELD,
1472             genericLocation = {3, 0, 1, 0})
1473     @TestClass("%TEST_CLASS_NAME%$Inner")
1474     public String testUsesRepeatableAnnotation3b() {
1475         return "class %TEST_CLASS_NAME% { class Inner<A, B> { class Inner2<C, D>{}\n" +
1476                 "    List<%TEST_CLASS_NAME%.@RTA @RTA Inner.Inner2> f; }}";
1477     }
1478 
1479     @TADescription(annotation = "RTAs", type = FIELD,
1480             genericLocation = {})
1481     @TADescription(annotation = "RTBs", type = FIELD,
1482             genericLocation = {3, 0})
1483     public String testUsesRepeatableAnnotation4() {
1484         return "class %TEST_CLASS_NAME% { static class TInner {}\n" +
1485                 "    @RTA @RTA TInner f; \n" +
1486                 "    List<@RTB @RTB TInner> g; }";
1487     }
1488 
1489     @TADescription(annotation = "RTAs", type = FIELD,
1490             genericLocation = {3, 0, 1, 0, 3, 1})
1491     @TestClass("%TEST_CLASS_NAME%$Inner")
1492     public String testUsesRepeatableAnnotation3c() {
1493         return "class %TEST_CLASS_NAME% { class Inner<A, B> { class Inner2<C, D>{}\n" +
1494                 "    List<%TEST_CLASS_NAME%.Inner<String," +
1495                 " @RTA @RTA Object>.Inner2<%TEST_CLASS_NAME%, %TEST_CLASS_NAME%>> f; }}";
1496     }
1497 
1498     @TADescription(annotation = "RTAs", type = METHOD_FORMAL_PARAMETER, paramIndex=0)
1499     public String testFullyQualifiedRepeatableAnnotation1() {
1500         return "void testme(java.security.@RTA @RTA ProtectionDomain protectionDomain) {}";
1501     }
1502 
1503     @TADescription(annotation = "RTAs", type = METHOD_FORMAL_PARAMETER, paramIndex=0,
1504             genericLocation = {3, 0})
1505     public String testFullyQualifiedRepeatableAnnotation2() {
1506         return "void testme(List<java.security.@RTA @RTA ProtectionDomain> protectionDomain) {}";
1507     }
1508 
1509     @TADescription(annotation = "RTAs", type = LOCAL_VARIABLE,
1510             genericLocation = {},
1511             lvarOffset = ReferenceInfoUtil.IGNORE_VALUE,
1512             lvarLength = ReferenceInfoUtil.IGNORE_VALUE,
1513             lvarIndex = ReferenceInfoUtil.IGNORE_VALUE)
1514     @TADescription(annotation = "RTBs", type = LOCAL_VARIABLE,
1515             genericLocation = {1, 0},
1516             lvarOffset = ReferenceInfoUtil.IGNORE_VALUE,
1517             lvarLength = ReferenceInfoUtil.IGNORE_VALUE,
1518             lvarIndex = ReferenceInfoUtil.IGNORE_VALUE)
1519     @TADescription(annotation = "RTCs", type = LOCAL_VARIABLE,
1520             // Only classes count, not methods.
1521             genericLocation = {1, 0, 1, 0},
1522             lvarOffset = ReferenceInfoUtil.IGNORE_VALUE,
1523             lvarLength = ReferenceInfoUtil.IGNORE_VALUE,
1524             lvarIndex = ReferenceInfoUtil.IGNORE_VALUE)
1525     @TestClass("Outer$Inner")
1526     public String testMethodNestingRepeatableAnnotation1() {
1527         return "class Outer {\n" +
1528                 " class Inner {\n" +
1529                 "  void foo() {\n" +
1530                 "    class MInner {}\n" +
1531                 "    @RTA @RTA Outer . @RTB @RTB Inner l1 = null;\n" +
1532                 "    @RTC @RTC MInner l2 = null;\n" +
1533                 "  }\n" +
1534                 "}}\n";
1535     }
1536 
1537     @TADescription(annotation = "RTAs", type = NEW,
1538             genericLocation = {},
1539             offset = 0)
1540     @TADescription(annotation = "RTBs", type = NEW,
1541             genericLocation = {1, 0},
1542             offset = 0)
1543     @TADescription(annotation = "RTCs", type = NEW,
1544             // Only classes count, not methods.
1545             genericLocation = {1, 0, 1, 0},
1546             offset = 12)
1547     @TestClass("Outer$Inner")
1548     public String testMethodNestingRepeatableAnnotation2() {
1549         return "class Outer {\n" +
1550                 " class Inner {\n" +
1551                 "  void foo() {\n" +
1552                 "    class MInner {}\n" +
1553                 "    Object o1 = new @RTA @RTA Outer . @RTB @RTB Inner();" +
1554                 "    Object o2 = new @RTC @RTC MInner();\n" +
1555                 "  }\n" +
1556                 "}}\n";
1557     }
1558 
1559     @TADescription(annotation = "RTAs", type = CLASS_EXTENDS,
1560             genericLocation = {}, typeIndex = -1)
1561     @TADescription(annotation = "RTBs", type = CLASS_EXTENDS,
1562             genericLocation = {3, 0}, typeIndex = -1)
1563     @TADescription(annotation = "RTCs", type = CLASS_EXTENDS,
1564             genericLocation = {3, 1}, typeIndex = -1)
1565     @TADescription(annotation = "RTDs", type = CLASS_EXTENDS,
1566             genericLocation = {1, 0}, typeIndex = -1)
1567     @TADescription(annotation = "RTEs", type = CLASS_EXTENDS,
1568             genericLocation = {1, 0, 3, 0}, typeIndex = -1)
1569     @TADescription(annotation = "RTFs", type = CLASS_EXTENDS,
1570             genericLocation = {1, 0, 3, 1}, typeIndex = -1)
1571     @TestClass("GOuter$GInner$Test")
1572     public String testExtendsRepeatableAnnotation1() {
1573         return "class GOuter<A, B> {\n" +
1574                 "  class GInner<X, Y> {\n" +
1575                 "    class Test extends @RTA @RTA GOuter<@RTB @RTB String," +
1576                 " @RTC @RTC String>.@RTD @RTD GInner<@RTE @RTE String, @RTF @RTF String> {}" +
1577                 "  }" +
1578                 "}";
1579     }
1580 
1581     @TADescription(annotation = "RTAs", type = CLASS_TYPE_PARAMETER,
1582             genericLocation = {}, paramIndex = 0)
1583     @TADescription(annotation = "RTBs", type = CLASS_TYPE_PARAMETER_BOUND,
1584             genericLocation = {}, paramIndex = 0, boundIndex = 0)
1585     @TADescription(annotation = "RTCs", type = FIELD,
1586             genericLocation = {})
1587     @TADescription(annotation = "RTDs", type = FIELD,
1588             genericLocation = {3, 0})
1589     @TestClass("%TEST_CLASS_NAME%$1Nested")
1590     public String testNestedInMethodRepeatableAnnotation1() {
1591         return "class %TEST_CLASS_NAME% {\n" +
1592                 "  void foobar() {\n" +
1593                 "    class Nested<@RTA @RTA X extends @RTB @RTB Object> {\n" +
1594                 "      @RTC @RTC List<@RTD @RTD Object> f;\n" +
1595                 "    }\n" +
1596                 "  }" +
1597                 "}";
1598     }
1599 }