// https://bugs.eclipse.org/bugs/show_bug.cgi?id=157170
 public void test0017() {
   CompilerOptions options = new CompilerOptions();
   options.complianceLevel = ClassFileConstants.JDK1_5;
   options.sourceLevel = ClassFileConstants.JDK1_5;
   options.targetJDK = ClassFileConstants.JDK1_5;
   this.runConformTest(
       "X.java",
       "@interface Annot {\n"
           + "	int value() default 0;\n"
           + "}\n"
           + "@Annot\n"
           + "@Annot(3)\n"
           + "@Annot(value=4)\n"
           + "public class X {\n"
           + "}\n",
       new Parser(
           new ProblemReporter(
               DefaultErrorHandlingPolicies.proceedWithAllProblems(),
               options,
               new DefaultProblemFactory()),
           false),
       new AnnotationCollector(),
       "marker annotation start visit\n"
           + "marker annotation end visit\n"
           + "single member annotation start visit\n"
           + "3\n"
           + "single member annotation end visit\n"
           + "normal annotation start visit\n"
           + "member value pair start visit\n"
           + "value, 4\n"
           + "member value pair end visit\n"
           + "normal annotation end visit\n");
 }
 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=157170
 public void test0019() {
   CompilerOptions options = new CompilerOptions();
   options.complianceLevel = ClassFileConstants.JDK1_5;
   options.sourceLevel = ClassFileConstants.JDK1_5;
   options.targetJDK = ClassFileConstants.JDK1_5;
   options.docCommentSupport = true;
   this.runConformTest(
       "X.java",
       "@interface Annot {\n"
           + "	int value() default 0;\n"
           + "}\n"
           + "/**\n"
           + " * @see Annot\n"
           + " */\n"
           + "@Annot\n"
           + "@Annot(3)\n"
           + "@Annot(value=4)\n"
           + "public class X {\n"
           + "	/**\n"
           + "	 * @see Annot\n"
           + "	 */\n"
           + "	public void foo(@Annot int i) {\n"
           + "		@Annot int j = 0;"
           + "	}\n"
           + "}\n",
       new Parser(
           new ProblemReporter(
               DefaultErrorHandlingPolicies.proceedWithAllProblems(),
               options,
               new DefaultProblemFactory()),
           false),
       new AnnotationCollector(),
       "java doc single type reference start visit\n"
           + "java doc single type reference end visit\n"
           + "marker annotation start visit\n"
           + "marker annotation end visit\n"
           + "single member annotation start visit\n"
           + "3\n"
           + "single member annotation end visit\n"
           + "normal annotation start visit\n"
           + "member value pair start visit\n"
           + "value, 4\n"
           + "member value pair end visit\n"
           + "normal annotation end visit\n"
           + "java doc single type reference start visit\n"
           + "java doc single type reference end visit\n"
           + "start argument\n"
           + "marker annotation start visit\n"
           + "marker annotation end visit\n"
           + "exit argument\n"
           + "start local declaration\n"
           + "marker annotation start visit\n"
           + "marker annotation end visit\n"
           + "exit local declaration\n");
 }
  public static CompilerOptions getCompilerOptions() {
    CompilerOptions options = new CompilerOptions();
    options.complianceLevel = options.sourceLevel = options.targetJDK = ClassFileConstants.JDK1_6;

    // Generate debug info for debugging the output.
    options.produceDebugAttributes =
        ClassFileConstants.ATTR_VARS
            | ClassFileConstants.ATTR_LINES
            | ClassFileConstants.ATTR_SOURCE;
    // Tricks like "boolean stopHere = true;" depend on this setting.
    options.preserveAllLocalVariables = true;
    // Let the JDT collect compilation unit dependencies
    options.produceReferenceInfo = true;

    // Turn off all warnings, saves some memory / speed.
    options.reportUnusedDeclaredThrownExceptionIncludeDocCommentReference = false;
    options.reportUnusedDeclaredThrownExceptionExemptExceptionAndThrowable = false;
    options.warningThreshold = 0;
    options.inlineJsrBytecode = true;
    return options;
  }