Merge
authorlana
Wed, 22 Feb 2012 16:52:50 -0800
changeset 11914 d1311b0c757f
parent 11913 be61e1597cc6 (current diff)
parent 11872 c51754cddc03 (diff)
child 11915 33f703959597
child 11986 6f383069eb6d
Merge
langtools/make/test/lib/apt.sh
langtools/src/share/classes/com/sun/mirror/apt/AnnotationProcessor.java
langtools/src/share/classes/com/sun/mirror/apt/AnnotationProcessorEnvironment.java
langtools/src/share/classes/com/sun/mirror/apt/AnnotationProcessorFactory.java
langtools/src/share/classes/com/sun/mirror/apt/AnnotationProcessorListener.java
langtools/src/share/classes/com/sun/mirror/apt/AnnotationProcessors.java
langtools/src/share/classes/com/sun/mirror/apt/Filer.java
langtools/src/share/classes/com/sun/mirror/apt/Messager.java
langtools/src/share/classes/com/sun/mirror/apt/RoundCompleteEvent.java
langtools/src/share/classes/com/sun/mirror/apt/RoundCompleteListener.java
langtools/src/share/classes/com/sun/mirror/apt/RoundState.java
langtools/src/share/classes/com/sun/mirror/apt/package-info.java
langtools/src/share/classes/com/sun/mirror/declaration/AnnotationMirror.java
langtools/src/share/classes/com/sun/mirror/declaration/AnnotationTypeDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/AnnotationTypeElementDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/AnnotationValue.java
langtools/src/share/classes/com/sun/mirror/declaration/ClassDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/ConstructorDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/Declaration.java
langtools/src/share/classes/com/sun/mirror/declaration/EnumConstantDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/EnumDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/ExecutableDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/FieldDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/InterfaceDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/MemberDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/MethodDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/Modifier.java
langtools/src/share/classes/com/sun/mirror/declaration/PackageDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/ParameterDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/TypeDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/TypeParameterDeclaration.java
langtools/src/share/classes/com/sun/mirror/declaration/package-info.java
langtools/src/share/classes/com/sun/mirror/overview.html
langtools/src/share/classes/com/sun/mirror/type/AnnotationType.java
langtools/src/share/classes/com/sun/mirror/type/ArrayType.java
langtools/src/share/classes/com/sun/mirror/type/ClassType.java
langtools/src/share/classes/com/sun/mirror/type/DeclaredType.java
langtools/src/share/classes/com/sun/mirror/type/EnumType.java
langtools/src/share/classes/com/sun/mirror/type/InterfaceType.java
langtools/src/share/classes/com/sun/mirror/type/MirroredTypeException.java
langtools/src/share/classes/com/sun/mirror/type/MirroredTypesException.java
langtools/src/share/classes/com/sun/mirror/type/PrimitiveType.java
langtools/src/share/classes/com/sun/mirror/type/ReferenceType.java
langtools/src/share/classes/com/sun/mirror/type/TypeMirror.java
langtools/src/share/classes/com/sun/mirror/type/TypeVariable.java
langtools/src/share/classes/com/sun/mirror/type/VoidType.java
langtools/src/share/classes/com/sun/mirror/type/WildcardType.java
langtools/src/share/classes/com/sun/mirror/type/package-info.java
langtools/src/share/classes/com/sun/mirror/util/DeclarationFilter.java
langtools/src/share/classes/com/sun/mirror/util/DeclarationScanner.java
langtools/src/share/classes/com/sun/mirror/util/DeclarationVisitor.java
langtools/src/share/classes/com/sun/mirror/util/DeclarationVisitors.java
langtools/src/share/classes/com/sun/mirror/util/Declarations.java
langtools/src/share/classes/com/sun/mirror/util/SimpleDeclarationVisitor.java
langtools/src/share/classes/com/sun/mirror/util/SimpleTypeVisitor.java
langtools/src/share/classes/com/sun/mirror/util/SourceOrderDeclScanner.java
langtools/src/share/classes/com/sun/mirror/util/SourcePosition.java
langtools/src/share/classes/com/sun/mirror/util/TypeVisitor.java
langtools/src/share/classes/com/sun/mirror/util/Types.java
langtools/src/share/classes/com/sun/mirror/util/package-info.java
langtools/src/share/classes/com/sun/tools/apt/Main.java
langtools/src/share/classes/com/sun/tools/apt/comp/AnnotationProcessingError.java
langtools/src/share/classes/com/sun/tools/apt/comp/Apt.java
langtools/src/share/classes/com/sun/tools/apt/comp/BootstrapAPF.java
langtools/src/share/classes/com/sun/tools/apt/comp/PrintAP.java
langtools/src/share/classes/com/sun/tools/apt/comp/UsageMessageNeededException.java
langtools/src/share/classes/com/sun/tools/apt/main/AptJavaCompiler.java
langtools/src/share/classes/com/sun/tools/apt/main/CommandLine.java
langtools/src/share/classes/com/sun/tools/apt/main/Main.java
langtools/src/share/classes/com/sun/tools/apt/mirror/AptEnv.java
langtools/src/share/classes/com/sun/tools/apt/mirror/apt/AnnotationProcessorEnvironmentImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/apt/FilerImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/apt/MessagerImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/apt/RoundCompleteEventImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/apt/RoundStateImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationMirrorImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationProxyMaker.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationTypeDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationTypeElementDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationValueImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/ClassDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/Constants.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/ConstructorDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/DeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/DeclarationMaker.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/EnumConstantDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/EnumDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/ExecutableDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/FieldDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/InterfaceDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/MemberDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/MethodDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/PackageDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/ParameterDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/TypeDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/TypeParameterDeclarationImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/type/AnnotationTypeImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/type/ArrayTypeImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/type/ClassTypeImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/type/DeclaredTypeImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/type/EnumTypeImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/type/InterfaceTypeImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/type/PrimitiveTypeImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/type/TypeMaker.java
langtools/src/share/classes/com/sun/tools/apt/mirror/type/TypeMirrorImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/type/TypeVariableImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/type/VoidTypeImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/type/WildcardTypeImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/util/DeclarationsImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/util/SourcePositionImpl.java
langtools/src/share/classes/com/sun/tools/apt/mirror/util/TypesImpl.java
langtools/src/share/classes/com/sun/tools/apt/resources/apt.properties
langtools/src/share/classes/com/sun/tools/apt/resources/apt_ja.properties
langtools/src/share/classes/com/sun/tools/apt/resources/apt_zh_CN.properties
langtools/src/share/classes/com/sun/tools/apt/util/Bark.java
langtools/test/tools/apt/Basics/Aggregate.java
langtools/test/tools/apt/Basics/ClassAnnotations.java
langtools/test/tools/apt/Basics/FreshnessApf.java
langtools/test/tools/apt/Basics/GenClass.java
langtools/test/tools/apt/Basics/Indirect.java
langtools/test/tools/apt/Basics/Lacuna.java
langtools/test/tools/apt/Basics/MethodAnnotations.java
langtools/test/tools/apt/Basics/Milk.java
langtools/test/tools/apt/Basics/MisMatch.java
langtools/test/tools/apt/Basics/Misc.java
langtools/test/tools/apt/Basics/MyMarker.java
langtools/test/tools/apt/Basics/MySimple.java
langtools/test/tools/apt/Basics/NestedClassAnnotations.java
langtools/test/tools/apt/Basics/ParameterAnnotations.java
langtools/test/tools/apt/Basics/StaticFieldAnnotations.java
langtools/test/tools/apt/Basics/StaticMethodAnnotations.java
langtools/test/tools/apt/Basics/TestGetPackageApf.java
langtools/test/tools/apt/Basics/TestGetTypeDeclarationApf.java
langtools/test/tools/apt/Basics/annot/AnnotMarker.java
langtools/test/tools/apt/Basics/annot/AnnotShangri_la.java
langtools/test/tools/apt/Basics/annot/AnnotSimple.java
langtools/test/tools/apt/Basics/annot/annot2/AnnotMarker2.java
langtools/test/tools/apt/Basics/annot/annot2/AnnotSimple2.java
langtools/test/tools/apt/Basics/com.sun.mirror.apt.AnnotationProcessorFactory
langtools/test/tools/apt/Basics/foo/bar/Baz.java
langtools/test/tools/apt/Basics/foo/bar/Quux.java
langtools/test/tools/apt/Basics/golden.txt
langtools/test/tools/apt/Basics/goldenAggregate.txt
langtools/test/tools/apt/Basics/p1/p2.java
langtools/test/tools/apt/Basics/p1/p2/C1.java
langtools/test/tools/apt/Basics/print.sh
langtools/test/tools/apt/Compile/ClassDeclApf.java
langtools/test/tools/apt/Compile/ClassDeclApf2.java
langtools/test/tools/apt/Compile/Dummy1.java
langtools/test/tools/apt/Compile/ErrorAPF.java
langtools/test/tools/apt/Compile/HelloAnnotation.java
langtools/test/tools/apt/Compile/HelloWorld.java
langtools/test/tools/apt/Compile/Round1Apf.java
langtools/test/tools/apt/Compile/Round2Apf.java
langtools/test/tools/apt/Compile/Round3Apf.java
langtools/test/tools/apt/Compile/Round4Apf.java
langtools/test/tools/apt/Compile/Rounds.java
langtools/test/tools/apt/Compile/StaticApf.java
langtools/test/tools/apt/Compile/WarnAPF.java
langtools/test/tools/apt/Compile/WrappedStaticApf.java
langtools/test/tools/apt/Compile/compile.sh
langtools/test/tools/apt/Compile/golden.txt
langtools/test/tools/apt/Compile/goldenFactory.txt
langtools/test/tools/apt/Compile/goldenWarn.txt
langtools/test/tools/apt/Compile/servicesRound1
langtools/test/tools/apt/Compile/servicesRound2
langtools/test/tools/apt/Compile/servicesRound3
langtools/test/tools/apt/Compile/servicesRound4
langtools/test/tools/apt/Compile/servicesStaticApf
langtools/test/tools/apt/Compile/src/AhOneClass.java
langtools/test/tools/apt/Compile/src/AndAhTwoClass.java
langtools/test/tools/apt/Compile/src/Round1Class.java
langtools/test/tools/apt/Discovery/Dee.java
langtools/test/tools/apt/Discovery/Dum.java
langtools/test/tools/apt/Discovery/Empty.java
langtools/test/tools/apt/Discovery/PhantomTouch.java
langtools/test/tools/apt/Discovery/PhantomUpdate.java
langtools/test/tools/apt/Discovery/Touch.java
langtools/test/tools/apt/Discovery/discovery.sh
langtools/test/tools/apt/Discovery/servicesBadTouch
langtools/test/tools/apt/Discovery/servicesPhantomTouch
langtools/test/tools/apt/Discovery/servicesTouch
langtools/test/tools/apt/Discovery/servicesTweedle
langtools/test/tools/apt/Misc/Marked.java
langtools/test/tools/apt/Misc/Marker.java
langtools/test/tools/apt/Misc/Misc.java
langtools/test/tools/apt/Misc/misc.sh
langtools/test/tools/apt/Misc/servicesMisc
langtools/test/tools/apt/Options/Marked.java
langtools/test/tools/apt/Options/Marker.java
langtools/test/tools/apt/Options/OptionChecker.java
langtools/test/tools/apt/Options/options.sh
langtools/test/tools/apt/Options/servicesOptions
langtools/test/tools/apt/Scanners/Counter.java
langtools/test/tools/apt/Scanners/MemberOrderApf.java
langtools/test/tools/apt/Scanners/Order.java
langtools/test/tools/apt/Scanners/Scanner.java
langtools/test/tools/apt/Scanners/TestEnum.java
langtools/test/tools/apt/Scanners/VisitOrder.java
langtools/test/tools/apt/Scanners/scanner.sh
langtools/test/tools/apt/Scanners/servicesScanner
langtools/test/tools/apt/lib/Ignore.java
langtools/test/tools/apt/lib/Test.java
langtools/test/tools/apt/lib/TestProcessor.java
langtools/test/tools/apt/lib/TestProcessorFactory.java
langtools/test/tools/apt/lib/Tester.java
langtools/test/tools/apt/mirror/declaration/AnnoMirror.java
langtools/test/tools/apt/mirror/declaration/AnnoTypeDecl.java
langtools/test/tools/apt/mirror/declaration/AnnoTypeElemDecl.java
langtools/test/tools/apt/mirror/declaration/AnnoVal.java
langtools/test/tools/apt/mirror/declaration/ClassDecl.java
langtools/test/tools/apt/mirror/declaration/ConstExpr.java
langtools/test/tools/apt/mirror/declaration/ConstructorDecl.java
langtools/test/tools/apt/mirror/declaration/EnumDecl.java
langtools/test/tools/apt/mirror/declaration/FieldDecl.java
langtools/test/tools/apt/mirror/declaration/GetAnno.java
langtools/test/tools/apt/mirror/declaration/InterfaceDecl.java
langtools/test/tools/apt/mirror/declaration/MethodDecl.java
langtools/test/tools/apt/mirror/declaration/PackageDecl.java
langtools/test/tools/apt/mirror/declaration/ParameterDecl.java
langtools/test/tools/apt/mirror/declaration/pkg1/AClass.java
langtools/test/tools/apt/mirror/declaration/pkg1/AnAnnoType.java
langtools/test/tools/apt/mirror/declaration/pkg1/AnEnum.java
langtools/test/tools/apt/mirror/declaration/pkg1/AnInterface.java
langtools/test/tools/apt/mirror/declaration/pkg1/package-info.java
langtools/test/tools/apt/mirror/declaration/pkg1/pkg2/AnInterface.java
langtools/test/tools/apt/mirror/declaration/pkg1/pkg2/package.html
langtools/test/tools/apt/mirror/type/AnnoTyp.java
langtools/test/tools/apt/mirror/type/ArrayTyp.java
langtools/test/tools/apt/mirror/type/ClassTyp.java
langtools/test/tools/apt/mirror/type/EnumTyp.java
langtools/test/tools/apt/mirror/type/InterfaceTyp.java
langtools/test/tools/apt/mirror/type/PrimitiveTyp.java
langtools/test/tools/apt/mirror/type/TypeVar.java
langtools/test/tools/apt/mirror/type/WildcardTyp.java
langtools/test/tools/apt/mirror/util/Overrides.java
langtools/test/tools/apt/mirror/util/TypeCreation.java
--- a/.hgtags	Tue Feb 21 05:44:29 2012 -0800
+++ b/.hgtags	Wed Feb 22 16:52:50 2012 -0800
@@ -147,3 +147,4 @@
 498124337041ad53cbaa7eb110f3d7acd6d4eac4 jdk8-b23
 7d3720d8c595d1519c31e9ff7366203fc2c61350 jdk8-b24
 0071a6d64113a35ba345bb1580c256de5ce17d3e jdk8-b25
+6c805d8ed4e5449ea5e4d158c7bdbd7b0b70efd1 jdk8-b26
--- a/.hgtags-top-repo	Tue Feb 21 05:44:29 2012 -0800
+++ b/.hgtags-top-repo	Wed Feb 22 16:52:50 2012 -0800
@@ -147,3 +147,4 @@
 60d6f64a86b1e511169d264727f6d51415978df0 jdk8-b23
 1a5f1d6b98d6827cdb529a4abe6e52a886d944f4 jdk8-b24
 221a378e06a326f45e5d89e2123cd6323e0181d1 jdk8-b25
+2accafff224ae39caf5f532c305251ba624bf2c0 jdk8-b26
--- a/corba/.hgtags	Tue Feb 21 05:44:29 2012 -0800
+++ b/corba/.hgtags	Wed Feb 22 16:52:50 2012 -0800
@@ -147,3 +147,4 @@
 5218eb256658442b62b05295aafa5b5f35252972 jdk8-b23
 b98f0e6dddf987df565029a1f58417fc1844c3f3 jdk8-b24
 e45d6b406d5f91ff5256a5c82456ab1e7eb8becd jdk8-b25
+79f709a099f40c08f76567fa6d813f9009a69826 jdk8-b26
--- a/hotspot/.hgtags	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/.hgtags	Wed Feb 22 16:52:50 2012 -0800
@@ -220,3 +220,7 @@
 64b46f975ab82948c1e021e17775ff4fab8bc40e hs23-b14
 9ad8feb5afbddec46d3cfe29fb5f73c2e99d5a43 jdk8-b25
 d71e662fe03741b6de498ca2077220148405a978 hs23-b15
+fd3060701216a11c0df6dcd053c6fd7c2b17a42c jdk8-b26
+f92a171cf0071ca6c3fa8231d7d570377f8b2f4d hs23-b16
+f92a171cf0071ca6c3fa8231d7d570377f8b2f4d hs23-b16
+931e5f39e365a0d550d79148ff87a7f9e864d2e1 hs23-b16
--- a/hotspot/agent/src/os/linux/Makefile	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/agent/src/os/linux/Makefile	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2002, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -40,7 +40,7 @@
 
 LIBS     = -lthread_db
 
-CFLAGS   = -c -fPIC -g -D_GNU_SOURCE -D$(ARCH) $(INCLUDES)
+CFLAGS   = -c -fPIC -g -D_GNU_SOURCE -D$(ARCH) $(INCLUDES) -D_FILE_OFFSET_BITS=64
 
 LIBSA = $(ARCH)/libsaproc.so
 
--- a/hotspot/agent/src/os/linux/libproc_impl.c	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/agent/src/os/linux/libproc_impl.c	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -50,10 +50,6 @@
    char alt_path[PATH_MAX + 1];
 
    init_alt_root();
-   fd = open(name, O_RDONLY);
-   if (fd >= 0) {
-      return fd;
-   }
 
    if (alt_root_len > 0) {
       strcpy(alt_path, alt_root);
@@ -73,6 +69,11 @@
             return fd;
          }
       }
+   } else {
+      fd = open(name, O_RDONLY);
+      if (fd >= 0) {
+         return fd;
+      }
    }
 
    return -1;
--- a/hotspot/make/Makefile	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/make/Makefile	Wed Feb 22 16:52:50 2012 -0800
@@ -402,7 +402,6 @@
 	$(install-file)
 else
 $(EXPORT_INCLUDE_DIR)/jfr.h:
-	
 endif
 
 # Doc files (jvmti.html)
@@ -448,12 +447,18 @@
 	 ($(CD) $(JDK_IMAGE_DIR) && $(TAR) -xf -)
 
 test_jdk:
-  ifneq ($(ZERO_BUILD), true)
     ifeq ($(ARCH_DATA_MODEL), 32)
-	$(JDK_IMAGE_DIR)/bin/java -client -version
+      ifneq ($(ZERO_BUILD), true)
+	$(JDK_IMAGE_DIR)/bin/java -d32 -client -Xinternalversion
+	$(JDK_IMAGE_DIR)/bin/java -d32 -client -version
+      endif
+	$(JDK_IMAGE_DIR)/bin/java -d32 -server -Xinternalversion
+	$(JDK_IMAGE_DIR)/bin/java -d32 -server -version
     endif
-  endif
-	$(JDK_IMAGE_DIR)/bin/java -server -version
+    ifeq ($(ARCH_DATA_MODEL), 64)
+	$(JDK_IMAGE_DIR)/bin/java -d64 -server -Xinternalversion
+	$(JDK_IMAGE_DIR)/bin/java -d64 -server -version
+    endif
 
 copy_product_jdk::
 	$(RM) -r $(JDK_IMAGE_DIR)
@@ -545,6 +550,7 @@
 OUTPUTDIR.desc             = Output directory, default is build/<osname>
 BOOTDIR.desc               = JDK used to compile agent java source and test with
 JDK_IMPORT_PATH.desc       = Promoted JDK to copy for 'create_jdk'
+JDK_IMAGE_DIR.desc         = Directory to place JDK to copy
 EXPORT_PATH.desc           = Directory to place files to export for JDK build
 
 # Make variables to print out (description and value)
@@ -553,6 +559,7 @@
     OUTPUTDIR                   \
     BOOTDIR                     \
     JDK_IMPORT_PATH             \
+    JDK_IMAGE_DIR               \
     EXPORT_PATH
 
 # Make variables that should refer to directories that exist
--- a/hotspot/make/bsd/makefiles/defs.make	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/make/bsd/makefiles/defs.make	Wed Feb 22 16:52:50 2012 -0800
@@ -191,6 +191,9 @@
 
     # Set universal image dir
     JDK_IMAGE_DIR=$(OUTPUTDIR)/jdk-universal$(EXPORT_SUBDIR)
+    ifneq ($(ALT_JDK_IMAGE_DIR),)
+      JDK_IMAGE_DIR=$(ALT_JDK_IMAGE_DIR)
+    endif
 
     # Binaries to 'universalize' if built
     UNIVERSAL_LIPO_LIST += $(EXPORT_JRE_LIB_DIR)/libjsig.$(LIBRARY_SUFFIX)
--- a/hotspot/make/bsd/makefiles/top.make	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/make/bsd/makefiles/top.make	Wed Feb 22 16:52:50 2012 -0800
@@ -124,8 +124,8 @@
 	@$(UpdatePCH)
 	@$(MAKE) -f vm.make $(MFLAGS-adjusted)
 
-install: the_vm
-	@$(MAKE) -f vm.make install
+install gamma: the_vm
+	@$(MAKE) -f vm.make $@
 
 # next rules support "make foo.[ois]"
 
--- a/hotspot/make/defs.make	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/make/defs.make	Wed Feb 22 16:52:50 2012 -0800
@@ -193,6 +193,9 @@
 
 # Default jdk image if one is created for you with create_jdk
 JDK_IMAGE_DIR=$(OUTPUTDIR)/jdk-$(PLATFORM)
+ifneq ($(ALT_JDK_IMAGE_DIR),)
+  JDK_IMAGE_DIR=$(ALT_JDK_IMAGE_DIR)
+endif
 
 # The platform dependent defs.make defines platform specific variable such 
 # as ARCH, EXPORT_LIST etc. We must place the include here after BOOTDIR is defined.
--- a/hotspot/make/hotspot_version	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/make/hotspot_version	Wed Feb 22 16:52:50 2012 -0800
@@ -35,7 +35,7 @@
 
 HS_MAJOR_VER=23
 HS_MINOR_VER=0
-HS_BUILD_NUMBER=15
+HS_BUILD_NUMBER=16
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=8
--- a/hotspot/make/jprt.properties	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/make/jprt.properties	Wed Feb 22 16:52:50 2012 -0800
@@ -38,7 +38,9 @@
 
 # This tells jprt what default release we want to build
 
-jprt.tools.default.release=${jprt.submit.release}
+jprt.hotspot.default.release=jdk7
+
+jprt.tools.default.release=${jprt.submit.option.release?${jprt.submit.option.release}:${jprt.hotspot.default.release}}
 
 # Disable syncing the source after builds and tests are done.
 
@@ -52,126 +54,46 @@
 # Define the Solaris platforms we want for the various releases
 jprt.my.solaris.sparc.jdk8=solaris_sparc_5.10
 jprt.my.solaris.sparc.jdk7=solaris_sparc_5.10
-jprt.my.solaris.sparc.jdk7b107=solaris_sparc_5.10
-jprt.my.solaris.sparc.jdk7temp=solaris_sparc_5.10
-jprt.my.solaris.sparc.jdk6=solaris_sparc_5.8
-jprt.my.solaris.sparc.jdk6perf=solaris_sparc_5.8
-jprt.my.solaris.sparc.jdk6u10=solaris_sparc_5.8
-jprt.my.solaris.sparc.jdk6u14=solaris_sparc_5.8
-jprt.my.solaris.sparc.jdk6u18=solaris_sparc_5.8
-jprt.my.solaris.sparc.jdk6u20=solaris_sparc_5.8
-jprt.my.solaris.sparc.ejdk7=${jprt.my.solaris.sparc.jdk7}
-jprt.my.solaris.sparc.ejdk6=${jprt.my.solaris.sparc.jdk6}
 jprt.my.solaris.sparc=${jprt.my.solaris.sparc.${jprt.tools.default.release}}
 
 jprt.my.solaris.sparcv9.jdk8=solaris_sparcv9_5.10
 jprt.my.solaris.sparcv9.jdk7=solaris_sparcv9_5.10
-jprt.my.solaris.sparcv9.jdk7b107=solaris_sparcv9_5.10
-jprt.my.solaris.sparcv9.jdk7temp=solaris_sparcv9_5.10
-jprt.my.solaris.sparcv9.jdk6=solaris_sparcv9_5.8
-jprt.my.solaris.sparcv9.jdk6perf=solaris_sparcv9_5.8
-jprt.my.solaris.sparcv9.jdk6u10=solaris_sparcv9_5.8
-jprt.my.solaris.sparcv9.jdk6u14=solaris_sparcv9_5.8
-jprt.my.solaris.sparcv9.jdk6u18=solaris_sparcv9_5.8
-jprt.my.solaris.sparcv9.jdk6u20=solaris_sparcv9_5.8
-jprt.my.solaris.sparcv9.ejdk7=${jprt.my.solaris.sparcv9.jdk7}
-jprt.my.solaris.sparcv9.ejdk6=${jprt.my.solaris.sparcv9.jdk6}
 jprt.my.solaris.sparcv9=${jprt.my.solaris.sparcv9.${jprt.tools.default.release}}
 
 jprt.my.solaris.i586.jdk8=solaris_i586_5.10
 jprt.my.solaris.i586.jdk7=solaris_i586_5.10
-jprt.my.solaris.i586.jdk7b107=solaris_i586_5.10
-jprt.my.solaris.i586.jdk7temp=solaris_i586_5.10
-jprt.my.solaris.i586.jdk6=solaris_i586_5.8
-jprt.my.solaris.i586.jdk6perf=solaris_i586_5.8
-jprt.my.solaris.i586.jdk6u10=solaris_i586_5.8
-jprt.my.solaris.i586.jdk6u14=solaris_i586_5.8
-jprt.my.solaris.i586.jdk6u18=solaris_i586_5.8
-jprt.my.solaris.i586.jdk6u20=solaris_i586_5.8
-jprt.my.solaris.i586.ejdk7=${jprt.my.solaris.i586.jdk7}
-jprt.my.solaris.i586.ejdk6=${jprt.my.solaris.i586.jdk6}
 jprt.my.solaris.i586=${jprt.my.solaris.i586.${jprt.tools.default.release}}
 
 jprt.my.solaris.x64.jdk8=solaris_x64_5.10
 jprt.my.solaris.x64.jdk7=solaris_x64_5.10
-jprt.my.solaris.x64.jdk7b107=solaris_x64_5.10
-jprt.my.solaris.x64.jdk7temp=solaris_x64_5.10
-jprt.my.solaris.x64.jdk6=solaris_x64_5.10
-jprt.my.solaris.x64.jdk6perf=solaris_x64_5.10
-jprt.my.solaris.x64.jdk6u10=solaris_x64_5.10
-jprt.my.solaris.x64.jdk6u14=solaris_x64_5.10
-jprt.my.solaris.x64.jdk6u18=solaris_x64_5.10
-jprt.my.solaris.x64.jdk6u20=solaris_x64_5.10
-jprt.my.solaris.x64.ejdk7=${jprt.my.solaris.x64.jdk7}
-jprt.my.solaris.x64.ejdk6=${jprt.my.solaris.x64.jdk6}
 jprt.my.solaris.x64=${jprt.my.solaris.x64.${jprt.tools.default.release}}
 
 jprt.my.linux.i586.jdk8=linux_i586_2.6
 jprt.my.linux.i586.jdk7=linux_i586_2.6
-jprt.my.linux.i586.jdk7b107=linux_i586_2.6
-jprt.my.linux.i586.jdk7temp=linux_i586_2.6
-jprt.my.linux.i586.jdk6=linux_i586_2.4
-jprt.my.linux.i586.jdk6perf=linux_i586_2.4
-jprt.my.linux.i586.jdk6u10=linux_i586_2.4
-jprt.my.linux.i586.jdk6u14=linux_i586_2.4
-jprt.my.linux.i586.jdk6u18=linux_i586_2.4
-jprt.my.linux.i586.jdk6u20=linux_i586_2.4
-jprt.my.linux.i586.ejdk7=linux_i586_2.6
-jprt.my.linux.i586.ejdk6=linux_i586_2.6
 jprt.my.linux.i586=${jprt.my.linux.i586.${jprt.tools.default.release}}
 
 jprt.my.linux.x64.jdk8=linux_x64_2.6
 jprt.my.linux.x64.jdk7=linux_x64_2.6
-jprt.my.linux.x64.jdk7b107=linux_x64_2.6
-jprt.my.linux.x64.jdk7temp=linux_x64_2.6
-jprt.my.linux.x64.jdk6=linux_x64_2.4
-jprt.my.linux.x64.jdk6perf=linux_x64_2.4
-jprt.my.linux.x64.jdk6u10=linux_x64_2.4
-jprt.my.linux.x64.jdk6u14=linux_x64_2.4
-jprt.my.linux.x64.jdk6u18=linux_x64_2.4
-jprt.my.linux.x64.jdk6u20=linux_x64_2.4
-jprt.my.linux.x64.ejdk7=${jprt.my.linux.x64.jdk7}
-jprt.my.linux.x64.ejdk6=${jprt.my.linux.x64.jdk6}
 jprt.my.linux.x64=${jprt.my.linux.x64.${jprt.tools.default.release}}
 
 jprt.my.linux.ppc.jdk8=linux_ppc_2.6
 jprt.my.linux.ppc.jdk7=linux_ppc_2.6
-jprt.my.linux.ppc.jdk7b107=linux_ppc_2.6
-jprt.my.linux.ppc.jdk7temp=linux_ppc_2.6
-jprt.my.linux.ppc.ejdk6=linux_ppc_2.6
-jprt.my.linux.ppc.ejdk7=linux_ppc_2.6
 jprt.my.linux.ppc=${jprt.my.linux.ppc.${jprt.tools.default.release}}
 
 jprt.my.linux.ppcv2.jdk8=linux_ppcv2_2.6
 jprt.my.linux.ppcv2.jdk7=linux_ppcv2_2.6
-jprt.my.linux.ppcv2.jdk7b107=linux_ppcv2_2.6
-jprt.my.linux.ppcv2.jdk7temp=linux_ppcv2_2.6
-jprt.my.linux.ppcv2.ejdk6=linux_ppcv2_2.6
-jprt.my.linux.ppcv2.ejdk7=linux_ppcv2_2.6
 jprt.my.linux.ppcv2=${jprt.my.linux.ppcv2.${jprt.tools.default.release}}
 
 jprt.my.linux.ppcsflt.jdk8=linux_ppcsflt_2.6
 jprt.my.linux.ppcsflt.jdk7=linux_ppcsflt_2.6
-jprt.my.linux.ppcsflt.jdk7b107=linux_ppcsflt_2.6
-jprt.my.linux.ppcsflt.jdk7temp=linux_ppcsflt_2.6
-jprt.my.linux.ppcsflt.ejdk6=linux_ppcsflt_2.6
-jprt.my.linux.ppcsflt.ejdk7=linux_ppcsflt_2.6
 jprt.my.linux.ppcsflt=${jprt.my.linux.ppcsflt.${jprt.tools.default.release}}
 
 jprt.my.linux.armvfp.jdk8=linux_armvfp_2.6
 jprt.my.linux.armvfp.jdk7=linux_armvfp_2.6
-jprt.my.linux.armvfp.jdk7b107=linux_armvfp_2.6
-jprt.my.linux.armvfp.jdk7temp=linux_armvfp_2.6
-jprt.my.linux.armvfp.ejdk6=linux_armvfp_2.6
-jprt.my.linux.armvfp.ejdk7=linux_armvfp_2.6
 jprt.my.linux.armvfp=${jprt.my.linux.armvfp.${jprt.tools.default.release}}
 
 jprt.my.linux.armsflt.jdk8=linux_armsflt_2.6
 jprt.my.linux.armsflt.jdk7=linux_armsflt_2.6
-jprt.my.linux.armsflt.jdk7b107=linux_armsflt_2.6
-jprt.my.linux.armsflt.jdk7temp=linux_armsflt_2.6
-jprt.my.linux.armsflt.ejdk6=linux_armsflt_2.6
-jprt.my.linux.armsflt.ejdk7=linux_armsflt_2.6
 jprt.my.linux.armsflt=${jprt.my.linux.armsflt.${jprt.tools.default.release}}
 
 jprt.my.macosx.x64.jdk8=macosx_x64_10.7
@@ -180,30 +102,10 @@
 
 jprt.my.windows.i586.jdk8=windows_i586_5.1
 jprt.my.windows.i586.jdk7=windows_i586_5.1
-jprt.my.windows.i586.jdk7b107=windows_i586_5.0
-jprt.my.windows.i586.jdk7temp=windows_i586_5.0
-jprt.my.windows.i586.jdk6=windows_i586_5.0
-jprt.my.windows.i586.jdk6perf=windows_i586_5.0
-jprt.my.windows.i586.jdk6u10=windows_i586_5.0
-jprt.my.windows.i586.jdk6u14=windows_i586_5.0
-jprt.my.windows.i586.jdk6u18=windows_i586_5.0
-jprt.my.windows.i586.jdk6u20=windows_i586_5.0
-jprt.my.windows.i586.ejdk7=${jprt.my.windows.i586.jdk7}
-jprt.my.windows.i586.ejdk6=${jprt.my.windows.i586.jdk6}
 jprt.my.windows.i586=${jprt.my.windows.i586.${jprt.tools.default.release}}
 
 jprt.my.windows.x64.jdk8=windows_x64_5.2
 jprt.my.windows.x64.jdk7=windows_x64_5.2
-jprt.my.windows.x64.jdk7b107=windows_x64_5.2
-jprt.my.windows.x64.jdk7temp=windows_x64_5.2
-jprt.my.windows.x64.jdk6=windows_x64_5.2
-jprt.my.windows.x64.jdk6perf=windows_x64_5.2
-jprt.my.windows.x64.jdk6u10=windows_x64_5.2
-jprt.my.windows.x64.jdk6u14=windows_x64_5.2
-jprt.my.windows.x64.jdk6u18=windows_x64_5.2
-jprt.my.windows.x64.jdk6u20=windows_x64_5.2
-jprt.my.windows.x64.ejdk7=${jprt.my.windows.x64.jdk7}
-jprt.my.windows.x64.ejdk6=${jprt.my.windows.x64.jdk6}
 jprt.my.windows.x64=${jprt.my.windows.x64.${jprt.tools.default.release}}
 
 # Standard list of jprt build targets for this source tree
@@ -539,16 +441,6 @@
 
 jprt.test.targets.jdk8=${jprt.test.targets.standard}
 jprt.test.targets.jdk7=${jprt.test.targets.standard}
-jprt.test.targets.jdk7temp=${jprt.test.targets.standard}
-jprt.test.targets.jdk7b105=${jprt.test.targets.standard}
-jprt.test.targets.jdk6=${jprt.test.targets.standard}
-jprt.test.targets.jdk6perf=${jprt.test.targets.standard}
-jprt.test.targets.jdk6u10=${jprt.test.targets.standard}
-jprt.test.targets.jdk6u14=${jprt.test.targets.standard}
-jprt.test.targets.jdk6u18=${jprt.test.targets.standard}
-jprt.test.targets.jdk6u20=${jprt.test.targets.standard}
-jprt.test.targets.ejdk6=${jprt.test.targets.embedded}
-jprt.test.targets.ejdk7=${jprt.test.targets.embedded}
 jprt.test.targets=${jprt.test.targets.${jprt.tools.default.release}}
 
 # The default test/Makefile targets that should be run
@@ -593,15 +485,5 @@
 
 jprt.make.rule.test.targets.jdk8=${jprt.make.rule.test.targets.standard}
 jprt.make.rule.test.targets.jdk7=${jprt.make.rule.test.targets.standard}
-jprt.make.rule.test.targets.jdk7temp=${jprt.make.rule.test.targets.standard}
-jprt.make.rule.test.targets.jdk7b107=${jprt.make.rule.test.targets.standard}
-jprt.make.rule.test.targets.jdk6=${jprt.make.rule.test.targets.standard}
-jprt.make.rule.test.targets.jdk6perf=${jprt.make.rule.test.targets.standard}
-jprt.make.rule.test.targets.jdk6u10=${jprt.make.rule.test.targets.standard}
-jprt.make.rule.test.targets.jdk6u14=${jprt.make.rule.test.targets.standard}
-jprt.make.rule.test.targets.jdk6u18=${jprt.make.rule.test.targets.standard}
-jprt.make.rule.test.targets.jdk6u20=${jprt.make.rule.test.targets.standard}
-jprt.make.rule.test.targets.ejdk6=${jprt.make.rule.test.targets.embedded}
-jprt.make.rule.test.targets.ejdk7=${jprt.make.rule.test.targets.embedded}
 jprt.make.rule.test.targets=${jprt.make.rule.test.targets.${jprt.tools.default.release}}
 
--- a/hotspot/make/linux/makefiles/saproc.make	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/make/linux/makefiles/saproc.make	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -75,6 +75,7 @@
 	fi
 	@echo Making SA debugger back-end...
 	$(QUIETLY) $(CC) -D$(BUILDARCH) -D_GNU_SOURCE                   \
+		   -D_FILE_OFFSET_BITS=64                               \
                    $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG)     \
 	           -I$(SASRCDIR)                                        \
 	           -I$(GENERATED)                                       \
--- a/hotspot/make/linux/makefiles/top.make	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/make/linux/makefiles/top.make	Wed Feb 22 16:52:50 2012 -0800
@@ -115,8 +115,8 @@
 	@$(UpdatePCH)
 	@$(MAKE) -f vm.make $(MFLAGS-adjusted)
 
-install: the_vm
-	@$(MAKE) -f vm.make install
+install gamma: the_vm
+	@$(MAKE) -f vm.make $@
 
 # next rules support "make foo.[ois]"
 
--- a/hotspot/make/solaris/makefiles/top.make	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/make/solaris/makefiles/top.make	Wed Feb 22 16:52:50 2012 -0800
@@ -107,8 +107,8 @@
 the_vm: vm_build_preliminaries $(adjust-mflags)
 	@$(MAKE) -f vm.make $(MFLAGS-adjusted)
 
-install: the_vm
-	@$(MAKE) -f vm.make install
+install gamma: the_vm
+	@$(MAKE) -f vm.make $@
 
 # next rules support "make foo.[oi]"
 
--- a/hotspot/src/cpu/sparc/vm/globals_sparc.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/cpu/sparc/vm/globals_sparc.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -56,14 +56,15 @@
 // Stack slots are 2X larger in LP64 than in the 32 bit VM.
 define_pd_global(intx, ThreadStackSize,       1024);
 define_pd_global(intx, VMThreadStackSize,     1024);
+define_pd_global(intx, StackShadowPages, 10 DEBUG_ONLY(+1));
 #else
 define_pd_global(intx, ThreadStackSize,       512);
 define_pd_global(intx, VMThreadStackSize,     512);
+define_pd_global(intx, StackShadowPages, 3 DEBUG_ONLY(+1));
 #endif
 
 define_pd_global(intx, StackYellowPages, 2);
 define_pd_global(intx, StackRedPages, 1);
-define_pd_global(intx, StackShadowPages, 3 DEBUG_ONLY(+1));
 
 define_pd_global(intx, PreInflateSpin,       40);  // Determined by running design center
 
--- a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -3431,6 +3431,9 @@
   ResourceMark rm;
   // setup code generation tools
   int pad = VerifyThread ? 512 : 0;// Extra slop space for more verify code
+  if (UseStackBanging) {
+    pad += StackShadowPages*16 + 32;
+  }
 #ifdef _LP64
   CodeBuffer buffer("deopt_blob", 2100+pad, 512);
 #else
@@ -3650,6 +3653,9 @@
   ResourceMark rm;
   // setup code generation tools
   int pad = VerifyThread ? 512 : 0;
+  if (UseStackBanging) {
+    pad += StackShadowPages*16 + 32;
+  }
 #ifdef _LP64
   CodeBuffer buffer("uncommon_trap_blob", 2700+pad, 512);
 #else
--- a/hotspot/src/cpu/x86/vm/assembler_x86.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/cpu/x86/vm/assembler_x86.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -236,6 +236,16 @@
   }
 }
 
+// Force generation of a 4 byte immediate value even if it fits into 8bit
+void Assembler::emit_arith_imm32(int op1, int op2, Register dst, int32_t imm32) {
+  assert(isByte(op1) && isByte(op2), "wrong opcode");
+  assert((op1 & 0x01) == 1, "should be 32bit operation");
+  assert((op1 & 0x02) == 0, "sign-extension bit should not be set");
+  emit_byte(op1);
+  emit_byte(op2 | encode(dst));
+  emit_long(imm32);
+}
+
 // immediate-to-memory forms
 void Assembler::emit_arith_operand(int op1, Register rm, Address adr, int32_t imm32) {
   assert((op1 & 0x01) == 1, "should be 32bit operation");
@@ -939,6 +949,7 @@
 }
 
 void Assembler::addr_nop_4() {
+  assert(UseAddressNop, "no CPU support");
   // 4 bytes: NOP DWORD PTR [EAX+0]
   emit_byte(0x0F);
   emit_byte(0x1F);
@@ -947,6 +958,7 @@
 }
 
 void Assembler::addr_nop_5() {
+  assert(UseAddressNop, "no CPU support");
   // 5 bytes: NOP DWORD PTR [EAX+EAX*0+0] 8-bits offset
   emit_byte(0x0F);
   emit_byte(0x1F);
@@ -956,6 +968,7 @@
 }
 
 void Assembler::addr_nop_7() {
+  assert(UseAddressNop, "no CPU support");
   // 7 bytes: NOP DWORD PTR [EAX+0] 32-bits offset
   emit_byte(0x0F);
   emit_byte(0x1F);
@@ -964,6 +977,7 @@
 }
 
 void Assembler::addr_nop_8() {
+  assert(UseAddressNop, "no CPU support");
   // 8 bytes: NOP DWORD PTR [EAX+EAX*0+0] 32-bits offset
   emit_byte(0x0F);
   emit_byte(0x1F);
@@ -2769,6 +2783,12 @@
   emit_arith(0x81, 0xE8, dst, imm32);
 }
 
+// Force generation of a 4 byte immediate value even if it fits into 8bit
+void Assembler::subl_imm32(Register dst, int32_t imm32) {
+  prefix(dst);
+  emit_arith_imm32(0x81, 0xE8, dst, imm32);
+}
+
 void Assembler::subl(Register dst, Address src) {
   InstructionMark im(this);
   prefix(src, dst);
@@ -4760,6 +4780,12 @@
   emit_arith(0x81, 0xE8, dst, imm32);
 }
 
+// Force generation of a 4 byte immediate value even if it fits into 8bit
+void Assembler::subq_imm32(Register dst, int32_t imm32) {
+  (void) prefixq_and_encode(dst->encoding());
+  emit_arith_imm32(0x81, 0xE8, dst, imm32);
+}
+
 void Assembler::subq(Register dst, Address src) {
   InstructionMark im(this);
   prefixq(src, dst);
@@ -5101,15 +5127,6 @@
   }
 }
 
-void MacroAssembler::fat_nop() {
-  // A 5 byte nop that is safe for patching (see patch_verified_entry)
-  emit_byte(0x26); // es:
-  emit_byte(0x2e); // cs:
-  emit_byte(0x64); // fs:
-  emit_byte(0x65); // gs:
-  emit_byte(0x90);
-}
-
 void MacroAssembler::jC2(Register tmp, Label& L) {
   // set parity bit if FPU flag C2 is set (via rax)
   save_rax(tmp);
@@ -5704,17 +5721,6 @@
   /* else */      { subq(dst, value)       ; return; }
 }
 
-void MacroAssembler::fat_nop() {
-  // A 5 byte nop that is safe for patching (see patch_verified_entry)
-  // Recommened sequence from 'Software Optimization Guide for the AMD
-  // Hammer Processor'
-  emit_byte(0x66);
-  emit_byte(0x66);
-  emit_byte(0x90);
-  emit_byte(0x66);
-  emit_byte(0x90);
-}
-
 void MacroAssembler::incrementq(Register reg, int value) {
   if (value == min_jint) { addq(reg, value); return; }
   if (value <  0) { decrementq(reg, -value); return; }
@@ -6766,6 +6772,19 @@
   mov(rbp, rsp);
 }
 
+// A 5 byte nop that is safe for patching (see patch_verified_entry)
+void MacroAssembler::fat_nop() {
+  if (UseAddressNop) {
+    addr_nop_5();
+  } else {
+    emit_byte(0x26); // es:
+    emit_byte(0x2e); // cs:
+    emit_byte(0x64); // fs:
+    emit_byte(0x65); // gs:
+    emit_byte(0x90);
+  }
+}
+
 void MacroAssembler::fcmp(Register tmp) {
   fcmp(tmp, 1, true, true);
 }
@@ -7825,6 +7844,11 @@
   LP64_ONLY(subq(dst, imm32)) NOT_LP64(subl(dst, imm32));
 }
 
+// Force generation of a 4 byte immediate value even if it fits into 8bit
+void MacroAssembler::subptr_imm32(Register dst, int32_t imm32) {
+  LP64_ONLY(subq_imm32(dst, imm32)) NOT_LP64(subl_imm32(dst, imm32));
+}
+
 void MacroAssembler::subptr(Register dst, Register src) {
   LP64_ONLY(subq(dst, src)) NOT_LP64(subl(dst, src));
 }
@@ -9292,6 +9316,80 @@
 }
 #endif // _LP64
 
+
+// C2 compiled method's prolog code.
+void MacroAssembler::verified_entry(int framesize, bool stack_bang, bool fp_mode_24b) {
+
+  // WARNING: Initial instruction MUST be 5 bytes or longer so that
+  // NativeJump::patch_verified_entry will be able to patch out the entry
+  // code safely. The push to verify stack depth is ok at 5 bytes,
+  // the frame allocation can be either 3 or 6 bytes. So if we don't do
+  // stack bang then we must use the 6 byte frame allocation even if
+  // we have no frame. :-(
+
+  assert((framesize & (StackAlignmentInBytes-1)) == 0, "frame size not aligned");
+  // Remove word for return addr
+  framesize -= wordSize;
+
+  // Calls to C2R adapters often do not accept exceptional returns.
+  // We require that their callers must bang for them.  But be careful, because
+  // some VM calls (such as call site linkage) can use several kilobytes of
+  // stack.  But the stack safety zone should account for that.
+  // See bugs 4446381, 4468289, 4497237.
+  if (stack_bang) {
+    generate_stack_overflow_check(framesize);
+
+    // We always push rbp, so that on return to interpreter rbp, will be
+    // restored correctly and we can correct the stack.
+    push(rbp);
+    // Remove word for ebp
+    framesize -= wordSize;
+
+    // Create frame
+    if (framesize) {
+      subptr(rsp, framesize);
+    }
+  } else {
+    // Create frame (force generation of a 4 byte immediate value)
+    subptr_imm32(rsp, framesize);
+
+    // Save RBP register now.
+    framesize -= wordSize;
+    movptr(Address(rsp, framesize), rbp);
+  }
+
+  if (VerifyStackAtCalls) { // Majik cookie to verify stack depth
+    framesize -= wordSize;
+    movptr(Address(rsp, framesize), (int32_t)0xbadb100d);
+  }
+
+#ifndef _LP64
+  // If method sets FPU control word do it now
+  if (fp_mode_24b) {
+    fldcw(ExternalAddress(StubRoutines::addr_fpu_cntrl_wrd_24()));
+  }
+  if (UseSSE >= 2 && VerifyFPU) {
+    verify_FPU(0, "FPU stack must be clean on entry");
+  }
+#endif
+
+#ifdef ASSERT
+  if (VerifyStackAtCalls) {
+    Label L;
+    push(rax);
+    mov(rax, rsp);
+    andptr(rax, StackAlignmentInBytes-1);
+    cmpptr(rax, StackAlignmentInBytes-wordSize);
+    pop(rax);
+    jcc(Assembler::equal, L);
+    stop("Stack is not properly aligned!");
+    bind(L);
+  }
+#endif
+
+}
+
+
 // IndexOf for constant substrings with size >= 8 chars
 // which don't need to be loaded through stack.
 void MacroAssembler::string_indexofC8(Register str1, Register str2,
--- a/hotspot/src/cpu/x86/vm/assembler_x86.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/cpu/x86/vm/assembler_x86.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -667,6 +667,8 @@
   void emit_arith_b(int op1, int op2, Register dst, int imm8);
 
   void emit_arith(int op1, int op2, Register dst, int32_t imm32);
+  // Force generation of a 4 byte immediate value even if it fits into 8bit
+  void emit_arith_imm32(int op1, int op2, Register dst, int32_t imm32);
   // only 32bit??
   void emit_arith(int op1, int op2, Register dst, jobject obj);
   void emit_arith(int op1, int op2, Register dst, Register src);
@@ -1526,6 +1528,9 @@
   void subq(Register dst, Address src);
   void subq(Register dst, Register src);
 
+  // Force generation of a 4 byte immediate value even if it fits into 8bit
+  void subl_imm32(Register dst, int32_t imm32);
+  void subq_imm32(Register dst, int32_t imm32);
 
   // Subtract Scalar Double-Precision Floating-Point Values
   void subsd(XMMRegister dst, Address src);
@@ -1763,8 +1768,8 @@
   // Alignment
   void align(int modulus);
 
-  // Misc
-  void fat_nop(); // 5 byte nop
+  // A 5 byte nop that is safe for patching (see patch_verified_entry)
+  void fat_nop();
 
   // Stack frame creation/removal
   void enter();
@@ -2275,6 +2280,8 @@
 
   void subptr(Register dst, Address src) { LP64_ONLY(subq(dst, src)) NOT_LP64(subl(dst, src)); }
   void subptr(Register dst, int32_t src);
+  // Force generation of a 4 byte immediate value even if it fits into 8bit
+  void subptr_imm32(Register dst, int32_t src);
   void subptr(Register dst, Register src);
   void subptr(Register dst, RegisterOrConstant src) {
     if (src.is_constant()) subptr(dst, (int) src.as_constant());
@@ -2566,6 +2573,9 @@
   void movl2ptr(Register dst, Address src) { LP64_ONLY(movslq(dst, src)) NOT_LP64(movl(dst, src)); }
   void movl2ptr(Register dst, Register src) { LP64_ONLY(movslq(dst, src)) NOT_LP64(if (dst != src) movl(dst, src)); }
 
+  // C2 compiled method's prolog code.
+  void verified_entry(int framesize, bool stack_bang, bool fp_mode_24b);
+
   // IndexOf strings.
   // Small strings are loaded through stack if they cross page boundary.
   void string_indexof(Register str1, Register str2,
--- a/hotspot/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -381,6 +381,16 @@
 
 
 void C1_MacroAssembler::verified_entry() {
+  if (C1Breakpoint || VerifyFPU || !UseStackBanging) {
+    // Verified Entry first instruction should be 5 bytes long for correct
+    // patching by patch_verified_entry().
+    //
+    // C1Breakpoint and VerifyFPU have one byte first instruction.
+    // Also first instruction will be one byte "push(rbp)" if stack banging
+    // code is not generated (see build_frame() above).
+    // For all these cases generate long instruction first.
+    fat_nop();
+  }
   if (C1Breakpoint)int3();
   // build frame
   verify_FPU(0, "method_entry");
--- a/hotspot/src/cpu/x86/vm/globals_x86.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/cpu/x86/vm/globals_x86.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -60,9 +60,9 @@
 #ifdef AMD64
 // Very large C++ stack frames using solaris-amd64 optimized builds
 // due to lack of optimization caused by C++ compiler bugs
-define_pd_global(intx, StackShadowPages, SOLARIS_ONLY(20) NOT_SOLARIS(6) DEBUG_ONLY(+2));
+define_pd_global(intx, StackShadowPages, NOT_WIN64(20) WIN64_ONLY(6) DEBUG_ONLY(+2));
 #else
-define_pd_global(intx, StackShadowPages, 3 DEBUG_ONLY(+5));
+define_pd_global(intx, StackShadowPages, 4 DEBUG_ONLY(+5));
 #endif // AMD64
 
 define_pd_global(intx, PreInflateSpin,           10);
--- a/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1018,41 +1018,26 @@
 void trace_method_handle_stub(const char* adaptername,
                               oop mh,
                               intptr_t* saved_regs,
-                              intptr_t* entry_sp,
-                              intptr_t* saved_sp,
-                              intptr_t* saved_bp) {
+                              intptr_t* entry_sp) {
   // called as a leaf from native code: do not block the JVM!
   bool has_mh = (strstr(adaptername, "return/") == NULL);  // return adapters don't have rcx_mh
+  const char* mh_reg_name = has_mh ? "rcx_mh" : "rcx";
+  tty->print_cr("MH %s %s="PTR_FORMAT" sp="PTR_FORMAT, adaptername, mh_reg_name, mh, entry_sp);
 
-  intptr_t* last_sp = (intptr_t*) saved_bp[frame::interpreter_frame_last_sp_offset];
-  intptr_t* base_sp = last_sp;
-  typedef MethodHandles::RicochetFrame RicochetFrame;
-  RicochetFrame* rfp = (RicochetFrame*)((address)saved_bp - RicochetFrame::sender_link_offset_in_bytes());
-  if (Universe::heap()->is_in((address) rfp->saved_args_base())) {
-    // Probably an interpreter frame.
-    base_sp = (intptr_t*) saved_bp[frame::interpreter_frame_monitor_block_top_offset];
-  }
-  intptr_t    mh_reg = (intptr_t)mh;
-  const char* mh_reg_name = "rcx_mh";
-  if (!has_mh)  mh_reg_name = "rcx";
-  tty->print_cr("MH %s %s="PTR_FORMAT" sp=("PTR_FORMAT"+"INTX_FORMAT") stack_size="INTX_FORMAT" bp="PTR_FORMAT,
-                adaptername, mh_reg_name, mh_reg,
-                (intptr_t)entry_sp, (intptr_t)(saved_sp - entry_sp), (intptr_t)(base_sp - last_sp), (intptr_t)saved_bp);
   if (Verbose) {
-    tty->print(" reg dump: ");
-    int saved_regs_count = (entry_sp-1) - saved_regs;
-    // 32 bit: rdi rsi rbp rsp; rbx rdx rcx (*) rax
-    int i;
-    for (i = 0; i <= saved_regs_count; i++) {
-      if (i > 0 && i % 4 == 0 && i != saved_regs_count) {
+    tty->print_cr("Registers:");
+    const int saved_regs_count = RegisterImpl::number_of_registers;
+    for (int i = 0; i < saved_regs_count; i++) {
+      Register r = as_Register(i);
+      // The registers are stored in reverse order on the stack (by pusha).
+      tty->print("%3s=" PTR_FORMAT, r->name(), saved_regs[((saved_regs_count - 1) - i)]);
+      if ((i + 1) % 4 == 0) {
         tty->cr();
-        tty->print("   + dump: ");
+      } else {
+        tty->print(", ");
       }
-      tty->print(" %d: "PTR_FORMAT, i, saved_regs[i]);
     }
     tty->cr();
-    if (last_sp != saved_sp && last_sp != NULL)
-      tty->print_cr("*** last_sp="PTR_FORMAT, (intptr_t)last_sp);
 
     {
      // dumping last frame with frame::describe
@@ -1102,14 +1087,7 @@
         values.describe(-1, dump_sp, "sp for #1");
       }
 
-      // mark saved_sp if seems valid
-      if (has_mh) {
-        if ((saved_sp >= dump_sp - UNREASONABLE_STACK_MOVE) && (saved_sp < dump_fp)) {
-          values.describe(-1, saved_sp, "*saved_sp");
-        }
-      }
-
-      tty->print_cr("  stack layout:");
+      tty->print_cr("Stack layout:");
       values.print(p);
     }
     if (has_mh)
@@ -1125,16 +1103,12 @@
   oopDesc* mh;
   intptr_t* saved_regs;
   intptr_t* entry_sp;
-  intptr_t* saved_sp;
-  intptr_t* saved_bp;
 };
 void trace_method_handle_stub_wrapper(MethodHandleStubArguments* args) {
   trace_method_handle_stub(args->adaptername,
                            args->mh,
                            args->saved_regs,
-                           args->entry_sp,
-                           args->saved_sp,
-                           args->saved_bp);
+                           args->entry_sp);
 }
 
 void MethodHandles::trace_method_handle(MacroAssembler* _masm, const char* adaptername) {
@@ -1157,20 +1131,18 @@
     __ fst_d(Address(rsp, 0));
   }
 
-  // incoming state:
+  // Incoming state:
   // rcx: method handle
-  // r13 or rsi: saved sp
-  // To avoid calling convention issues, build a record on the stack and pass the pointer to that instead.
-  // Note: fix the increment below if pushing more arguments
-  __ push(rbp);               // saved_bp
-  __ push(saved_last_sp_register()); // saved_sp
+  //
+  // To avoid calling convention issues, build a record on the stack
+  // and pass the pointer to that instead.
   __ push(rbp);               // entry_sp (with extra align space)
   __ push(rbx);               // pusha saved_regs
   __ push(rcx);               // mh
   __ push(rcx);               // slot for adaptername
   __ movptr(Address(rsp, 0), (intptr_t) adaptername);
   __ super_call_VM_leaf(CAST_FROM_FN_PTR(address, trace_method_handle_stub_wrapper), rsp);
-  __ increment(rsp, 6 * wordSize); // MethodHandleStubArguments
+  __ increment(rsp, sizeof(MethodHandleStubArguments));
 
   if  (UseSSE >= 2) {
     __ movdbl(xmm0, Address(rsp, 0));
--- a/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -2997,7 +2997,7 @@
     // Generate oop map
     OopMap* map = new OopMap(framesize, 0);
 
-    oop_maps->add_gc_map(__ pc() - start, map);
+    oop_maps->add_gc_map(the_pc - start, map);
 
     __ reset_last_Java_frame(true, true);
 
--- a/hotspot/src/cpu/x86/vm/vm_version_x86.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -249,13 +249,18 @@
 
   enum {
     // AMD
-    CPU_FAMILY_AMD_11H       = 17,
+    CPU_FAMILY_AMD_11H       = 0x11,
     // Intel
     CPU_FAMILY_INTEL_CORE    = 6,
-    CPU_MODEL_NEHALEM_EP     = 26,
-    CPU_MODEL_WESTMERE_EP    = 44,
-//  CPU_MODEL_IVYBRIDGE_EP   = ??, TODO - get real value
-    CPU_MODEL_SANDYBRIDGE_EP = 45
+    CPU_MODEL_NEHALEM        = 0x1e,
+    CPU_MODEL_NEHALEM_EP     = 0x1a,
+    CPU_MODEL_NEHALEM_EX     = 0x2e,
+    CPU_MODEL_WESTMERE       = 0x25,
+    CPU_MODEL_WESTMERE_EP    = 0x2c,
+    CPU_MODEL_WESTMERE_EX    = 0x2f,
+    CPU_MODEL_SANDYBRIDGE    = 0x2a,
+    CPU_MODEL_SANDYBRIDGE_EP = 0x2d,
+    CPU_MODEL_IVYBRIDGE_EP   = 0x3a
   } cpuExtendedFamily;
 
   // cpuid information block.  All info derived from executing cpuid with
@@ -325,7 +330,7 @@
     uint32_t proc_name_4, proc_name_5, proc_name_6, proc_name_7;
     uint32_t proc_name_8, proc_name_9, proc_name_10,proc_name_11;
 
-    // cpuid function 0x80000005 //AMD L1, Intel reserved
+    // cpuid function 0x80000005 // AMD L1, Intel reserved
     uint32_t     ext_cpuid5_eax; // unused currently
     uint32_t     ext_cpuid5_ebx; // reserved
     ExtCpuid5Ex  ext_cpuid5_ecx; // L1 data cache info (AMD)
@@ -547,15 +552,15 @@
   static bool is_intel_tsc_synched_at_init()  {
     if (is_intel_family_core()) {
       uint32_t ext_model = extended_cpu_model();
-      if (ext_model == CPU_MODEL_NEHALEM_EP   ||
-          ext_model == CPU_MODEL_WESTMERE_EP  ||
-// TODO   ext_model == CPU_MODEL_IVYBRIDGE_EP ||
-          ext_model == CPU_MODEL_SANDYBRIDGE_EP) {
-        // 2-socket invtsc support. EX versions with 4 sockets are not
-        // guaranteed to synchronize tscs at initialization via a double
-        // handshake. The tscs can be explicitly set in software.  Code
-        // that uses tsc values must be prepared for them to arbitrarily
-        // jump backward or forward.
+      if (ext_model == CPU_MODEL_NEHALEM_EP     ||
+          ext_model == CPU_MODEL_WESTMERE_EP    ||
+          ext_model == CPU_MODEL_SANDYBRIDGE_EP ||
+          ext_model == CPU_MODEL_IVYBRIDGE_EP) {
+        // <= 2-socket invariant tsc support. EX versions are usually used
+        // in > 2-socket systems and likely don't synchronize tscs at
+        // initialization.
+        // Code that uses tsc values must be prepared for them to arbitrarily
+        // jump forward or backward.
         return true;
       }
     }
--- a/hotspot/src/cpu/x86/vm/x86.ad	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/cpu/x86/vm/x86.ad	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -37,10 +37,87 @@
   static address double_signmask() { return (address)double_signmask_pool; }
   static address double_signflip() { return (address)double_signflip_pool; }
 #endif
+
+#ifndef PRODUCT
+  void MachNopNode::format(PhaseRegAlloc*, outputStream* st) const {
+    st->print("nop \t# %d bytes pad for loops and calls", _count);
+  }
+#endif
+
+  void MachNopNode::emit(CodeBuffer &cbuf, PhaseRegAlloc*) const {
+    MacroAssembler _masm(&cbuf);
+    __ nop(_count);
+  }
+
+  uint MachNopNode::size(PhaseRegAlloc*) const {
+    return _count;
+  }
+
+#ifndef PRODUCT
+  void MachBreakpointNode::format(PhaseRegAlloc*, outputStream* st) const {
+    st->print("# breakpoint");
+  }
+#endif
+
+  void MachBreakpointNode::emit(CodeBuffer &cbuf, PhaseRegAlloc* ra_) const {
+    MacroAssembler _masm(&cbuf);
+    __ int3();
+  }
+
+  uint MachBreakpointNode::size(PhaseRegAlloc* ra_) const {
+    return MachNode::size(ra_);
+  }
+
+%}
+
+encode %{
+
+  enc_class preserve_SP %{
+    debug_only(int off0 = cbuf.insts_size());
+    MacroAssembler _masm(&cbuf);
+    // RBP is preserved across all calls, even compiled calls.
+    // Use it to preserve RSP in places where the callee might change the SP.
+    __ movptr(rbp_mh_SP_save, rsp);
+    debug_only(int off1 = cbuf.insts_size());
+    assert(off1 - off0 == preserve_SP_size(), "correct size prediction");
+  %}
+
+  enc_class restore_SP %{
+    MacroAssembler _masm(&cbuf);
+    __ movptr(rsp, rbp_mh_SP_save);
+  %}
+
+  enc_class call_epilog %{
+    if (VerifyStackAtCalls) {
+      // Check that stack depth is unchanged: find majik cookie on stack
+      int framesize = ra_->reg2offset_unchecked(OptoReg::add(ra_->_matcher._old_SP, -3*VMRegImpl::slots_per_word));
+      MacroAssembler _masm(&cbuf);
+      Label L;
+      __ cmpptr(Address(rsp, framesize), (int32_t)0xbadb100d);
+      __ jccb(Assembler::equal, L);
+      // Die if stack mismatch
+      __ int3();
+      __ bind(L);
+    }
+  %}
+
 %}
 
 // INSTRUCTIONS -- Platform independent definitions (same for 32- and 64-bit)
 
+// ============================================================================
+
+instruct ShouldNotReachHere() %{
+  match(Halt);
+  format %{ "int3\t# ShouldNotReachHere" %}
+  ins_encode %{
+    __ int3();
+  %}
+  ins_pipe(pipe_slow);
+%}
+
+// ============================================================================
+
 instruct addF_reg(regF dst, regF src) %{
   predicate((UseSSE>=1) && (UseAVX == 0));
   match(Set dst (AddF dst src));
--- a/hotspot/src/cpu/x86/vm/x86_32.ad	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/cpu/x86/vm/x86_32.ad	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -341,12 +341,6 @@
   return round_to(current_offset, alignment_required()) - current_offset;
 }
 
-#ifndef PRODUCT
-void MachBreakpointNode::format( PhaseRegAlloc *, outputStream* st ) const {
-  st->print("INT3");
-}
-#endif
-
 // EMIT_RM()
 void emit_rm(CodeBuffer &cbuf, int f1, int f2, int f3) {
   unsigned char c = (unsigned char)((f1 << 6) | (f2 << 3) | f3);
@@ -550,118 +544,66 @@
 
 //=============================================================================
 #ifndef PRODUCT
-void MachPrologNode::format( PhaseRegAlloc *ra_, outputStream* st ) const {
+void MachPrologNode::format(PhaseRegAlloc* ra_, outputStream* st) const {
   Compile* C = ra_->C;
-  if( C->in_24_bit_fp_mode() ) {
-    st->print("FLDCW  24 bit fpu control word");
-    st->print_cr(""); st->print("\t");
-  }
 
   int framesize = C->frame_slots() << LogBytesPerInt;
   assert((framesize & (StackAlignmentInBytes-1)) == 0, "frame size not aligned");
-  // Remove two words for return addr and rbp,
-  framesize -= 2*wordSize;
-
-  // Calls to C2R adapters often do not accept exceptional returns.
-  // We require that their callers must bang for them.  But be careful, because
-  // some VM calls (such as call site linkage) can use several kilobytes of
-  // stack.  But the stack safety zone should account for that.
-  // See bugs 4446381, 4468289, 4497237.
+  // Remove wordSize for return addr which is already pushed.
+  framesize -= wordSize;
+
   if (C->need_stack_bang(framesize)) {
-    st->print_cr("# stack bang"); st->print("\t");
-  }
-  st->print_cr("PUSHL  EBP"); st->print("\t");
-
-  if( VerifyStackAtCalls ) { // Majik cookie to verify stack depth
-    st->print("PUSH   0xBADB100D\t# Majik cookie for stack depth check");
-    st->print_cr(""); st->print("\t");
     framesize -= wordSize;
-  }
-
-  if ((C->in_24_bit_fp_mode() || VerifyStackAtCalls ) && framesize < 128 ) {
+    st->print("# stack bang");
+    st->print("\n\t");
+    st->print("PUSH   EBP\t# Save EBP");
     if (framesize) {
-      st->print("SUB    ESP,%d\t# Create frame",framesize);
+      st->print("\n\t");
+      st->print("SUB    ESP, #%d\t# Create frame",framesize);
     }
   } else {
-    st->print("SUB    ESP,%d\t# Create frame",framesize);
+    st->print("SUB    ESP, #%d\t# Create frame",framesize);
+    st->print("\n\t");
+    framesize -= wordSize;
+    st->print("MOV    [ESP + #%d], EBP\t# Save EBP",framesize);
+  }
+
+  if (VerifyStackAtCalls) {
+    st->print("\n\t");
+    framesize -= wordSize;
+    st->print("MOV    [ESP + #%d], 0xBADB100D\t# Majik cookie for stack depth check",framesize);
   }
+
+  if( C->in_24_bit_fp_mode() ) {
+    st->print("\n\t");
+    st->print("FLDCW  \t# load 24 bit fpu control word");
+  }
+  if (UseSSE >= 2 && VerifyFPU) {
+    st->print("\n\t");
+    st->print("# verify FPU stack (must be clean on entry)");
+  }
+
+#ifdef ASSERT
+  if (VerifyStackAtCalls) {
+    st->print("\n\t");
+    st->print("# stack alignment check");
+  }
+#endif
+  st->cr();
 }
 #endif
 
 
 void MachPrologNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
   Compile* C = ra_->C;
-
-  if (UseSSE >= 2 && VerifyFPU) {
-    MacroAssembler masm(&cbuf);
-    masm.verify_FPU(0, "FPU stack must be clean on entry");
-  }
-
-  // WARNING: Initial instruction MUST be 5 bytes or longer so that
-  // NativeJump::patch_verified_entry will be able to patch out the entry
-  // code safely. The fldcw is ok at 6 bytes, the push to verify stack
-  // depth is ok at 5 bytes, the frame allocation can be either 3 or
-  // 6 bytes. So if we don't do the fldcw or the push then we must
-  // use the 6 byte frame allocation even if we have no frame. :-(
-  // If method sets FPU control word do it now
-  if( C->in_24_bit_fp_mode() ) {
-    MacroAssembler masm(&cbuf);
-    masm.fldcw(ExternalAddress(StubRoutines::addr_fpu_cntrl_wrd_24()));
-  }
+  MacroAssembler _masm(&cbuf);
 
   int framesize = C->frame_slots() << LogBytesPerInt;
-  assert((framesize & (StackAlignmentInBytes-1)) == 0, "frame size not aligned");
-  // Remove two words for return addr and rbp,
-  framesize -= 2*wordSize;
-
-  // Calls to C2R adapters often do not accept exceptional returns.
-  // We require that their callers must bang for them.  But be careful, because
-  // some VM calls (such as call site linkage) can use several kilobytes of
-  // stack.  But the stack safety zone should account for that.
-  // See bugs 4446381, 4468289, 4497237.
-  if (C->need_stack_bang(framesize)) {
-    MacroAssembler masm(&cbuf);
-    masm.generate_stack_overflow_check(framesize);
-  }
-
-  // We always push rbp, so that on return to interpreter rbp, will be
-  // restored correctly and we can correct the stack.
-  emit_opcode(cbuf, 0x50 | EBP_enc);
-
-  if( VerifyStackAtCalls ) { // Majik cookie to verify stack depth
-    emit_opcode(cbuf, 0x68); // push 0xbadb100d
-    emit_d32(cbuf, 0xbadb100d);
-    framesize -= wordSize;
-  }
-
-  if ((C->in_24_bit_fp_mode() || VerifyStackAtCalls ) && framesize < 128 ) {
-    if (framesize) {
-      emit_opcode(cbuf, 0x83);   // sub  SP,#framesize
-      emit_rm(cbuf, 0x3, 0x05, ESP_enc);
-      emit_d8(cbuf, framesize);
-    }
-  } else {
-    emit_opcode(cbuf, 0x81);   // sub  SP,#framesize
-    emit_rm(cbuf, 0x3, 0x05, ESP_enc);
-    emit_d32(cbuf, framesize);
-  }
+
+  __ verified_entry(framesize, C->need_stack_bang(framesize), C->in_24_bit_fp_mode());
+
   C->set_frame_complete(cbuf.insts_size());
 
-#ifdef ASSERT
-  if (VerifyStackAtCalls) {
-    Label L;
-    MacroAssembler masm(&cbuf);
-    masm.push(rax);
-    masm.mov(rax, rsp);
-    masm.andptr(rax, StackAlignmentInBytes-1);
-    masm.cmpptr(rax, StackAlignmentInBytes-wordSize);
-    masm.pop(rax);
-    masm.jcc(Assembler::equal, L);
-    masm.stop("Stack is not properly aligned!");
-    masm.bind(L);
-  }
-#endif
-
   if (C->has_mach_constant_base_node()) {
     // NOTE: We set the table base offset here because users might be
     // emitted before MachConstantBaseNode.
@@ -1169,7 +1111,7 @@
 }
 
 #ifndef PRODUCT
-void MachSpillCopyNode::format( PhaseRegAlloc *ra_, outputStream* st ) const {
+void MachSpillCopyNode::format(PhaseRegAlloc *ra_, outputStream* st) const {
   implementation( NULL, ra_, false, st );
 }
 #endif
@@ -1182,22 +1124,6 @@
   return implementation( NULL, ra_, true, NULL );
 }
 
-//=============================================================================
-#ifndef PRODUCT
-void MachNopNode::format( PhaseRegAlloc *, outputStream* st ) const {
-  st->print("NOP \t# %d bytes pad for loops and calls", _count);
-}
-#endif
-
-void MachNopNode::emit(CodeBuffer &cbuf, PhaseRegAlloc * ) const {
-  MacroAssembler _masm(&cbuf);
-  __ nop(_count);
-}
-
-uint MachNopNode::size(PhaseRegAlloc *) const {
-  return _count;
-}
-
 
 //=============================================================================
 #ifndef PRODUCT
@@ -1883,21 +1809,6 @@
     }
   %}
 
-  enc_class preserve_SP %{
-    debug_only(int off0 = cbuf.insts_size());
-    MacroAssembler _masm(&cbuf);
-    // RBP is preserved across all calls, even compiled calls.
-    // Use it to preserve RSP in places where the callee might change the SP.
-    __ movptr(rbp_mh_SP_save, rsp);
-    debug_only(int off1 = cbuf.insts_size());
-    assert(off1 - off0 == preserve_SP_size(), "correct size prediction");
-  %}
-
-  enc_class restore_SP %{
-    MacroAssembler _masm(&cbuf);
-    __ movptr(rsp, rbp_mh_SP_save);
-  %}
-
   enc_class Java_Static_Call (method meth) %{    // JAVA STATIC CALL
     // CALL to fixup routine.  Fixup routine uses ScopeDesc info to determine
     // who we intended to call.
@@ -3846,9 +3757,9 @@
   // Ret Addr is on stack in slot 0 if no locks or verification or alignment.
   // Otherwise, it is above the locks and verification slot and alignment word
   return_addr(STACK - 1 +
-              round_to(1+VerifyStackAtCalls+
-              Compile::current()->fixed_slots(),
-              (StackAlignmentInBytes/wordSize)));
+              round_to((Compile::current()->in_preserve_stack_slots() +
+                        Compile::current()->fixed_slots()),
+                       stack_alignment_in_slots()));
 
   // Body of function which returns an integer array locating
   // arguments either in registers or in stack slots.  Passed an array
@@ -13476,6 +13387,25 @@
   ins_pipe( ialu_reg_mem );
 %}
 
+
+// ============================================================================
+// This name is KNOWN by the ADLC and cannot be changed.
+// The ADLC forces a 'TypeRawPtr::BOTTOM' output type
+// for this guy.
+instruct tlsLoadP(eRegP dst, eFlagsReg cr) %{
+  match(Set dst (ThreadLocal));
+  effect(DEF dst, KILL cr);
+
+  format %{ "MOV    $dst, Thread::current()" %}
+  ins_encode %{
+    Register dstReg = as_Register($dst$$reg);
+    __ get_thread(dstReg);
+  %}
+  ins_pipe( ialu_reg_fat );
+%}
+
+
+
 //----------PEEPHOLE RULES-----------------------------------------------------
 // These must follow all instruction definitions as they use the names
 // defined in the instructions definitions.
--- a/hotspot/src/cpu/x86/vm/x86_64.ad	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/cpu/x86/vm/x86_64.ad	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -610,13 +610,6 @@
   return round_to(current_offset, alignment_required()) - current_offset;
 }
 
-#ifndef PRODUCT
-void MachBreakpointNode::format(PhaseRegAlloc*, outputStream* st) const
-{
-  st->print("INT3");
-}
-#endif
-
 // EMIT_RM()
 void emit_rm(CodeBuffer &cbuf, int f1, int f2, int f3) {
   unsigned char c = (unsigned char) ((f1 << 6) | (f2 << 3) | f3);
@@ -853,121 +846,53 @@
 
 //=============================================================================
 #ifndef PRODUCT
-void MachPrologNode::format(PhaseRegAlloc* ra_, outputStream* st) const
-{
+void MachPrologNode::format(PhaseRegAlloc* ra_, outputStream* st) const {
   Compile* C = ra_->C;
 
   int framesize = C->frame_slots() << LogBytesPerInt;
   assert((framesize & (StackAlignmentInBytes-1)) == 0, "frame size not aligned");
-  // Remove wordSize for return adr already pushed
-  // and another for the RBP we are going to save
-  framesize -= 2*wordSize;
-  bool need_nop = true;
-
-  // Calls to C2R adapters often do not accept exceptional returns.
-  // We require that their callers must bang for them.  But be
-  // careful, because some VM calls (such as call site linkage) can
-  // use several kilobytes of stack.  But the stack safety zone should
-  // account for that.  See bugs 4446381, 4468289, 4497237.
+  // Remove wordSize for return addr which is already pushed.
+  framesize -= wordSize;
+
   if (C->need_stack_bang(framesize)) {
-    st->print_cr("# stack bang"); st->print("\t");
-    need_nop = false;
+    framesize -= wordSize;
+    st->print("# stack bang");
+    st->print("\n\t");
+    st->print("pushq   rbp\t# Save rbp");
+    if (framesize) {
+      st->print("\n\t");
+      st->print("subq    rsp, #%d\t# Create frame",framesize);
+    }
+  } else {
+    st->print("subq    rsp, #%d\t# Create frame",framesize);
+    st->print("\n\t");
+    framesize -= wordSize;
+    st->print("movq    [rsp + #%d], rbp\t# Save rbp",framesize);
   }
-  st->print_cr("pushq   rbp"); st->print("\t");
 
   if (VerifyStackAtCalls) {
-    // Majik cookie to verify stack depth
-    st->print_cr("pushq   0xffffffffbadb100d"
-                  "\t# Majik cookie for stack depth check");
-    st->print("\t");
-    framesize -= wordSize; // Remove 2 for cookie
-    need_nop = false;
+    st->print("\n\t");
+    framesize -= wordSize;
+    st->print("movq    [rsp + #%d], 0xbadb100d\t# Majik cookie for stack depth check",framesize);
+#ifdef ASSERT
+    st->print("\n\t");
+    st->print("# stack alignment check");
+#endif
   }
-
-  if (framesize) {
-    st->print("subq    rsp, #%d\t# Create frame", framesize);
-    if (framesize < 0x80 && need_nop) {
-      st->print("\n\tnop\t# nop for patch_verified_entry");
-    }
-  }
+  st->cr();
 }
 #endif
 
-void MachPrologNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const
-{
+void MachPrologNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
   Compile* C = ra_->C;
-
-  // WARNING: Initial instruction MUST be 5 bytes or longer so that
-  // NativeJump::patch_verified_entry will be able to patch out the entry
-  // code safely. The fldcw is ok at 6 bytes, the push to verify stack
-  // depth is ok at 5 bytes, the frame allocation can be either 3 or
-  // 6 bytes. So if we don't do the fldcw or the push then we must
-  // use the 6 byte frame allocation even if we have no frame. :-(
-  // If method sets FPU control word do it now
+  MacroAssembler _masm(&cbuf);
 
   int framesize = C->frame_slots() << LogBytesPerInt;
-  assert((framesize & (StackAlignmentInBytes-1)) == 0, "frame size not aligned");
-  // Remove wordSize for return adr already pushed
-  // and another for the RBP we are going to save
-  framesize -= 2*wordSize;
-  bool need_nop = true;
-
-  // Calls to C2R adapters often do not accept exceptional returns.
-  // We require that their callers must bang for them.  But be
-  // careful, because some VM calls (such as call site linkage) can
-  // use several kilobytes of stack.  But the stack safety zone should
-  // account for that.  See bugs 4446381, 4468289, 4497237.
-  if (C->need_stack_bang(framesize)) {
-    MacroAssembler masm(&cbuf);
-    masm.generate_stack_overflow_check(framesize);
-    need_nop = false;
-  }
-
-  // We always push rbp so that on return to interpreter rbp will be
-  // restored correctly and we can correct the stack.
-  emit_opcode(cbuf, 0x50 | RBP_enc);
-
-  if (VerifyStackAtCalls) {
-    // Majik cookie to verify stack depth
-    emit_opcode(cbuf, 0x68); // pushq (sign-extended) 0xbadb100d
-    emit_d32(cbuf, 0xbadb100d);
-    framesize -= wordSize; // Remove 2 for cookie
-    need_nop = false;
-  }
-
-  if (framesize) {
-    emit_opcode(cbuf, Assembler::REX_W);
-    if (framesize < 0x80) {
-      emit_opcode(cbuf, 0x83);   // sub  SP,#framesize
-      emit_rm(cbuf, 0x3, 0x05, RSP_enc);
-      emit_d8(cbuf, framesize);
-      if (need_nop) {
-        emit_opcode(cbuf, 0x90); // nop
-      }
-    } else {
-      emit_opcode(cbuf, 0x81);   // sub  SP,#framesize
-      emit_rm(cbuf, 0x3, 0x05, RSP_enc);
-      emit_d32(cbuf, framesize);
-    }
-  }
+
+  __ verified_entry(framesize, C->need_stack_bang(framesize), false);
 
   C->set_frame_complete(cbuf.insts_size());
 
-#ifdef ASSERT
-  if (VerifyStackAtCalls) {
-    Label L;
-    MacroAssembler masm(&cbuf);
-    masm.push(rax);
-    masm.mov(rax, rsp);
-    masm.andptr(rax, StackAlignmentInBytes-1);
-    masm.cmpptr(rax, StackAlignmentInBytes-wordSize);
-    masm.pop(rax);
-    masm.jcc(Assembler::equal, L);
-    masm.stop("Stack is not properly aligned!");
-    masm.bind(L);
-  }
-#endif
-
   if (C->has_mach_constant_base_node()) {
     // NOTE: We set the table base offset here because users might be
     // emitted before MachConstantBaseNode.
@@ -1598,26 +1523,6 @@
 
 //=============================================================================
 #ifndef PRODUCT
-void MachNopNode::format(PhaseRegAlloc*, outputStream* st) const
-{
-  st->print("nop \t# %d bytes pad for loops and calls", _count);
-}
-#endif
-
-void MachNopNode::emit(CodeBuffer &cbuf, PhaseRegAlloc*) const
-{
-  MacroAssembler _masm(&cbuf);
-  __ nop(_count);
-}
-
-uint MachNopNode::size(PhaseRegAlloc*) const
-{
-  return _count;
-}
-
-
-//=============================================================================
-#ifndef PRODUCT
 void BoxLockNode::format(PhaseRegAlloc* ra_, outputStream* st) const
 {
   int offset = ra_->reg2offset(in_RegMask(0).find_first_elem());
@@ -2323,21 +2228,6 @@
                    RELOC_DISP32);
   %}
 
-  enc_class preserve_SP %{
-    debug_only(int off0 = cbuf.insts_size());
-    MacroAssembler _masm(&cbuf);
-    // RBP is preserved across all calls, even compiled calls.
-    // Use it to preserve RSP in places where the callee might change the SP.
-    __ movptr(rbp_mh_SP_save, rsp);
-    debug_only(int off1 = cbuf.insts_size());
-    assert(off1 - off0 == preserve_SP_size(), "correct size prediction");
-  %}
-
-  enc_class restore_SP %{
-    MacroAssembler _masm(&cbuf);
-    __ movptr(rsp, rbp_mh_SP_save);
-  %}
-
   enc_class Java_Static_Call(method meth)
   %{
     // JAVA STATIC CALL
@@ -3276,9 +3166,9 @@
   // Ret Addr is on stack in slot 0 if no locks or verification or alignment.
   // Otherwise, it is above the locks and verification slot and alignment word
   return_addr(STACK - 2 +
-              round_to(2 + 2 * VerifyStackAtCalls +
-                       Compile::current()->fixed_slots(),
-                       WordsPerLong * 2));
+              round_to((Compile::current()->in_preserve_stack_slots() +
+                        Compile::current()->fixed_slots()),
+                       stack_alignment_in_slots()));
 
   // Body of function which returns an integer array locating
   // arguments either in registers or in stack slots.  Passed an array
@@ -11736,6 +11626,21 @@
 %}
 
 
+// ============================================================================
+// This name is KNOWN by the ADLC and cannot be changed.
+// The ADLC forces a 'TypeRawPtr::BOTTOM' output type
+// for this guy.
+instruct tlsLoadP(r15_RegP dst) %{
+  match(Set dst (ThreadLocal));
+  effect(DEF dst);
+
+  size(0);
+  format %{ "# TLS is in R15" %}
+  ins_encode( /*empty encoding*/ );
+  ins_pipe(ialu_reg_reg);
+%}
+
+
 //----------PEEPHOLE RULES-----------------------------------------------------
 // These must follow all instruction definitions as they use the names
 // defined in the instructions definitions.
--- a/hotspot/src/os/bsd/vm/decoder_machO.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/os/bsd/vm/decoder_machO.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,8 +29,9 @@
 
 #include "utilities/decoder.hpp"
 
-// Just a placehold for now
-class MachODecoder: public NullDecoder {
+// Just a placehold for now, a real implementation should derive
+// from AbstractDecoder
+class MachODecoder : public NullDecoder {
 public:
   MachODecoder() { }
   ~MachODecoder() { }
--- a/hotspot/src/os/windows/vm/decoder_windows.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/os/windows/vm/decoder_windows.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -36,7 +36,7 @@
 typedef BOOL  (WINAPI *pfn_SymGetSymFromAddr64)(HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64);
 typedef DWORD (WINAPI *pfn_UndecorateSymbolName)(const char*, char*, DWORD, DWORD);
 
-class WindowsDecoder: public NullDecoder {
+class WindowsDecoder : public AbstractDecoder {
 
 public:
   WindowsDecoder();
--- a/hotspot/src/os_cpu/bsd_x86/vm/bsd_x86_32.ad	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/os_cpu/bsd_x86/vm/bsd_x86_32.ad	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -24,137 +24,3 @@
 
 // X86 Bsd Architecture Description File
 
-//----------OS-DEPENDENT ENCODING BLOCK-----------------------------------------------------
-// This block specifies the encoding classes used by the compiler to output
-// byte streams.  Encoding classes generate functions which are called by
-// Machine Instruction Nodes in order to generate the bit encoding of the
-// instruction.  Operands specify their base encoding interface with the
-// interface keyword.  There are currently supported four interfaces,
-// REG_INTER, CONST_INTER, MEMORY_INTER, & COND_INTER.  REG_INTER causes an
-// operand to generate a function which returns its register number when
-// queried.   CONST_INTER causes an operand to generate a function which
-// returns the value of the constant when queried.  MEMORY_INTER causes an
-// operand to generate four functions which return the Base Register, the
-// Index Register, the Scale Value, and the Offset Value of the operand when
-// queried.  COND_INTER causes an operand to generate six functions which
-// return the encoding code (ie - encoding bits for the instruction)
-// associated with each basic boolean condition for a conditional instruction.
-// Instructions specify two basic values for encoding.  They use the
-// ins_encode keyword to specify their encoding class (which must be one of
-// the class names specified in the encoding block), and they use the
-// opcode keyword to specify, in order, their primary, secondary, and
-// tertiary opcode.  Only the opcode sections which a particular instruction
-// needs for encoding need to be specified.
-encode %{
-  // Build emit functions for each basic byte or larger field in the intel
-  // encoding scheme (opcode, rm, sib, immediate), and call them from C++
-  // code in the enc_class source block.  Emit functions will live in the
-  // main source block for now.  In future, we can generalize this by
-  // adding a syntax that specifies the sizes of fields in an order,
-  // so that the adlc can build the emit functions automagically
-
-  enc_class bsd_tlsencode (eRegP dst) %{
-    Register dstReg = as_Register($dst$$reg);
-    MacroAssembler* masm = new MacroAssembler(&cbuf);
-      masm->get_thread(dstReg);
-  %}
-
-  enc_class bsd_breakpoint  %{
-    MacroAssembler* masm = new MacroAssembler(&cbuf);
-    masm->call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
-  %}
-
-  enc_class call_epilog %{
-    if( VerifyStackAtCalls ) {
-      // Check that stack depth is unchanged: find majik cookie on stack
-      int framesize = ra_->reg2offset_unchecked(OptoReg::add(ra_->_matcher._old_SP,-3*VMRegImpl::slots_per_word));
-      if(framesize >= 128) {
-        emit_opcode(cbuf, 0x81); // cmp [esp+0],0xbadb1ood
-        emit_d8(cbuf,0xBC);
-        emit_d8(cbuf,0x24);
-        emit_d32(cbuf,framesize); // Find majik cookie from ESP
-        emit_d32(cbuf, 0xbadb100d);
-      }
-      else {
-        emit_opcode(cbuf, 0x81); // cmp [esp+0],0xbadb1ood
-        emit_d8(cbuf,0x7C);
-        emit_d8(cbuf,0x24);
-        emit_d8(cbuf,framesize); // Find majik cookie from ESP
-        emit_d32(cbuf, 0xbadb100d);
-      }
-      // jmp EQ around INT3
-      // QQQ TODO
-      const int jump_around = 5; // size of call to breakpoint, 1 for CC
-      emit_opcode(cbuf,0x74);
-      emit_d8(cbuf, jump_around);
-      // QQQ temporary
-      emit_break(cbuf);
-      // Die if stack mismatch
-      // emit_opcode(cbuf,0xCC);
-    }
-  %}
-
-%}
-
-// INSTRUCTIONS -- Platform dependent
-
-//----------OS and Locking Instructions----------------------------------------
-
-// This name is KNOWN by the ADLC and cannot be changed.
-// The ADLC forces a 'TypeRawPtr::BOTTOM' output type
-// for this guy.
-instruct tlsLoadP(eRegP dst, eFlagsReg cr) %{
-  match(Set dst (ThreadLocal));
-  effect(DEF dst, KILL cr);
-
-  format %{ "MOV    $dst, Thread::current()" %}
-  ins_encode( bsd_tlsencode(dst) );
-  ins_pipe( ialu_reg_fat );
-%}
-
-instruct TLS(eRegP dst) %{
-  match(Set dst (ThreadLocal));
-
-  expand %{
-    tlsLoadP(dst);
-  %}
-%}
-
-// Die now
-instruct ShouldNotReachHere( )
-%{
-  match(Halt);
-
-  // Use the following format syntax
-  format %{ "INT3   ; ShouldNotReachHere" %}
-  // QQQ TODO for now call breakpoint
-  // opcode(0xCC);
-  // ins_encode(Opc);
-  ins_encode(bsd_breakpoint);
-  ins_pipe( pipe_slow );
-%}
-
-
-
-// Platform dependent source
-
-source %{
-
-// emit an interrupt that is caught by the debugger
-void emit_break(CodeBuffer &cbuf) {
-
-  // Debugger doesn't really catch this but best we can do so far QQQ
-  MacroAssembler* masm = new MacroAssembler(&cbuf);
-  masm->call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
-}
-
-void MachBreakpointNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
-  emit_break(cbuf);
-}
-
-
-uint MachBreakpointNode::size(PhaseRegAlloc *ra_) const {
-  return 5;
-}
-
-%}
--- a/hotspot/src/os_cpu/bsd_x86/vm/bsd_x86_64.ad	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/os_cpu/bsd_x86/vm/bsd_x86_64.ad	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -55,8 +55,7 @@
   // adding a syntax that specifies the sizes of fields in an order,
   // so that the adlc can build the emit functions automagically
 
-  enc_class Java_To_Runtime(method meth)
-  %{
+  enc_class Java_To_Runtime(method meth) %{
     // No relocation needed
 
     // movq r10, <meth>
@@ -70,104 +69,15 @@
     emit_opcode(cbuf, 0xD0 | (R10_enc - 8));
   %}
 
-  enc_class bsd_breakpoint
-  %{
-    MacroAssembler* masm = new MacroAssembler(&cbuf);
-    masm->call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
-  %}
-
-  enc_class call_epilog
-  %{
-    if (VerifyStackAtCalls) {
-      // Check that stack depth is unchanged: find majik cookie on stack
-      int framesize =
-        ra_->reg2offset_unchecked(OptoReg::add(ra_->_matcher._old_SP, -3*VMRegImpl::slots_per_word));
-      if (framesize) {
-        if (framesize < 0x80) {
-          emit_opcode(cbuf, Assembler::REX_W);
-          emit_opcode(cbuf, 0x81); // cmpq [rsp+0],0xbadb1ood
-          emit_d8(cbuf, 0x7C);
-          emit_d8(cbuf, 0x24);
-          emit_d8(cbuf, framesize); // Find majik cookie from ESP
-          emit_d32(cbuf, 0xbadb100d);
-        } else {
-          emit_opcode(cbuf, Assembler::REX_W);
-          emit_opcode(cbuf, 0x81); // cmpq [rsp+0],0xbadb1ood
-          emit_d8(cbuf, 0xBC);
-          emit_d8(cbuf, 0x24);
-          emit_d32(cbuf, framesize); // Find majik cookie from ESP
-          emit_d32(cbuf, 0xbadb100d);
-        }
-      }
-      // jmp EQ around INT3
-      // QQQ TODO
-      const int jump_around = 5; // size of call to breakpoint, 1 for CC
-      emit_opcode(cbuf, 0x74);
-      emit_d8(cbuf, jump_around);
-      // QQQ temporary
-      emit_break(cbuf);
-      // Die if stack mismatch
-      // emit_opcode(cbuf,0xCC);
-    }
-  %}
-
-%}
-
-// INSTRUCTIONS -- Platform dependent
-
-//----------OS and Locking Instructions----------------------------------------
-
-// This name is KNOWN by the ADLC and cannot be changed.
-// The ADLC forces a 'TypeRawPtr::BOTTOM' output type
-// for this guy.
-instruct tlsLoadP(r15_RegP dst)
-%{
-  match(Set dst (ThreadLocal));
-  effect(DEF dst);
-
-  size(0);
-  format %{ "# TLS is in R15" %}
-  ins_encode( /*empty encoding*/ );
-  ins_pipe(ialu_reg_reg);
-%}
-
-// Die now
-instruct ShouldNotReachHere()
-%{
-  match(Halt);
-
-  // Use the following format syntax
-  format %{ "int3\t# ShouldNotReachHere" %}
-  // QQQ TODO for now call breakpoint
-  // opcode(0xCC);
-  // ins_encode(Opc);
-  ins_encode(bsd_breakpoint);
-  ins_pipe(pipe_slow);
 %}
 
 
 // Platform dependent source
 
-source
-%{
+source %{
 
 int MachCallRuntimeNode::ret_addr_offset() {
   return 13; // movq r10,#addr; callq (r10)
 }
 
-// emit an interrupt that is caught by the debugger
-void emit_break(CodeBuffer& cbuf) {
-  // Debugger doesn't really catch this but best we can do so far QQQ
-  MacroAssembler* masm = new MacroAssembler(&cbuf);
-  masm->call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
-}
-
-void MachBreakpointNode::emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const {
-  emit_break(cbuf);
-}
-
-uint MachBreakpointNode::size(PhaseRegAlloc* ra_) const {
-  return 5;
-}
-
 %}
--- a/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.ad	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.ad	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -24,137 +24,3 @@
 
 // X86 Linux Architecture Description File
 
-//----------OS-DEPENDENT ENCODING BLOCK-----------------------------------------------------
-// This block specifies the encoding classes used by the compiler to output
-// byte streams.  Encoding classes generate functions which are called by
-// Machine Instruction Nodes in order to generate the bit encoding of the
-// instruction.  Operands specify their base encoding interface with the
-// interface keyword.  There are currently supported four interfaces,
-// REG_INTER, CONST_INTER, MEMORY_INTER, & COND_INTER.  REG_INTER causes an
-// operand to generate a function which returns its register number when
-// queried.   CONST_INTER causes an operand to generate a function which
-// returns the value of the constant when queried.  MEMORY_INTER causes an
-// operand to generate four functions which return the Base Register, the
-// Index Register, the Scale Value, and the Offset Value of the operand when
-// queried.  COND_INTER causes an operand to generate six functions which
-// return the encoding code (ie - encoding bits for the instruction)
-// associated with each basic boolean condition for a conditional instruction.
-// Instructions specify two basic values for encoding.  They use the
-// ins_encode keyword to specify their encoding class (which must be one of
-// the class names specified in the encoding block), and they use the
-// opcode keyword to specify, in order, their primary, secondary, and
-// tertiary opcode.  Only the opcode sections which a particular instruction
-// needs for encoding need to be specified.
-encode %{
-  // Build emit functions for each basic byte or larger field in the intel
-  // encoding scheme (opcode, rm, sib, immediate), and call them from C++
-  // code in the enc_class source block.  Emit functions will live in the
-  // main source block for now.  In future, we can generalize this by
-  // adding a syntax that specifies the sizes of fields in an order,
-  // so that the adlc can build the emit functions automagically
-
-  enc_class linux_tlsencode (eRegP dst) %{
-    Register dstReg = as_Register($dst$$reg);
-    MacroAssembler* masm = new MacroAssembler(&cbuf);
-      masm->get_thread(dstReg);
-  %}
-
-  enc_class linux_breakpoint  %{
-    MacroAssembler* masm = new MacroAssembler(&cbuf);
-    masm->call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
-  %}
-
-  enc_class call_epilog %{
-    if( VerifyStackAtCalls ) {
-      // Check that stack depth is unchanged: find majik cookie on stack
-      int framesize = ra_->reg2offset_unchecked(OptoReg::add(ra_->_matcher._old_SP,-3*VMRegImpl::slots_per_word));
-      if(framesize >= 128) {
-        emit_opcode(cbuf, 0x81); // cmp [esp+0],0xbadb1ood
-        emit_d8(cbuf,0xBC);
-        emit_d8(cbuf,0x24);
-        emit_d32(cbuf,framesize); // Find majik cookie from ESP
-        emit_d32(cbuf, 0xbadb100d);
-      }
-      else {
-        emit_opcode(cbuf, 0x81); // cmp [esp+0],0xbadb1ood
-        emit_d8(cbuf,0x7C);
-        emit_d8(cbuf,0x24);
-        emit_d8(cbuf,framesize); // Find majik cookie from ESP
-        emit_d32(cbuf, 0xbadb100d);
-      }
-      // jmp EQ around INT3
-      // QQQ TODO
-      const int jump_around = 5; // size of call to breakpoint, 1 for CC
-      emit_opcode(cbuf,0x74);
-      emit_d8(cbuf, jump_around);
-      // QQQ temporary
-      emit_break(cbuf);
-      // Die if stack mismatch
-      // emit_opcode(cbuf,0xCC);
-    }
-  %}
-
-%}
-
-// INSTRUCTIONS -- Platform dependent
-
-//----------OS and Locking Instructions----------------------------------------
-
-// This name is KNOWN by the ADLC and cannot be changed.
-// The ADLC forces a 'TypeRawPtr::BOTTOM' output type
-// for this guy.
-instruct tlsLoadP(eRegP dst, eFlagsReg cr) %{
-  match(Set dst (ThreadLocal));
-  effect(DEF dst, KILL cr);
-
-  format %{ "MOV    $dst, Thread::current()" %}
-  ins_encode( linux_tlsencode(dst) );
-  ins_pipe( ialu_reg_fat );
-%}
-
-instruct TLS(eRegP dst) %{
-  match(Set dst (ThreadLocal));
-
-  expand %{
-    tlsLoadP(dst);
-  %}
-%}
-
-// Die now
-instruct ShouldNotReachHere( )
-%{
-  match(Halt);
-
-  // Use the following format syntax
-  format %{ "INT3   ; ShouldNotReachHere" %}
-  // QQQ TODO for now call breakpoint
-  // opcode(0xCC);
-  // ins_encode(Opc);
-  ins_encode(linux_breakpoint);
-  ins_pipe( pipe_slow );
-%}
-
-
-
-// Platform dependent source
-
-source %{
-
-// emit an interrupt that is caught by the debugger
-void emit_break(CodeBuffer &cbuf) {
-
-  // Debugger doesn't really catch this but best we can do so far QQQ
-  MacroAssembler* masm = new MacroAssembler(&cbuf);
-  masm->call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
-}
-
-void MachBreakpointNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
-  emit_break(cbuf);
-}
-
-
-uint MachBreakpointNode::size(PhaseRegAlloc *ra_) const {
-  return MachNode::size(ra_);
-}
-
-%}
--- a/hotspot/src/os_cpu/linux_x86/vm/linux_x86_64.ad	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/linux_x86_64.ad	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -55,8 +55,7 @@
   // adding a syntax that specifies the sizes of fields in an order,
   // so that the adlc can build the emit functions automagically
 
-  enc_class Java_To_Runtime(method meth)
-  %{
+  enc_class Java_To_Runtime(method meth) %{
     // No relocation needed
 
     // movq r10, <meth>
@@ -70,105 +69,15 @@
     emit_opcode(cbuf, 0xD0 | (R10_enc - 8));
   %}
 
-  enc_class linux_breakpoint
-  %{
-    MacroAssembler* masm = new MacroAssembler(&cbuf);
-    masm->call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
-  %}
-
-  enc_class call_epilog
-  %{
-    if (VerifyStackAtCalls) {
-      // Check that stack depth is unchanged: find majik cookie on stack
-      int framesize =
-        ra_->reg2offset_unchecked(OptoReg::add(ra_->_matcher._old_SP, -3*VMRegImpl::slots_per_word));
-      if (framesize) {
-        if (framesize < 0x80) {
-          emit_opcode(cbuf, Assembler::REX_W);
-          emit_opcode(cbuf, 0x81); // cmpq [rsp+0],0xbadb1ood
-          emit_d8(cbuf, 0x7C);
-          emit_d8(cbuf, 0x24);
-          emit_d8(cbuf, framesize); // Find majik cookie from ESP
-          emit_d32(cbuf, 0xbadb100d);
-        } else {
-          emit_opcode(cbuf, Assembler::REX_W);
-          emit_opcode(cbuf, 0x81); // cmpq [rsp+0],0xbadb1ood
-          emit_d8(cbuf, 0xBC);
-          emit_d8(cbuf, 0x24);
-          emit_d32(cbuf, framesize); // Find majik cookie from ESP
-          emit_d32(cbuf, 0xbadb100d);
-        }
-      }
-      // jmp EQ around INT3
-      // QQQ TODO
-      const int jump_around = 5; // size of call to breakpoint, 1 for CC
-      emit_opcode(cbuf, 0x74);
-      emit_d8(cbuf, jump_around);
-      // QQQ temporary
-      emit_break(cbuf);
-      // Die if stack mismatch
-      // emit_opcode(cbuf,0xCC);
-    }
-  %}
-
-%}
-
-// INSTRUCTIONS -- Platform dependent
-
-//----------OS and Locking Instructions----------------------------------------
-
-// This name is KNOWN by the ADLC and cannot be changed.
-// The ADLC forces a 'TypeRawPtr::BOTTOM' output type
-// for this guy.
-instruct tlsLoadP(r15_RegP dst)
-%{
-  match(Set dst (ThreadLocal));
-  effect(DEF dst);
-
-  size(0);
-  format %{ "# TLS is in R15" %}
-  ins_encode( /*empty encoding*/ );
-  ins_pipe(ialu_reg_reg);
-%}
-
-// Die now
-instruct ShouldNotReachHere()
-%{
-  match(Halt);
-
-  // Use the following format syntax
-  format %{ "int3\t# ShouldNotReachHere" %}
-  // QQQ TODO for now call breakpoint
-  // opcode(0xCC);
-  // ins_encode(Opc);
-  ins_encode(linux_breakpoint);
-  ins_pipe(pipe_slow);
 %}
 
 
 // Platform dependent source
 
-source
-%{
+source %{
 
 int MachCallRuntimeNode::ret_addr_offset() {
   return 13; // movq r10,#addr; callq (r10)
 }
 
-// emit an interrupt that is caught by the debugger
-void emit_break(CodeBuffer& cbuf) {
-  // Debugger doesn't really catch this but best we can do so far QQQ
-  MacroAssembler* masm = new MacroAssembler(&cbuf);
-  masm->call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
-}
-
-void MachBreakpointNode::emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const {
-  emit_break(cbuf);
-}
-
-uint MachBreakpointNode::size(PhaseRegAlloc* ra_) const {
-  // distance could be far and requires load and call through register
-  return MachNode::size(ra_);
-}
-
 %}
--- a/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.ad	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.ad	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -24,144 +24,3 @@
 
 // X86 Solaris Architecture Description File
 
-//----------OS-DEPENDENT ENCODING BLOCK-----------------------------------------------------
-// This block specifies the encoding classes used by the compiler to output
-// byte streams.  Encoding classes generate functions which are called by
-// Machine Instruction Nodes in order to generate the bit encoding of the
-// instruction.  Operands specify their base encoding interface with the
-// interface keyword.  There are currently supported four interfaces,
-// REG_INTER, CONST_INTER, MEMORY_INTER, & COND_INTER.  REG_INTER causes an
-// operand to generate a function which returns its register number when
-// queried.   CONST_INTER causes an operand to generate a function which
-// returns the value of the constant when queried.  MEMORY_INTER causes an
-// operand to generate four functions which return the Base Register, the
-// Index Register, the Scale Value, and the Offset Value of the operand when
-// queried.  COND_INTER causes an operand to generate six functions which
-// return the encoding code (ie - encoding bits for the instruction)
-// associated with each basic boolean condition for a conditional instruction.
-// Instructions specify two basic values for encoding.  They use the
-// ins_encode keyword to specify their encoding class (which must be one of
-// the class names specified in the encoding block), and they use the
-// opcode keyword to specify, in order, their primary, secondary, and
-// tertiary opcode.  Only the opcode sections which a particular instruction
-// needs for encoding need to be specified.
-encode %{
-  // Build emit functions for each basic byte or larger field in the intel
-  // encoding scheme (opcode, rm, sib, immediate), and call them from C++
-  // code in the enc_class source block.  Emit functions will live in the
-  // main source block for now.  In future, we can generalize this by
-  // adding a syntax that specifies the sizes of fields in an order,
-  // so that the adlc can build the emit functions automagically
-
-  enc_class solaris_tlsencode (eRegP dst) %{
-    Register dstReg = as_Register($dst$$reg);
-    MacroAssembler* masm = new MacroAssembler(&cbuf);
-    masm->get_thread(dstReg);
-  %}
-
-  enc_class solaris_breakpoint  %{
-    MacroAssembler* masm = new MacroAssembler(&cbuf);
-    // Really need to fix this
-    masm->push(rax);
-    masm->push(rcx);
-    masm->push(rdx);
-    masm->call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
-    masm->pop(rdx);
-    masm->pop(rcx);
-    masm->pop(rax);
-  %}
-
-  enc_class call_epilog %{
-    if( VerifyStackAtCalls ) {
-      // Check that stack depth is unchanged: find majik cookie on stack
-      int framesize = ra_->reg2offset_unchecked(OptoReg::add(ra_->_matcher._old_SP,-3*VMRegImpl::slots_per_word));
-      if(framesize >= 128) {
-        emit_opcode(cbuf, 0x81); // cmp [esp+0],0xbadb1ood
-        emit_d8(cbuf,0xBC);
-        emit_d8(cbuf,0x24);
-        emit_d32(cbuf,framesize); // Find majik cookie from ESP
-        emit_d32(cbuf, 0xbadb100d);
-      }
-      else {
-        emit_opcode(cbuf, 0x81); // cmp [esp+0],0xbadb1ood
-        emit_d8(cbuf,0x7C);
-        emit_d8(cbuf,0x24);
-        emit_d8(cbuf,framesize); // Find majik cookie from ESP
-        emit_d32(cbuf, 0xbadb100d);
-      }
-      // jmp EQ around INT3
-      // QQQ TODO
-      const int jump_around = 11; // size of call to breakpoint (and register preserve), 1 for CC
-      emit_opcode(cbuf,0x74);
-      emit_d8(cbuf, jump_around);
-      // QQQ temporary
-      emit_break(cbuf);
-      // Die if stack mismatch
-      // emit_opcode(cbuf,0xCC);
-    }
-  %}
-
-%}
-
-// INSTRUCTIONS -- Platform dependent
-
-//----------OS and Locking Instructions----------------------------------------
-
-// This name is KNOWN by the ADLC and cannot be changed.
-// The ADLC forces a 'TypeRawPtr::BOTTOM' output type
-// for this guy.
-instruct tlsLoadP(eRegP dst, eFlagsReg cr) %{
-  match(Set dst (ThreadLocal));
-  effect(DEF dst, KILL cr);
-
-  format %{ "MOV    $dst, Thread::current()" %}
-  ins_encode( solaris_tlsencode(dst) );
-  ins_pipe( ialu_reg_fat );
-%}
-
-instruct TLS(eRegP dst) %{
-  match(Set dst (ThreadLocal));
-
-  expand %{
-    tlsLoadP(dst);
-  %}
-%}
-
-// Die now
-instruct ShouldNotReachHere( )
-%{
-  match(Halt);
-
-  // Use the following format syntax
-  format %{ "INT3   ; ShouldNotReachHere" %}
-  // QQQ TODO for now call breakpoint
-  // opcode(0xCC);
-  // ins_encode(Opc);
-  ins_encode(solaris_breakpoint);
-  ins_pipe( pipe_slow );
-%}
-
-
-
-// Platform dependent source
-
-source %{
-
-// emit an interrupt that is caught by the debugger
-void emit_break(CodeBuffer &cbuf) {
-
-  // Debugger doesn't really catch this but best we can do so far QQQ
-  MacroAssembler* masm = new MacroAssembler(&cbuf);
-  masm->call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
-}
-
-void MachBreakpointNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
-  emit_break(cbuf);
-}
-
-
-uint MachBreakpointNode::size(PhaseRegAlloc *ra_) const {
-  return MachNode::size(ra_);
-}
-
-%}
--- a/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_64.ad	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_64.ad	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -55,8 +55,7 @@
   // adding a syntax that specifies the sizes of fields in an order,
   // so that the adlc can build the emit functions automagically
 
-  enc_class Java_To_Runtime(method meth)
-  %{
+  enc_class Java_To_Runtime(method meth) %{
     // No relocation needed
 
     // movq r10, <meth>
@@ -70,118 +69,24 @@
     emit_opcode(cbuf, 0xD0 | (R10_enc - 8));
   %}
 
-  enc_class solaris_breakpoint
-  %{
-    MacroAssembler* masm = new MacroAssembler(&cbuf);
-    masm->call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
-  %}
-
-  enc_class call_epilog
-  %{
-    if (VerifyStackAtCalls) {
-      // Check that stack depth is unchanged: find majik cookie on stack
-      int framesize =
-        ra_->reg2offset_unchecked(OptoReg::add(ra_->_matcher._old_SP, -3*VMRegImpl::slots_per_word));
-      if (framesize) {
-        if (framesize < 0x80) {
-          emit_opcode(cbuf, Assembler::REX_W);
-          emit_opcode(cbuf, 0x81); // cmpq [rsp+0],0xbadb1ood
-          emit_d8(cbuf, 0x7C);
-          emit_d8(cbuf, 0x24);
-          emit_d8(cbuf, framesize); // Find majik cookie from ESP
-          emit_d32(cbuf, 0xbadb100d);
-        } else {
-          emit_opcode(cbuf, Assembler::REX_W);
-          emit_opcode(cbuf, 0x81); // cmpq [rsp+0],0xbadb1ood
-          emit_d8(cbuf, 0xBC);
-          emit_d8(cbuf, 0x24);
-          emit_d32(cbuf, framesize); // Find majik cookie from ESP
-          emit_d32(cbuf, 0xbadb100d);
-        }
-      }
-      // jmp EQ around INT3
-      // QQQ TODO
-      const int jump_around = 5; // size of call to breakpoint, 1 for CC
-      emit_opcode(cbuf, 0x74);
-      emit_d8(cbuf, jump_around);
-      // QQQ temporary
-      emit_break(cbuf);
-      // Die if stack mismatch
-      // emit_opcode(cbuf,0xCC);
+  enc_class post_call_verify_mxcsr %{
+    MacroAssembler _masm(&cbuf);
+    if (RestoreMXCSROnJNICalls) {
+      __ ldmxcsr(ExternalAddress(StubRoutines::amd64::mxcsr_std()));
+    }
+    else if (CheckJNICalls) {
+      __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::amd64::verify_mxcsr_entry())));
     }
   %}
-
-  enc_class post_call_verify_mxcsr %{
-    MacroAssembler masm(&cbuf);
-    if (RestoreMXCSROnJNICalls) {
-      masm.ldmxcsr(ExternalAddress(StubRoutines::amd64::mxcsr_std()));
-    }
-    else if (CheckJNICalls) {
-      masm.call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::amd64::verify_mxcsr_entry())));
-    }
-  %}
-%}
-
-// INSTRUCTIONS -- Platform dependent
-
-//----------OS and Locking Instructions----------------------------------------
-
-// This name is KNOWN by the ADLC and cannot be changed.
-// The ADLC forces a 'TypeRawPtr::BOTTOM' output type
-// for this guy.
-instruct tlsLoadP(r15_RegP dst)
-%{
-  match(Set dst (ThreadLocal));
-  effect(DEF dst);
-
-  size(0);
-  format %{ "# TLS is in R15" %}
-  ins_encode( /*empty encoding*/ );
-  ins_pipe(ialu_reg_reg);
-%}
-
-// Die now
-instruct ShouldNotReachHere()
-%{
-  match(Halt);
-
-  // Use the following format syntax
-  format %{ "int3\t# ShouldNotReachHere" %}
-  // QQQ TODO for now call breakpoint
-  // opcode(0xCC);
-  // ins_encode(Opc);
-  ins_encode(solaris_breakpoint);
-  ins_pipe(pipe_slow);
 %}
 
 
 // Platform dependent source
 
-source
-%{
+source %{
 
-int MachCallRuntimeNode::ret_addr_offset()
-{
+int MachCallRuntimeNode::ret_addr_offset() {
   return 13; // movq r10,#addr; callq (r10)
 }
 
-// emit an interrupt that is caught by the debugger
-void emit_break(CodeBuffer& cbuf)
-{
-  // Debugger doesn't really catch this but best we can do so far QQQ
-  MacroAssembler* masm = new MacroAssembler(&cbuf);
-  masm->call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
-}
-
-void MachBreakpointNode::emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const
-{
-  emit_break(cbuf);
-}
-
-uint MachBreakpointNode::size(PhaseRegAlloc* ra_) const
-{
-  // distance could be far and requires load and call through register
-  return MachNode::size(ra_);
-}
-
 %}
--- a/hotspot/src/os_cpu/windows_x86/vm/windows_x86_32.ad	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/os_cpu/windows_x86/vm/windows_x86_32.ad	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -24,134 +24,3 @@
 
 // X86 Win32 Architecture Description File
 
-//----------OS-DEPENDENT ENCODING BLOCK-----------------------------------------------------
-// This block specifies the encoding classes used by the compiler to output
-// byte streams.  Encoding classes generate functions which are called by
-// Machine Instruction Nodes in order to generate the bit encoding of the
-// instruction.  Operands specify their base encoding interface with the
-// interface keyword.  There are currently supported four interfaces,
-// REG_INTER, CONST_INTER, MEMORY_INTER, & COND_INTER.  REG_INTER causes an
-// operand to generate a function which returns its register number when
-// queried.   CONST_INTER causes an operand to generate a function which
-// returns the value of the constant when queried.  MEMORY_INTER causes an
-// operand to generate four functions which return the Base Register, the
-// Index Register, the Scale Value, and the Offset Value of the operand when
-// queried.  COND_INTER causes an operand to generate six functions which
-// return the encoding code (ie - encoding bits for the instruction)
-// associated with each basic boolean condition for a conditional instruction.
-// Instructions specify two basic values for encoding.  They use the
-// ins_encode keyword to specify their encoding class (which must be one of
-// the class names specified in the encoding block), and they use the
-// opcode keyword to specify, in order, their primary, secondary, and
-// tertiary opcode.  Only the opcode sections which a particular instruction
-// needs for encoding need to be specified.
-encode %{
-  // Build emit functions for each basic byte or larger field in the intel
-  // encoding scheme (opcode, rm, sib, immediate), and call them from C++
-  // code in the enc_class source block.  Emit functions will live in the
-  // main source block for now.  In future, we can generalize this by
-  // adding a syntax that specifies the sizes of fields in an order,
-  // so that the adlc can build the emit functions automagically
-
-  enc_class tlsencode (eRegP dst, eRegP src) %{
-    emit_rm(cbuf, 0x2, $dst$$reg, $src$$reg);
-    emit_d32(cbuf, ThreadLocalStorage::get_thread_ptr_offset() );
-  %}
-
-  enc_class call_epilog %{
-    if( VerifyStackAtCalls ) {
-      // Check that stack depth is unchanged: find majik cookie on stack
-      int framesize = ra_->reg2offset_unchecked(OptoReg::add(ra_->_matcher._old_SP,-3*VMRegImpl::slots_per_word));
-      if(framesize >= 128) {
-        emit_opcode(cbuf, 0x81); // cmp [esp+0],0xbadb1ood
-        emit_d8(cbuf,0xBC);
-        emit_d8(cbuf,0x24);
-        emit_d32(cbuf,framesize); // Find majik cookie from ESP
-        emit_d32(cbuf, 0xbadb100d);
-      }
-      else {
-        emit_opcode(cbuf, 0x81); // cmp [esp+0],0xbadb1ood
-        emit_d8(cbuf,0x7C);
-        emit_d8(cbuf,0x24);
-        emit_d8(cbuf,framesize); // Find majik cookie from ESP
-        emit_d32(cbuf, 0xbadb100d);
-      }
-      // jmp EQ around INT3
-      emit_opcode(cbuf,0x74);
-      emit_d8(cbuf,1);
-      // Die if stack mismatch
-      emit_opcode(cbuf,0xCC);
-    }
-  %}
-
-%}
-
-// INSTRUCTIONS -- Platform dependent
-
-
-//----------OS and Locking Instructions----------------------------------------
-
-// The prefix of this name is KNOWN by the ADLC and cannot be changed.
-instruct tlsLoadP_prefixLoadP(eRegP t1) %{
-  effect(DEF t1);
-
-  format %{ "MOV    $t1,FS:[0x00] "%}
-  opcode(0x8B, 0x64);
-  ins_encode(OpcS, OpcP, conmemref(t1));
-  ins_pipe( ialu_reg_fat );
-%}
-
-// This name is KNOWN by the ADLC and cannot be changed.
-// The ADLC forces a 'TypeRawPtr::BOTTOM' output type
-// for this guy.
-// %%% Should do this with a clause like:  bottom_type(TypeRawPtr::BOTTOM);
-instruct tlsLoadP(eRegP dst, eRegP t1) %{
-  effect(DEF dst, USE t1);
-
-  format %{ "MOV    $dst,[$t1 + TLS::thread_ptr_offset()]" %}
-  opcode(0x8B);
-  ins_encode(OpcP, tlsencode(dst, t1));
-  ins_pipe( ialu_reg_reg_fat );
-%}
-
-instruct TLS(eRegP dst) %{
-  match(Set dst (ThreadLocal));
-  expand %{
-    eRegP t1;
-    tlsLoadP_prefixLoadP(t1);
-    tlsLoadP(dst, t1);
-  %}
-%}
-
-// Die now
-instruct ShouldNotReachHere( )
-%{
-  match(Halt);
-  // Use the following format syntax
-  format %{ "INT3   ; ShouldNotReachHere" %}
-  opcode(0xCC);
-  ins_encode(OpcP);
-  ins_pipe( pipe_slow );
-%}
-
-//
-// Platform dependent source
-//
-source %{
-
-// emit an interrupt that is caught by the debugger
-void emit_break(CodeBuffer &cbuf) {
-  cbuf.insts()->emit_int8((unsigned char) 0xcc);
-}
-
-void MachBreakpointNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
-  emit_break(cbuf);
-}
-
-
-uint MachBreakpointNode::size(PhaseRegAlloc *ra_) const {
-  return 1;
-}
-
-
-%}
--- a/hotspot/src/os_cpu/windows_x86/vm/windows_x86_64.ad	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/os_cpu/windows_x86/vm/windows_x86_64.ad	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -67,69 +67,6 @@
     emit_opcode(cbuf, 0xD0 | (R10_enc - 8));
   %}
 
-  enc_class call_epilog %{
-    if (VerifyStackAtCalls) {
-      // Check that stack depth is unchanged: find majik cookie on stack
-      int framesize =
-        ra_->reg2offset_unchecked(OptoReg::add(ra_->_matcher._old_SP, -3*VMRegImpl::slots_per_word));
-      if (framesize) {
-        if (framesize < 0x80) {
-          emit_opcode(cbuf, Assembler::REX_W);
-          emit_opcode(cbuf, 0x81); // cmpq [rsp+0],0xbadb1ood
-          emit_d8(cbuf, 0x7C);
-          emit_d8(cbuf, 0x24);
-          emit_d8(cbuf, framesize); // Find majik cookie from ESP
-          emit_d32(cbuf, 0xbadb100d);
-        } else {
-          emit_opcode(cbuf, Assembler::REX_W);
-          emit_opcode(cbuf, 0x81); // cmpq [rsp+0],0xbadb1ood
-          emit_d8(cbuf, 0xBC);
-          emit_d8(cbuf, 0x24);
-          emit_d32(cbuf, framesize); // Find majik cookie from ESP
-          emit_d32(cbuf, 0xbadb100d);
-        }
-      }
-      // jmp EQ around INT3
-      // QQQ TODO
-      const int jump_around = 5; // size of call to breakpoint, 1 for CC
-      emit_opcode(cbuf, 0x74);
-      emit_d8(cbuf, jump_around);
-      // QQQ temporary
-      emit_break(cbuf);
-      // Die if stack mismatch
-      // emit_opcode(cbuf,0xCC);
-    }
-  %}
-%}
-
-// INSTRUCTIONS -- Platform dependent
-
-
-//----------OS and Locking Instructions----------------------------------------
-
-// This name is KNOWN by the ADLC and cannot be changed.
-// The ADLC forces a 'TypeRawPtr::BOTTOM' output type
-// for this guy.
-instruct tlsLoadP(r15_RegP dst)
-%{
-  match(Set dst (ThreadLocal));
-  effect(DEF dst);
-
-  size(0);
-  format %{ "# TLS is in R15" %}
-  ins_encode( /*empty encoding*/ );
-  ins_pipe(ialu_reg_reg);
-%}
-
-// Die now
-instruct ShouldNotReachHere( )
-%{
-  match(Halt);
-  // Use the following format syntax
-  format %{ "INT3   ; ShouldNotReachHere" %}
-  opcode(0xCC);
-  ins_encode(OpcP);
-  ins_pipe( pipe_slow );
 %}
 
 //
@@ -142,17 +79,4 @@
   return 13; // movq r10,#addr; callq (r10)
 }
 
-// emit an interrupt that is caught by the debugger
-void emit_break(CodeBuffer &cbuf) {
-  cbuf.insts()->emit_int8((unsigned char) 0xcc);
-}
-
-void MachBreakpointNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
-  emit_break(cbuf);
-}
-
-uint MachBreakpointNode::size(PhaseRegAlloc *ra_) const {
-  return 1;
-}
-
 %}
--- a/hotspot/src/share/tools/hsdis/hsdis.c	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/tools/hsdis/hsdis.c	Wed Feb 22 16:52:50 2012 -0800
@@ -356,7 +356,7 @@
       if (plen > mach_size)  plen = mach_size;
       strncpy(mach_option, p, plen);
       mach_option[plen] = '\0';
-    } else if (plen > 6 && strncmp(p, "hsdis-", 6)) {
+    } else if (plen > 6 && strncmp(p, "hsdis-", 6) == 0) {
       // do not pass these to the next level
     } else {
       /* just copy it; {i386,sparc}-dis.c might like to see it  */
--- a/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -594,6 +594,13 @@
   return false;
 }
 
+static bool is_safepoint(BlockEnd* x, BlockBegin* sux) {
+  // An Instruction with multiple successors, x, is replaced by a Goto
+  // to a single successor, sux. Is a safepoint check needed = was the
+  // instruction being replaced a safepoint and the single remaining
+  // successor a back branch?
+  return x->is_safepoint() && (sux->bci() < x->state_before()->bci());
+}
 
 void Canonicalizer::do_If(If* x) {
   // move const to right
@@ -614,7 +621,7 @@
     case If::geq: sux = x->sux_for(true);  break;
     }
     // If is a safepoint then the debug information should come from the state_before of the If.
-    set_canonical(new Goto(sux, x->state_before(), x->is_safepoint()));
+    set_canonical(new Goto(sux, x->state_before(), is_safepoint(x, sux)));
     return;
   }
 
@@ -626,7 +633,7 @@
                                                        x->sux_for(false));
       if (sux != NULL) {
         // If is a safepoint then the debug information should come from the state_before of the If.
-        set_canonical(new Goto(sux, x->state_before(), x->is_safepoint()));
+        set_canonical(new Goto(sux, x->state_before(), is_safepoint(x, sux)));
       }
     }
   } else if (rt->as_IntConstant() != NULL) {
@@ -694,10 +701,12 @@
     }
   } else if (rt == objectNull && (l->as_NewInstance() || l->as_NewArray())) {
     if (x->cond() == Instruction::eql) {
-      set_canonical(new Goto(x->fsux(), x->state_before(), x->is_safepoint()));
+      BlockBegin* sux = x->fsux();
+      set_canonical(new Goto(sux, x->state_before(), is_safepoint(x, sux)));
     } else {
       assert(x->cond() == Instruction::neq, "only other valid case");
-      set_canonical(new Goto(x->tsux(), x->state_before(), x->is_safepoint()));
+      BlockBegin* sux = x->tsux();
+      set_canonical(new Goto(sux, x->state_before(), is_safepoint(x, sux)));
     }
   }
 }
@@ -710,7 +719,7 @@
     if (v >= x->lo_key() && v <= x->hi_key()) {
       sux = x->sux_at(v - x->lo_key());
     }
-    set_canonical(new Goto(sux, x->state_before(), x->is_safepoint()));
+    set_canonical(new Goto(sux, x->state_before(), is_safepoint(x, sux)));
   } else if (x->number_of_sux() == 1) {
     // NOTE: Code permanently disabled for now since the switch statement's
     //       tag expression may produce side-effects in which case it must
@@ -741,7 +750,7 @@
         sux = x->sux_at(i);
       }
     }
-    set_canonical(new Goto(sux, x->state_before(), x->is_safepoint()));
+    set_canonical(new Goto(sux, x->state_before(), is_safepoint(x, sux)));
   } else if (x->number_of_sux() == 1) {
     // NOTE: Code permanently disabled for now since the switch statement's
     //       tag expression may produce side-effects in which case it must
--- a/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1181,6 +1181,11 @@
   bool is_bb = tsux->bci() < stream()->cur_bci() || fsux->bci() < stream()->cur_bci();
   Instruction *i = append(new If(x, cond, false, y, tsux, fsux, is_bb ? state_before : NULL, is_bb));
 
+  assert(i->as_Goto() == NULL ||
+         (i->as_Goto()->sux_at(0) == tsux  && i->as_Goto()->is_safepoint() == tsux->bci() < stream()->cur_bci()) ||
+         (i->as_Goto()->sux_at(0) == fsux  && i->as_Goto()->is_safepoint() == fsux->bci() < stream()->cur_bci()),
+         "safepoint state of Goto returned by canonicalizer incorrect");
+
   if (is_profiling()) {
     If* if_node = i->as_If();
     if (if_node != NULL) {
@@ -1303,7 +1308,16 @@
     // add default successor
     sux->at_put(i, block_at(bci() + sw.default_offset()));
     ValueStack* state_before = has_bb ? copy_state_before() : NULL;
-    append(new TableSwitch(ipop(), sux, sw.low_key(), state_before, has_bb));
+    Instruction* res = append(new TableSwitch(ipop(), sux, sw.low_key(), state_before, has_bb));
+#ifdef ASSERT
+    if (res->as_Goto()) {
+      for (i = 0; i < l; i++) {
+        if (sux->at(i) == res->as_Goto()->sux_at(0)) {
+          assert(res->as_Goto()->is_safepoint() == sw.dest_offset_at(i) < 0, "safepoint state of Goto returned by canonicalizer incorrect");
+        }
+      }
+    }
+#endif
   }
 }
 
@@ -1338,7 +1352,16 @@
     // add default successor
     sux->at_put(i, block_at(bci() + sw.default_offset()));
     ValueStack* state_before = has_bb ? copy_state_before() : NULL;
-    append(new LookupSwitch(ipop(), sux, keys, state_before, has_bb));
+    Instruction* res = append(new LookupSwitch(ipop(), sux, keys, state_before, has_bb));
+#ifdef ASSERT
+    if (res->as_Goto()) {
+      for (i = 0; i < l; i++) {
+        if (sux->at(i) == res->as_Goto()->sux_at(0)) {
+          assert(res->as_Goto()->is_safepoint() == sw.pair_at(i).offset() < 0, "safepoint state of Goto returned by canonicalizer incorrect");
+        }
+      }
+    }
+#endif
   }
 }
 
--- a/hotspot/src/share/vm/c1/c1_LinearScan.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/c1/c1_LinearScan.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -2464,12 +2464,15 @@
 
 
 // frequently used constants
-ConstantOopWriteValue LinearScan::_oop_null_scope_value = ConstantOopWriteValue(NULL);
-ConstantIntValue      LinearScan::_int_m1_scope_value = ConstantIntValue(-1);
-ConstantIntValue      LinearScan::_int_0_scope_value =  ConstantIntValue(0);
-ConstantIntValue      LinearScan::_int_1_scope_value =  ConstantIntValue(1);
-ConstantIntValue      LinearScan::_int_2_scope_value =  ConstantIntValue(2);
-LocationValue         _illegal_value = LocationValue(Location());
+// Allocate them with new so they are never destroyed (otherwise, a
+// forced exit could destroy these objects while they are still in
+// use).
+ConstantOopWriteValue* LinearScan::_oop_null_scope_value = new (ResourceObj::C_HEAP) ConstantOopWriteValue(NULL);
+ConstantIntValue*      LinearScan::_int_m1_scope_value = new (ResourceObj::C_HEAP) ConstantIntValue(-1);
+ConstantIntValue*      LinearScan::_int_0_scope_value =  new (ResourceObj::C_HEAP) ConstantIntValue(0);
+ConstantIntValue*      LinearScan::_int_1_scope_value =  new (ResourceObj::C_HEAP) ConstantIntValue(1);
+ConstantIntValue*      LinearScan::_int_2_scope_value =  new (ResourceObj::C_HEAP) ConstantIntValue(2);
+LocationValue*         _illegal_value = new (ResourceObj::C_HEAP) LocationValue(Location());
 
 void LinearScan::init_compute_debug_info() {
   // cache for frequently used scope values
@@ -2508,7 +2511,7 @@
     case T_OBJECT: {
       jobject value = c->as_jobject();
       if (value == NULL) {
-        scope_values->append(&_oop_null_scope_value);
+        scope_values->append(_oop_null_scope_value);
       } else {
         scope_values->append(new ConstantOopWriteValue(c->as_jobject()));
       }
@@ -2519,10 +2522,10 @@
     case T_FLOAT: {
       int value = c->as_jint_bits();
       switch (value) {
-        case -1: scope_values->append(&_int_m1_scope_value); break;
-        case 0:  scope_values->append(&_int_0_scope_value); break;
-        case 1:  scope_values->append(&_int_1_scope_value); break;
-        case 2:  scope_values->append(&_int_2_scope_value); break;
+        case -1: scope_values->append(_int_m1_scope_value); break;
+        case 0:  scope_values->append(_int_0_scope_value); break;
+        case 1:  scope_values->append(_int_1_scope_value); break;
+        case 2:  scope_values->append(_int_2_scope_value); break;
         default: scope_values->append(new ConstantIntValue(c->as_jint_bits())); break;
       }
       return 1;
@@ -2531,7 +2534,7 @@
     case T_LONG: // fall through
     case T_DOUBLE: {
 #ifdef _LP64
-      scope_values->append(&_int_0_scope_value);
+      scope_values->append(_int_0_scope_value);
       scope_values->append(new ConstantLongValue(c->as_jlong_bits()));
 #else
       if (hi_word_offset_in_bytes > lo_word_offset_in_bytes) {
@@ -2657,7 +2660,7 @@
       }
       // Does this reverse on x86 vs. sparc?
       first =  new LocationValue(loc1);
-      second = &_int_0_scope_value;
+      second = _int_0_scope_value;
 #else
       Location loc1, loc2;
       if (!frame_map()->locations_for_slot(opr->double_stack_ix(), Location::normal, &loc1, &loc2)) {
@@ -2671,7 +2674,7 @@
 #ifdef _LP64
       VMReg rname_first = opr->as_register_lo()->as_VMReg();
       first = new LocationValue(Location::new_reg_loc(Location::lng, rname_first));
-      second = &_int_0_scope_value;
+      second = _int_0_scope_value;
 #else
       VMReg rname_first = opr->as_register_lo()->as_VMReg();
       VMReg rname_second = opr->as_register_hi()->as_VMReg();
@@ -2694,7 +2697,7 @@
       VMReg rname_first  = opr->as_xmm_double_reg()->as_VMReg();
 #  ifdef _LP64
       first = new LocationValue(Location::new_reg_loc(Location::dbl, rname_first));
-      second = &_int_0_scope_value;
+      second = _int_0_scope_value;
 #  else
       first = new LocationValue(Location::new_reg_loc(Location::normal, rname_first));
       // %%% This is probably a waste but we'll keep things as they were for now
@@ -2741,7 +2744,7 @@
 
 #ifdef _LP64
       first = new LocationValue(Location::new_reg_loc(Location::dbl, rname_first));
-      second = &_int_0_scope_value;
+      second = _int_0_scope_value;
 #else
       first = new LocationValue(Location::new_reg_loc(Location::normal, rname_first));
       // %%% This is probably a waste but we'll keep things as they were for now
@@ -2822,7 +2825,7 @@
     }
   } else {
     // append a dummy value because real value not needed
-    scope_values->append(&_illegal_value);
+    scope_values->append(_illegal_value);
     return 1;
   }
 }
@@ -2865,7 +2868,7 @@
     nof_locals = cur_scope->method()->max_locals();
     locals = new GrowableArray<ScopeValue*>(nof_locals);
     for(int i = 0; i < nof_locals; i++) {
-      locals->append(&_illegal_value);
+      locals->append(_illegal_value);
     }
   }
 
--- a/hotspot/src/share/vm/c1/c1_LinearScan.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/c1/c1_LinearScan.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -160,11 +160,11 @@
   // TODO: cached scope values for registers could be static
   ScopeValueArray           _scope_value_cache;
 
-  static ConstantOopWriteValue _oop_null_scope_value;
-  static ConstantIntValue    _int_m1_scope_value;
-  static ConstantIntValue    _int_0_scope_value;
-  static ConstantIntValue    _int_1_scope_value;
-  static ConstantIntValue    _int_2_scope_value;
+  static ConstantOopWriteValue* _oop_null_scope_value;
+  static ConstantIntValue*    _int_m1_scope_value;
+  static ConstantIntValue*    _int_0_scope_value;
+  static ConstantIntValue*    _int_1_scope_value;
+  static ConstantIntValue*    _int_2_scope_value;
 
   // accessors
   IR*           ir() const                       { return _ir; }
--- a/hotspot/src/share/vm/classfile/vmSymbols.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -284,6 +284,7 @@
   template(run_method_name,                           "run")                                      \
   template(exit_method_name,                          "exit")                                     \
   template(add_method_name,                           "add")                                      \
+  template(remove_method_name,                        "remove")                                   \
   template(parent_name,                               "parent")                                   \
   template(threads_name,                              "threads")                                  \
   template(groups_name,                               "groups")                                   \
--- a/hotspot/src/share/vm/compiler/compileBroker.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/compiler/compileBroker.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -204,7 +204,8 @@
   }
 
   void log_nmethod(JavaThread* thread, nmethod* nm) {
-    log(thread, "nmethod " INTPTR_FORMAT " code ["INTPTR_FORMAT ", " INTPTR_FORMAT "]",
+    log(thread, "nmethod %d%s " INTPTR_FORMAT " code ["INTPTR_FORMAT ", " INTPTR_FORMAT "]",
+        nm->compile_id(), nm->is_osr_method() ? "%" : "",
         nm, nm->code_begin(), nm->code_end());
   }
 
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -6092,7 +6092,11 @@
   _inter_sweep_timer.reset();
   _inter_sweep_timer.start();
 
-  update_time_of_last_gc(os::javaTimeMillis());
+  // We need to use a monotonically non-deccreasing time in ms
+  // or we will see time-warp warnings and os::javaTimeMillis()
+  // does not guarantee monotonicity.
+  jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
+  update_time_of_last_gc(now);
 
   // NOTE on abstract state transitions:
   // Mutators allocate-live and/or mark the mod-union table dirty
--- a/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -48,6 +48,8 @@
 
 #ifndef PRODUCT
 bool CSetChooserCache::verify() {
+  guarantee(false, "CSetChooserCache::verify(): don't call this any more");
+
   int index = _first;
   HeapRegion *prev = NULL;
   for (int i = 0; i < _occupancy; ++i) {
@@ -75,6 +77,8 @@
 #endif // PRODUCT
 
 void CSetChooserCache::insert(HeapRegion *hr) {
+  guarantee(false, "CSetChooserCache::insert(): don't call this any more");
+
   assert(!is_full(), "cache should not be empty");
   hr->calc_gc_efficiency();
 
@@ -104,6 +108,9 @@
 }
 
 HeapRegion *CSetChooserCache::remove_first() {
+  guarantee(false, "CSetChooserCache::remove_first(): "
+                   "don't call this any more");
+
   if (_occupancy > 0) {
     assert(_cache[_first] != NULL, "cache should have at least one region");
     HeapRegion *ret = _cache[_first];
@@ -118,16 +125,35 @@
   }
 }
 
-static inline int orderRegions(HeapRegion* hr1, HeapRegion* hr2) {
+// Even though we don't use the GC efficiency in our heuristics as
+// much as we used to, we still order according to GC efficiency. This
+// will cause regions with a lot of live objects and large RSets to
+// end up at the end of the array. Given that we might skip collecting
+// the last few old regions, if after a few mixed GCs the remaining
+// have reclaimable bytes under a certain threshold, the hope is that
+// the ones we'll skip are ones with both large RSets and a lot of
+// live objects, not the ones with just a lot of live objects if we
+// ordered according to the amount of reclaimable bytes per region.
+static int orderRegions(HeapRegion* hr1, HeapRegion* hr2) {
   if (hr1 == NULL) {
-    if (hr2 == NULL) return 0;
-    else return 1;
+    if (hr2 == NULL) {
+      return 0;
+    } else {
+      return 1;
+    }
   } else if (hr2 == NULL) {
     return -1;
   }
-  if (hr2->gc_efficiency() < hr1->gc_efficiency()) return -1;
-  else if (hr1->gc_efficiency() < hr2->gc_efficiency()) return 1;
-  else return 0;
+
+  double gc_eff1 = hr1->gc_efficiency();
+  double gc_eff2 = hr2->gc_efficiency();
+  if (gc_eff1 > gc_eff2) {
+    return -1;
+  } if (gc_eff1 < gc_eff2) {
+    return 1;
+  } else {
+    return 0;
+  }
 }
 
 static int orderRegions(HeapRegion** hr1p, HeapRegion** hr2p) {
@@ -151,51 +177,61 @@
   //
   _markedRegions((ResourceObj::set_allocation_type((address)&_markedRegions,
                                              ResourceObj::C_HEAP),
-                  100),
-                 true),
-  _curMarkedIndex(0),
-  _numMarkedRegions(0),
-  _unmarked_age_1_returned_as_new(false),
-  _first_par_unreserved_idx(0)
-{}
-
-
+                  100), true /* C_Heap */),
+    _curr_index(0), _length(0),
+    _regionLiveThresholdBytes(0), _remainingReclaimableBytes(0),
+    _first_par_unreserved_idx(0) {
+  _regionLiveThresholdBytes =
+    HeapRegion::GrainBytes * (size_t) G1OldCSetRegionLiveThresholdPercent / 100;
+}
 
 #ifndef PRODUCT
 bool CollectionSetChooser::verify() {
+  guarantee(_length >= 0, err_msg("_length: %d", _length));
+  guarantee(0 <= _curr_index && _curr_index <= _length,
+            err_msg("_curr_index: %d _length: %d", _curr_index, _length));
   int index = 0;
-  guarantee(_curMarkedIndex <= _numMarkedRegions,
-            "_curMarkedIndex should be within bounds");
-  while (index < _curMarkedIndex) {
-    guarantee(_markedRegions.at(index++) == NULL,
-              "all entries before _curMarkedIndex should be NULL");
+  size_t sum_of_reclaimable_bytes = 0;
+  while (index < _curr_index) {
+    guarantee(_markedRegions.at(index) == NULL,
+              "all entries before _curr_index should be NULL");
+    index += 1;
   }
   HeapRegion *prev = NULL;
-  while (index < _numMarkedRegions) {
+  while (index < _length) {
     HeapRegion *curr = _markedRegions.at(index++);
     guarantee(curr != NULL, "Regions in _markedRegions array cannot be NULL");
     int si = curr->sort_index();
     guarantee(!curr->is_young(), "should not be young!");
+    guarantee(!curr->isHumongous(), "should not be humongous!");
     guarantee(si > -1 && si == (index-1), "sort index invariant");
     if (prev != NULL) {
-      guarantee(orderRegions(prev, curr) != 1, "regions should be sorted");
+      guarantee(orderRegions(prev, curr) != 1,
+                err_msg("GC eff prev: %1.4f GC eff curr: %1.4f",
+                        prev->gc_efficiency(), curr->gc_efficiency()));
     }
+    sum_of_reclaimable_bytes += curr->reclaimable_bytes();
     prev = curr;
   }
-  return _cache.verify();
+  guarantee(sum_of_reclaimable_bytes == _remainingReclaimableBytes,
+            err_msg("reclaimable bytes inconsistent, "
+                    "remaining: "SIZE_FORMAT" sum: "SIZE_FORMAT,
+                    _remainingReclaimableBytes, sum_of_reclaimable_bytes));
+  return true;
 }
 #endif
 
-void
-CollectionSetChooser::fillCache() {
-  while (!_cache.is_full() && (_curMarkedIndex < _numMarkedRegions)) {
-    HeapRegion* hr = _markedRegions.at(_curMarkedIndex);
+void CollectionSetChooser::fillCache() {
+  guarantee(false, "fillCache: don't call this any more");
+
+  while (!_cache.is_full() && (_curr_index < _length)) {
+    HeapRegion* hr = _markedRegions.at(_curr_index);
     assert(hr != NULL,
            err_msg("Unexpected NULL hr in _markedRegions at index %d",
-                   _curMarkedIndex));
-    _curMarkedIndex += 1;
+                   _curr_index));
+    _curr_index += 1;
     assert(!hr->is_young(), "should not be young!");
-    assert(hr->sort_index() == _curMarkedIndex-1, "sort_index invariant");
+    assert(hr->sort_index() == _curr_index-1, "sort_index invariant");
     _markedRegions.at_put(hr->sort_index(), NULL);
     _cache.insert(hr);
     assert(!_cache.is_empty(), "cache should not be empty");
@@ -203,9 +239,7 @@
   assert(verify(), "cache should be consistent");
 }
 
-void
-CollectionSetChooser::sortMarkedHeapRegions() {
-  guarantee(_cache.is_empty(), "cache should be empty");
+void CollectionSetChooser::sortMarkedHeapRegions() {
   // First trim any unused portion of the top in the parallel case.
   if (_first_par_unreserved_idx > 0) {
     if (G1PrintParCleanupStats) {
@@ -217,43 +251,78 @@
     _markedRegions.trunc_to(_first_par_unreserved_idx);
   }
   _markedRegions.sort(orderRegions);
-  assert(_numMarkedRegions <= _markedRegions.length(), "Requirement");
-  assert(_numMarkedRegions == 0
-         || _markedRegions.at(_numMarkedRegions-1) != NULL,
-         "Testing _numMarkedRegions");
-  assert(_numMarkedRegions == _markedRegions.length()
-         || _markedRegions.at(_numMarkedRegions) == NULL,
-         "Testing _numMarkedRegions");
+  assert(_length <= _markedRegions.length(), "Requirement");
+  assert(_length == 0 || _markedRegions.at(_length - 1) != NULL,
+         "Testing _length");
+  assert(_length == _markedRegions.length() ||
+                        _markedRegions.at(_length) == NULL, "Testing _length");
   if (G1PrintParCleanupStats) {
-    gclog_or_tty->print_cr("     Sorted %d marked regions.", _numMarkedRegions);
+    gclog_or_tty->print_cr("     Sorted %d marked regions.", _length);
   }
-  for (int i = 0; i < _numMarkedRegions; i++) {
+  for (int i = 0; i < _length; i++) {
     assert(_markedRegions.at(i) != NULL, "Should be true by sorting!");
     _markedRegions.at(i)->set_sort_index(i);
   }
   if (G1PrintRegionLivenessInfo) {
     G1PrintRegionLivenessInfoClosure cl(gclog_or_tty, "Post-Sorting");
-    for (int i = 0; i < _numMarkedRegions; ++i) {
+    for (int i = 0; i < _length; ++i) {
       HeapRegion* r = _markedRegions.at(i);
       cl.doHeapRegion(r);
     }
   }
-  assert(verify(), "should now be sorted");
+  assert(verify(), "CSet chooser verification");
 }
 
-void
-CollectionSetChooser::addMarkedHeapRegion(HeapRegion* hr) {
+size_t CollectionSetChooser::calcMinOldCSetLength() {
+  // The min old CSet region bound is based on the maximum desired
+  // number of mixed GCs after a cycle. I.e., even if some old regions
+  // look expensive, we should add them to the CSet anyway to make
+  // sure we go through the available old regions in no more than the
+  // maximum desired number of mixed GCs.
+  //
+  // The calculation is based on the number of marked regions we added
+  // to the CSet chooser in the first place, not how many remain, so
+  // that the result is the same during all mixed GCs that follow a cycle.
+
+  const size_t region_num = (size_t) _length;
+  const size_t gc_num = (size_t) G1MaxMixedGCNum;
+  size_t result = region_num / gc_num;
+  // emulate ceiling
+  if (result * gc_num < region_num) {
+    result += 1;
+  }
+  return result;
+}
+
+size_t CollectionSetChooser::calcMaxOldCSetLength() {
+  // The max old CSet region bound is based on the threshold expressed
+  // as a percentage of the heap size. I.e., it should bound the
+  // number of old regions added to the CSet irrespective of how many
+  // of them are available.
+
+  G1CollectedHeap* g1h = G1CollectedHeap::heap();
+  const size_t region_num = g1h->n_regions();
+  const size_t perc = (size_t) G1OldCSetRegionThresholdPercent;
+  size_t result = region_num * perc / 100;
+  // emulate ceiling
+  if (100 * result < region_num * perc) {
+    result += 1;
+  }
+  return result;
+}
+
+void CollectionSetChooser::addMarkedHeapRegion(HeapRegion* hr) {
   assert(!hr->isHumongous(),
          "Humongous regions shouldn't be added to the collection set");
   assert(!hr->is_young(), "should not be young!");
   _markedRegions.append(hr);
-  _numMarkedRegions++;
+  _length++;
+  _remainingReclaimableBytes += hr->reclaimable_bytes();
   hr->calc_gc_efficiency();
 }
 
-void
-CollectionSetChooser::
-prepareForAddMarkedHeapRegionsPar(size_t n_regions, size_t chunkSize) {
+void CollectionSetChooser::prepareForAddMarkedHeapRegionsPar(size_t n_regions,
+                                                             size_t chunkSize) {
   _first_par_unreserved_idx = 0;
   int n_threads = ParallelGCThreads;
   if (UseDynamicNumberOfGCThreads) {
@@ -274,8 +343,7 @@
   _markedRegions.at_put_grow((int)(aligned_n_regions + max_waste - 1), NULL);
 }
 
-jint
-CollectionSetChooser::getParMarkedHeapRegionChunk(jint n_regions) {
+jint CollectionSetChooser::getParMarkedHeapRegionChunk(jint n_regions) {
   // Don't do this assert because this can be called at a point
   // where the loop up stream will not execute again but might
   // try to claim more chunks (loop test has not been done yet).
@@ -287,83 +355,37 @@
   return res - n_regions;
 }
 
-void
-CollectionSetChooser::setMarkedHeapRegion(jint index, HeapRegion* hr) {
+void CollectionSetChooser::setMarkedHeapRegion(jint index, HeapRegion* hr) {
   assert(_markedRegions.at(index) == NULL, "precondition");
   assert(!hr->is_young(), "should not be young!");
   _markedRegions.at_put(index, hr);
   hr->calc_gc_efficiency();
 }
 
-void
-CollectionSetChooser::incNumMarkedHeapRegions(jint inc_by) {
-  (void)Atomic::add(inc_by, &_numMarkedRegions);
-}
-
-void
-CollectionSetChooser::clearMarkedHeapRegions(){
-  for (int i = 0; i < _markedRegions.length(); i++) {
-    HeapRegion* r =   _markedRegions.at(i);
-    if (r != NULL) r->set_sort_index(-1);
+void CollectionSetChooser::updateTotals(jint region_num,
+                                        size_t reclaimable_bytes) {
+  // Only take the lock if we actually need to update the totals.
+  if (region_num > 0) {
+    assert(reclaimable_bytes > 0, "invariant");
+    // We could have just used atomics instead of taking the
+    // lock. However, we currently don't have an atomic add for size_t.
+    MutexLockerEx x(ParGCRareEvent_lock, Mutex::_no_safepoint_check_flag);
+    _length += (int) region_num;
+    _remainingReclaimableBytes += reclaimable_bytes;
+  } else {
+    assert(reclaimable_bytes == 0, "invariant");
   }
-  _markedRegions.clear();
-  _curMarkedIndex = 0;
-  _numMarkedRegions = 0;
-  _cache.clear();
-};
-
-void
-CollectionSetChooser::updateAfterFullCollection() {
-  clearMarkedHeapRegions();
 }
 
-// if time_remaining < 0.0, then this method should try to return
-// a region, whether it fits within the remaining time or not
-HeapRegion*
-CollectionSetChooser::getNextMarkedRegion(double time_remaining,
-                                          double avg_prediction) {
-  G1CollectedHeap* g1h = G1CollectedHeap::heap();
-  G1CollectorPolicy* g1p = g1h->g1_policy();
-  fillCache();
-  if (_cache.is_empty()) {
-    assert(_curMarkedIndex == _numMarkedRegions,
-           "if cache is empty, list should also be empty");
-    ergo_verbose0(ErgoCSetConstruction,
-                  "stop adding old regions to CSet",
-                  ergo_format_reason("cache is empty"));
-    return NULL;
-  }
-
-  HeapRegion *hr = _cache.get_first();
-  assert(hr != NULL, "if cache not empty, first entry should be non-null");
-  double predicted_time = g1h->predict_region_elapsed_time_ms(hr, false);
-
-  if (g1p->adaptive_young_list_length()) {
-    if (time_remaining - predicted_time < 0.0) {
-      g1h->check_if_region_is_too_expensive(predicted_time);
-      ergo_verbose2(ErgoCSetConstruction,
-                    "stop adding old regions to CSet",
-                    ergo_format_reason("predicted old region time higher than remaining time")
-                    ergo_format_ms("predicted old region time")
-                    ergo_format_ms("remaining time"),
-                    predicted_time, time_remaining);
-      return NULL;
-    }
-  } else {
-    double threshold = 2.0 * avg_prediction;
-    if (predicted_time > threshold) {
-      ergo_verbose2(ErgoCSetConstruction,
-                    "stop adding old regions to CSet",
-                    ergo_format_reason("predicted old region time higher than threshold")
-                    ergo_format_ms("predicted old region time")
-                    ergo_format_ms("threshold"),
-                    predicted_time, threshold);
-      return NULL;
+void CollectionSetChooser::clearMarkedHeapRegions() {
+  for (int i = 0; i < _markedRegions.length(); i++) {
+    HeapRegion* r = _markedRegions.at(i);
+    if (r != NULL) {
+      r->set_sort_index(-1);
     }
   }
-
-  HeapRegion *hr2 = _cache.remove_first();
-  assert(hr == hr2, "cache contents should not have changed");
-
-  return hr;
-}
+  _markedRegions.clear();
+  _curr_index = 0;
+  _length = 0;
+  _remainingReclaimableBytes = 0;
+};
--- a/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,28 +28,6 @@
 #include "gc_implementation/g1/heapRegion.hpp"
 #include "utilities/growableArray.hpp"
 
-// We need to sort heap regions by collection desirability.
-// This sorting is currently done in two "stages". An initial sort is
-// done following a cleanup pause as soon as all of the marked but
-// non-empty regions have been identified and the completely empty
-// ones reclaimed.
-// This gives us a global sort on a GC efficiency metric
-// based on predictive data available at that time. However,
-// any of these regions that are collected will only be collected
-// during a future GC pause, by which time it is possible that newer
-// data might allow us to revise and/or refine the earlier
-// pause predictions, leading to changes in expected gc efficiency
-// order. To somewhat mitigate this obsolescence, more so in the
-// case of regions towards the end of the list, which will be
-// picked later, these pre-sorted regions from the _markedRegions
-// array are not used as is, but a small prefix thereof is
-// insertion-sorted again into a small cache, based on more
-// recent remembered set information. Regions are then drawn
-// from this cache to construct the collection set at each
-// incremental GC.
-// This scheme and/or its implementation may be subject to
-// revision in the future.
-
 class CSetChooserCache VALUE_OBJ_CLASS_SPEC {
 private:
   enum {
@@ -103,24 +81,82 @@
 class CollectionSetChooser: public CHeapObj {
 
   GrowableArray<HeapRegion*> _markedRegions;
-  int _curMarkedIndex;
-  int _numMarkedRegions;
-  CSetChooserCache _cache;
+
+  // The index of the next candidate old region to be considered for
+  // addition to the CSet.
+  int _curr_index;
+
+  // The number of candidate old regions added to the CSet chooser.
+  int _length;
 
-  // True iff last collection pause ran of out new "age 0" regions, and
-  // returned an "age 1" region.
-  bool _unmarked_age_1_returned_as_new;
+  CSetChooserCache _cache;
+  jint _first_par_unreserved_idx;
 
-  jint _first_par_unreserved_idx;
+  // If a region has more live bytes than this threshold, it will not
+  // be added to the CSet chooser and will not be a candidate for
+  // collection.
+  size_t _regionLiveThresholdBytes;
+
+  // The sum of reclaimable bytes over all the regions in the CSet chooser.
+  size_t _remainingReclaimableBytes;
 
 public:
 
-  HeapRegion* getNextMarkedRegion(double time_so_far, double avg_prediction);
+  // Return the current candidate region to be considered for
+  // collection without removing it from the CSet chooser.
+  HeapRegion* peek() {
+    HeapRegion* res = NULL;
+    if (_curr_index < _length) {
+      res = _markedRegions.at(_curr_index);
+      assert(res != NULL,
+             err_msg("Unexpected NULL hr in _markedRegions at index %d",
+                     _curr_index));
+    }
+    return res;
+  }
+
+  // Remove the given region from the CSet chooser and move to the
+  // next one. The given region should be the current candidate region
+  // in the CSet chooser.
+  void remove_and_move_to_next(HeapRegion* hr) {
+    assert(hr != NULL, "pre-condition");
+    assert(_curr_index < _length, "pre-condition");
+    assert(_markedRegions.at(_curr_index) == hr, "pre-condition");
+    hr->set_sort_index(-1);
+    _markedRegions.at_put(_curr_index, NULL);
+    assert(hr->reclaimable_bytes() <= _remainingReclaimableBytes,
+           err_msg("remaining reclaimable bytes inconsistent "
+                   "from region: "SIZE_FORMAT" remaining: "SIZE_FORMAT,
+                   hr->reclaimable_bytes(), _remainingReclaimableBytes));
+    _remainingReclaimableBytes -= hr->reclaimable_bytes();
+    _curr_index += 1;
+  }
 
   CollectionSetChooser();
 
   void sortMarkedHeapRegions();
   void fillCache();
+
+  // Determine whether to add the given region to the CSet chooser or
+  // not. Currently, we skip humongous regions (we never add them to
+  // the CSet, we only reclaim them during cleanup) and regions whose
+  // live bytes are over the threshold.
+  bool shouldAdd(HeapRegion* hr) {
+    assert(hr->is_marked(), "pre-condition");
+    assert(!hr->is_young(), "should never consider young regions");
+    return !hr->isHumongous() &&
+            hr->live_bytes() < _regionLiveThresholdBytes;
+  }
+
+  // Calculate the minimum number of old regions we'll add to the CSet
+  // during a mixed GC.
+  size_t calcMinOldCSetLength();
+
+  // Calculate the maximum number of old regions we'll add to the CSet
+  // during a mixed GC.
+  size_t calcMaxOldCSetLength();
+
+  // Serial version.
   void addMarkedHeapRegion(HeapRegion *hr);
 
   // Must be called before calls to getParMarkedHeapRegionChunk.
@@ -133,14 +169,21 @@
   // Set the marked array entry at index to hr.  Careful to claim the index
   // first if in parallel.
   void setMarkedHeapRegion(jint index, HeapRegion* hr);
-  // Atomically increment the number of claimed regions by "inc_by".
-  void incNumMarkedHeapRegions(jint inc_by);
+  // Atomically increment the number of added regions by region_num
+  // and the amount of reclaimable bytes by reclaimable_bytes.
+  void updateTotals(jint region_num, size_t reclaimable_bytes);
 
   void clearMarkedHeapRegions();
 
-  void updateAfterFullCollection();
+  // Return the number of candidate regions that remain to be collected.
+  size_t remainingRegions() { return _length - _curr_index; }
 
-  bool unmarked_age_1_returned_as_new() { return _unmarked_age_1_returned_as_new; }
+  // Determine whether the CSet chooser has more candidate regions or not.
+  bool isEmpty() { return remainingRegions() == 0; }
+
+  // Return the reclaimable bytes that remain to be collected on
+  // all the candidate regions in the CSet chooser.
+  size_t remainingReclaimableBytes () { return _remainingReclaimableBytes; }
 
   // Returns true if the used portion of "_markedRegions" is properly
   // sorted, otherwise asserts false.
@@ -148,9 +191,17 @@
   bool verify(void);
   bool regionProperlyOrdered(HeapRegion* r) {
     int si = r->sort_index();
-    return (si == -1) ||
-      (si > -1 && _markedRegions.at(si) == r) ||
-      (si < -1 && _cache.region_in_cache(r));
+    if (si > -1) {
+      guarantee(_curr_index <= si && si < _length,
+                err_msg("curr: %d sort index: %d: length: %d",
+                        _curr_index, si, _length));
+      guarantee(_markedRegions.at(si) == r,
+                err_msg("sort index: %d at: "PTR_FORMAT" r: "PTR_FORMAT,
+                        si, _markedRegions.at(si), r));
+    } else {
+      guarantee(si == -1, err_msg("sort index: %d", si));
+    }
+    return true;
   }
 #endif
 
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -958,7 +958,7 @@
         should_try_gc = false;
       } else {
         // Read the GC count while still holding the Heap_lock.
-        gc_count_before = SharedHeap::heap()->total_collections();
+        gc_count_before = total_collections();
         should_try_gc = true;
       }
     }
@@ -976,7 +976,7 @@
         // failed to allocate. No point in trying to allocate
         // further. We'll just return NULL.
         MutexLockerEx x(Heap_lock);
-        *gc_count_before_ret = SharedHeap::heap()->total_collections();
+        *gc_count_before_ret = total_collections();
         return NULL;
       }
     } else {
@@ -1031,7 +1031,8 @@
   // the check before we do the actual allocation. The reason for doing it
   // before the allocation is that we avoid having to keep track of the newly
   // allocated memory while we do a GC.
-  if (g1_policy()->need_to_start_conc_mark("concurrent humongous allocation", word_size)) {
+  if (g1_policy()->need_to_start_conc_mark("concurrent humongous allocation",
+                                           word_size)) {
     collect(GCCause::_g1_humongous_allocation);
   }
 
@@ -1059,7 +1060,7 @@
         should_try_gc = false;
       } else {
         // Read the GC count while still holding the Heap_lock.
-        gc_count_before = SharedHeap::heap()->total_collections();
+        gc_count_before = total_collections();
         should_try_gc = true;
       }
     }
@@ -1081,7 +1082,7 @@
         // failed to allocate. No point in trying to allocate
         // further. We'll just return NULL.
         MutexLockerEx x(Heap_lock);
-        *gc_count_before_ret = SharedHeap::heap()->total_collections();
+        *gc_count_before_ret = total_collections();
         return NULL;
       }
     } else {
@@ -2311,10 +2312,12 @@
 }
 
 bool G1CollectedHeap::should_do_concurrent_full_gc(GCCause::Cause cause) {
-  return
-    ((cause == GCCause::_gc_locker           && GCLockerInvokesConcurrent) ||
-     (cause == GCCause::_java_lang_system_gc && ExplicitGCInvokesConcurrent) ||
-      cause == GCCause::_g1_humongous_allocation);
+  switch (cause) {
+    case GCCause::_gc_locker:               return GCLockerInvokesConcurrent;
+    case GCCause::_java_lang_system_gc:     return ExplicitGCInvokesConcurrent;
+    case GCCause::_g1_humongous_allocation: return true;
+    default:                                return false;
+  }
 }
 
 #ifndef PRODUCT
@@ -2408,47 +2411,66 @@
 }
 
 void G1CollectedHeap::collect(GCCause::Cause cause) {
-  // The caller doesn't have the Heap_lock
-  assert(!Heap_lock->owned_by_self(), "this thread should not own the Heap_lock");
+  assert_heap_not_locked();
 
   unsigned int gc_count_before;
   unsigned int full_gc_count_before;
-  {
-    MutexLocker ml(Heap_lock);
-
-    // Read the GC count while holding the Heap_lock
-    gc_count_before = SharedHeap::heap()->total_collections();
-    full_gc_count_before = SharedHeap::heap()->total_full_collections();
-  }
-
-  if (should_do_concurrent_full_gc(cause)) {
-    // Schedule an initial-mark evacuation pause that will start a
-    // concurrent cycle. We're setting word_size to 0 which means that
-    // we are not requesting a post-GC allocation.
-    VM_G1IncCollectionPause op(gc_count_before,
-                               0,     /* word_size */
-                               true,  /* should_initiate_conc_mark */
-                               g1_policy()->max_pause_time_ms(),
-                               cause);
-    VMThread::execute(&op);
-  } else {
-    if (cause == GCCause::_gc_locker
-        DEBUG_ONLY(|| cause == GCCause::_scavenge_alot)) {
-
-      // Schedule a standard evacuation pause. We're setting word_size
-      // to 0 which means that we are not requesting a post-GC allocation.
+  bool retry_gc;
+
+  do {
+    retry_gc = false;
+
+    {
+      MutexLocker ml(Heap_lock);
+
+      // Read the GC count while holding the Heap_lock
+      gc_count_before = total_collections();
+      full_gc_count_before = total_full_collections();
+    }
+
+    if (should_do_concurrent_full_gc(cause)) {
+      // Schedule an initial-mark evacuation pause that will start a
+      // concurrent cycle. We're setting word_size to 0 which means that
+      // we are not requesting a post-GC allocation.
       VM_G1IncCollectionPause op(gc_count_before,
                                  0,     /* word_size */
-                                 false, /* should_initiate_conc_mark */
+                                 true,  /* should_initiate_conc_mark */
                                  g1_policy()->max_pause_time_ms(),
                                  cause);
       VMThread::execute(&op);
+      if (!op.pause_succeeded()) {
+        // Another GC got scheduled and prevented us from scheduling
+        // the initial-mark GC. It's unlikely that the GC that
+        // pre-empted us was also an initial-mark GC. So, we'll retry
+        // the initial-mark GC.
+
+        if (full_gc_count_before == total_full_collections()) {
+          retry_gc = true;
+        } else {
+          // A Full GC happened while we were trying to schedule the
+          // initial-mark GC. No point in starting a new cycle given
+          // that the whole heap was collected anyway.
+        }
+      }
     } else {
-      // Schedule a Full GC.
-      VM_G1CollectFull op(gc_count_before, full_gc_count_before, cause);
-      VMThread::execute(&op);
+      if (cause == GCCause::_gc_locker
+          DEBUG_ONLY(|| cause == GCCause::_scavenge_alot)) {
+
+        // Schedule a standard evacuation pause. We're setting word_size
+        // to 0 which means that we are not requesting a post-GC allocation.
+        VM_G1IncCollectionPause op(gc_count_before,
+                                   0,     /* word_size */
+                                   false, /* should_initiate_conc_mark */
+                                   g1_policy()->max_pause_time_ms(),
+                                   cause);
+        VMThread::execute(&op);
+      } else {
+        // Schedule a Full GC.
+        VM_G1CollectFull op(gc_count_before, full_gc_count_before, cause);
+        VMThread::execute(&op);
+      }
     }
-  }
+  } while (retry_gc);
 }
 
 bool G1CollectedHeap::is_in(const void* p) const {
@@ -3149,12 +3171,12 @@
 
     // We apply the relevant closures to all the oops in the
     // system dictionary, the string table and the code cache.
-    const int so = SharedHeap::SO_AllClasses | SharedHeap::SO_Strings | SharedHeap::SO_CodeCache;
+    const int so = SO_AllClasses | SO_Strings | SO_CodeCache;
 
     process_strong_roots(true,      // activate StrongRootsScope
                          true,      // we set "collecting perm gen" to true,
                                     // so we don't reset the dirty cards in the perm gen.
-                         SharedHeap::ScanningOption(so),  // roots scanning options
+                         ScanningOption(so),  // roots scanning options
                          &rootsCl,
                          &blobsCl,
                          &rootsCl);
@@ -3425,16 +3447,6 @@
   }
 }
 
-double G1CollectedHeap::predict_region_elapsed_time_ms(HeapRegion *hr,
-                                                       bool young) {
-  return _g1_policy->predict_region_elapsed_time_ms(hr, young);
-}
-
-void G1CollectedHeap::check_if_region_is_too_expensive(double
-                                                           predicted_time_ms) {
-  _g1_policy->check_if_region_is_too_expensive(predicted_time_ms);
-}
-
 size_t G1CollectedHeap::pending_card_num() {
   size_t extra_cards = 0;
   JavaThread *curr = Threads::first();
@@ -3706,12 +3718,12 @@
         g1_policy()->print_collection_set(g1_policy()->inc_cset_head(), gclog_or_tty);
 #endif // YOUNG_LIST_VERBOSE
 
-        g1_policy()->choose_collection_set(target_pause_time_ms);
+        g1_policy()->finalize_cset(target_pause_time_ms);
 
         _cm->note_start_of_gc();
         // We should not verify the per-thread SATB buffers given that
         // we have not filtered them yet (we'll do so during the
-        // GC). We also call this after choose_collection_set() to
+        // GC). We also call this after finalize_cset() to
         // ensure that the CSet has been finalized.
         _cm->verify_no_cset_oops(true  /* verify_stacks */,
                                  true  /* verify_enqueued_buffers */,
@@ -4734,7 +4746,7 @@
 void
 G1CollectedHeap::
 g1_process_strong_roots(bool collecting_perm_gen,
-                        SharedHeap::ScanningOption so,
+                        ScanningOption so,
                         OopClosure* scan_non_heap_roots,
                         OopsInHeapRegionClosure* scan_rs,
                         OopsInGenClosure* scan_perm,
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -770,7 +770,7 @@
   // the "i" of the calling parallel worker thread's work(i) function.
   // In the sequential case this param will be ignored.
   void g1_process_strong_roots(bool collecting_perm_gen,
-                               SharedHeap::ScanningOption so,
+                               ScanningOption so,
                                OopClosure* scan_non_heap_roots,
                                OopsInHeapRegionClosure* scan_rs,
                                OopsInGenClosure* scan_perm,
@@ -1182,6 +1182,12 @@
   bool free_regions_coming() { return _free_regions_coming; }
   void wait_while_free_regions_coming();
 
+  // Determine whether the given region is one that we are using as an
+  // old GC alloc region.
+  bool is_old_gc_alloc_region(HeapRegion* hr) {
+    return hr == _retained_old_gc_alloc_region;
+  }
+
   // Perform a collection of the heap; intended for use in implementing
   // "System.gc".  This probably implies as full a collection as the
   // "CollectedHeap" supports.
@@ -1662,8 +1668,6 @@
 public:
   void stop_conc_gc_threads();
 
-  double predict_region_elapsed_time_ms(HeapRegion* hr, bool young);
-  void check_if_region_is_too_expensive(double predicted_time_ms);
   size_t pending_card_num();
   size_t max_pending_card_num();
   size_t cards_scanned();
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -206,7 +206,6 @@
 
   _initiate_conc_mark_if_possible(false),
   _during_initial_mark_pause(false),
-  _should_revert_to_young_gcs(false),
   _last_young_gc(false),
   _last_gc_was_young(false),
 
@@ -295,9 +294,6 @@
   _par_last_gc_worker_times_ms = new double[_parallel_gc_threads];
   _par_last_gc_worker_other_times_ms = new double[_parallel_gc_threads];
 
-  // start conservatively
-  _expensive_region_limit_ms = 0.5 * (double) MaxGCPauseMillis;
-
   int index;
   if (ParallelGCThreads == 0)
     index = 0;
@@ -629,16 +625,9 @@
       // possible to maximize how many old regions we can add to it.
     }
   } else {
-    if (gcs_are_young()) {
-      young_list_target_length = _young_list_fixed_length;
-    } else {
-      // A bit arbitrary: during mixed GCs we allocate half
-      // the young regions to try to add old regions to the CSet.
-      young_list_target_length = _young_list_fixed_length / 2;
-      // We choose to accept that we might go under the desired min
-      // length given that we intentionally ask for a smaller young gen.
-      desired_min_length = absolute_min_length;
-    }
+    // The user asked for a fixed young gen so we'll fix the young gen
+    // whether the next GC is young or mixed.
+    young_list_target_length = _young_list_fixed_length;
   }
 
   // Make sure we don't go over the desired max length, nor under the
@@ -872,7 +861,6 @@
   // transitions and make sure we start with young GCs after the Full GC.
   set_gcs_are_young(true);
   _last_young_gc = false;
-  _should_revert_to_young_gcs = false;
   clear_initiate_conc_mark_if_possible();
   clear_during_initial_mark_pause();
   _known_garbage_bytes = 0;
@@ -889,7 +877,7 @@
   // Reset survivors SurvRateGroup.
   _survivor_surv_rate_group->reset();
   update_young_list_target_length();
-  _collectionSetChooser->updateAfterFullCollection();
+  _collectionSetChooser->clearMarkedHeapRegions();
 }
 
 void G1CollectorPolicy::record_stop_world_start() {
@@ -1000,7 +988,6 @@
 }
 
 void G1CollectorPolicy::record_concurrent_mark_cleanup_completed() {
-  _should_revert_to_young_gcs = false;
   _last_young_gc = true;
   _in_marking_window = false;
 }
@@ -1205,9 +1192,7 @@
   last_pause_included_initial_mark = during_initial_mark_pause();
   if (last_pause_included_initial_mark) {
     record_concurrent_mark_init_end(0.0);
-  }
-
-  if (!_last_young_gc && need_to_start_conc_mark("end of GC")) {
+  } else if (!_last_young_gc && need_to_start_conc_mark("end of GC")) {
     // Note: this might have already been set, if during the last
     // pause we decided to start a cycle but at the beginning of
     // this pause we decided to postpone it. That's OK.
@@ -1492,12 +1477,14 @@
   }
 
   if (_last_young_gc) {
+    // This is supposed to to be the "last young GC" before we start
+    // doing mixed GCs. Here we decide whether to start mixed GCs or not.
+
     if (!last_pause_included_initial_mark) {
-      ergo_verbose2(ErgoMixedGCs,
-                    "start mixed GCs",
-                    ergo_format_byte_perc("known garbage"),
-                    _known_garbage_bytes, _known_garbage_ratio * 100.0);
-      set_gcs_are_young(false);
+      if (next_gc_should_be_mixed("start mixed GCs",
+                                  "do not start mixed GCs")) {
+        set_gcs_are_young(false);
+      }
     } else {
       ergo_verbose0(ErgoMixedGCs,
                     "do not start mixed GCs",
@@ -1507,39 +1494,14 @@
   }
 
   if (!_last_gc_was_young) {
-    if (_should_revert_to_young_gcs) {
-      ergo_verbose2(ErgoMixedGCs,
-                    "end mixed GCs",
-                    ergo_format_reason("mixed GCs end requested")
-                    ergo_format_byte_perc("known garbage"),
-                    _known_garbage_bytes, _known_garbage_ratio * 100.0);
-      set_gcs_are_young(true);
-    } else if (_known_garbage_ratio < 0.05) {
-      ergo_verbose3(ErgoMixedGCs,
-               "end mixed GCs",
-               ergo_format_reason("known garbage percent lower than threshold")
-               ergo_format_byte_perc("known garbage")
-               ergo_format_perc("threshold"),
-               _known_garbage_bytes, _known_garbage_ratio * 100.0,
-               0.05 * 100.0);
-      set_gcs_are_young(true);
-    } else if (adaptive_young_list_length() &&
-              (get_gc_eff_factor() * cur_efficiency < predict_young_gc_eff())) {
-      ergo_verbose5(ErgoMixedGCs,
-                    "end mixed GCs",
-                    ergo_format_reason("current GC efficiency lower than "
-                                       "predicted young GC efficiency")
-                    ergo_format_double("GC efficiency factor")
-                    ergo_format_double("current GC efficiency")
-                    ergo_format_double("predicted young GC efficiency")
-                    ergo_format_byte_perc("known garbage"),
-                    get_gc_eff_factor(), cur_efficiency,
-                    predict_young_gc_eff(),
-                    _known_garbage_bytes, _known_garbage_ratio * 100.0);
+    // This is a mixed GC. Here we decide whether to continue doing
+    // mixed GCs or not.
+
+    if (!next_gc_should_be_mixed("continue mixed GCs",
+                                 "do not continue mixed GCs")) {
       set_gcs_are_young(true);
     }
   }
-  _should_revert_to_young_gcs = false;
 
   if (_last_gc_was_young && !_during_marking) {
     _young_gc_eff_seq->add(cur_efficiency);
@@ -1648,15 +1610,6 @@
 
     _pending_cards_seq->add((double) _pending_cards);
     _rs_lengths_seq->add((double) _max_rs_lengths);
-
-    double expensive_region_limit_ms =
-      (double) MaxGCPauseMillis - predict_constant_other_time_ms();
-    if (expensive_region_limit_ms < 0.0) {
-      // this means that the other time was predicted to be longer than
-      // than the max pause time
-      expensive_region_limit_ms = (double) MaxGCPauseMillis;
-    }
-    _expensive_region_limit_ms = expensive_region_limit_ms;
   }
 
   _in_marking_window = new_in_marking_window;
@@ -1838,13 +1791,11 @@
   if (hr->is_marked())
     bytes_to_copy = hr->max_live_bytes();
   else {
-    guarantee( hr->is_young() && hr->age_in_surv_rate_group() != -1,
-               "invariant" );
+    assert(hr->is_young() && hr->age_in_surv_rate_group() != -1, "invariant");
     int age = hr->age_in_surv_rate_group();
     double yg_surv_rate = predict_yg_surv_rate(age, hr->surv_rate_group());
     bytes_to_copy = (size_t) ((double) hr->used() * yg_surv_rate);
   }
-
   return bytes_to_copy;
 }
 
@@ -1860,22 +1811,6 @@
   _recorded_rs_lengths = rs_lengths;
 }
 
-void G1CollectorPolicy::check_if_region_is_too_expensive(double
-                                                           predicted_time_ms) {
-  // I don't think we need to do this when in young GC mode since
-  // marking will be initiated next time we hit the soft limit anyway...
-  if (predicted_time_ms > _expensive_region_limit_ms) {
-    ergo_verbose2(ErgoMixedGCs,
-              "request mixed GCs end",
-              ergo_format_reason("predicted region time higher than threshold")
-              ergo_format_ms("predicted region time")
-              ergo_format_ms("threshold"),
-              predicted_time_ms, _expensive_region_limit_ms);
-    // no point in doing another mixed GC
-    _should_revert_to_young_gcs = true;
-  }
-}
-
 void G1CollectorPolicy::update_recent_gc_times(double end_time_sec,
                                                double elapsed_ms) {
   _recent_gc_times_ms->add(elapsed_ms);
@@ -2274,12 +2209,12 @@
 }
 
 class KnownGarbageClosure: public HeapRegionClosure {
+  G1CollectedHeap* _g1h;
   CollectionSetChooser* _hrSorted;
 
 public:
   KnownGarbageClosure(CollectionSetChooser* hrSorted) :
-    _hrSorted(hrSorted)
-  {}
+    _g1h(G1CollectedHeap::heap()), _hrSorted(hrSorted) { }
 
   bool doHeapRegion(HeapRegion* r) {
     // We only include humongous regions in collection
@@ -2288,11 +2223,10 @@
 
     // Do we have any marking information for this region?
     if (r->is_marked()) {
-      // We don't include humongous regions in collection
-      // sets because we collect them immediately at the end of a marking
-      // cycle.  We also don't include young regions because we *must*
-      // include them in the next collection pause.
-      if (!r->isHumongous() && !r->is_young()) {
+      // We will skip any region that's currently used as an old GC
+      // alloc region (we should not consider those for collection
+      // before we fill them up).
+      if (_hrSorted->shouldAdd(r) && !_g1h->is_old_gc_alloc_region(r)) {
         _hrSorted->addMarkedHeapRegion(r);
       }
     }
@@ -2301,8 +2235,10 @@
 };
 
 class ParKnownGarbageHRClosure: public HeapRegionClosure {
+  G1CollectedHeap* _g1h;
   CollectionSetChooser* _hrSorted;
   jint _marked_regions_added;
+  size_t _reclaimable_bytes_added;
   jint _chunk_size;
   jint _cur_chunk_idx;
   jint _cur_chunk_end; // Cur chunk [_cur_chunk_idx, _cur_chunk_end)
@@ -2320,6 +2256,7 @@
     assert(_cur_chunk_idx < _cur_chunk_end, "postcondition");
     _hrSorted->setMarkedHeapRegion(_cur_chunk_idx, r);
     _marked_regions_added++;
+    _reclaimable_bytes_added += r->reclaimable_bytes();
     _cur_chunk_idx++;
   }
 
@@ -2327,10 +2264,10 @@
   ParKnownGarbageHRClosure(CollectionSetChooser* hrSorted,
                            jint chunk_size,
                            int worker) :
-    _hrSorted(hrSorted), _chunk_size(chunk_size), _worker(worker),
-    _marked_regions_added(0), _cur_chunk_idx(0), _cur_chunk_end(0),
-    _invokes(0)
-  {}
+      _g1h(G1CollectedHeap::heap()),
+      _hrSorted(hrSorted), _chunk_size(chunk_size), _worker(worker),
+      _marked_regions_added(0), _reclaimable_bytes_added(0),
+      _cur_chunk_idx(0), _cur_chunk_end(0), _invokes(0) { }
 
   bool doHeapRegion(HeapRegion* r) {
     // We only include humongous regions in collection
@@ -2340,17 +2277,17 @@
 
     // Do we have any marking information for this region?
     if (r->is_marked()) {
-      // We don't include humongous regions in collection
-      // sets because we collect them immediately at the end of a marking
-      // cycle.
-      // We also do not include young regions in collection sets
-      if (!r->isHumongous() && !r->is_young()) {
+      // We will skip any region that's currently used as an old GC
+      // alloc region (we should not consider those for collection
+      // before we fill them up).
+      if (_hrSorted->shouldAdd(r) && !_g1h->is_old_gc_alloc_region(r)) {
         add_region(r);
       }
     }
     return false;
   }
   jint marked_regions_added() { return _marked_regions_added; }
+  size_t reclaimable_bytes_added() { return _reclaimable_bytes_added; }
   int invokes() { return _invokes; }
 };
 
@@ -2362,8 +2299,7 @@
   ParKnownGarbageTask(CollectionSetChooser* hrSorted, jint chunk_size) :
     AbstractGangTask("ParKnownGarbageTask"),
     _hrSorted(hrSorted), _chunk_size(chunk_size),
-    _g1(G1CollectedHeap::heap())
-  {}
+    _g1(G1CollectedHeap::heap()) { }
 
   void work(uint worker_id) {
     ParKnownGarbageHRClosure parKnownGarbageCl(_hrSorted,
@@ -2374,7 +2310,9 @@
                                          _g1->workers()->active_workers(),
                                          HeapRegion::InitialClaimValue);
     jint regions_added = parKnownGarbageCl.marked_regions_added();
-    _hrSorted->incNumMarkedHeapRegions(regions_added);
+    size_t reclaimable_bytes_added =
+                                   parKnownGarbageCl.reclaimable_bytes_added();
+    _hrSorted->updateTotals(regions_added, reclaimable_bytes_added);
     if (G1PrintParCleanupStats) {
       gclog_or_tty->print_cr("     Thread %d called %d times, added %d regions to list.",
                  worker_id, parKnownGarbageCl.invokes(), regions_added);
@@ -2658,7 +2596,43 @@
 }
 #endif // !PRODUCT
 
-void G1CollectorPolicy::choose_collection_set(double target_pause_time_ms) {
+bool G1CollectorPolicy::next_gc_should_be_mixed(const char* true_action_str,
+                                                const char* false_action_str) {
+  CollectionSetChooser* cset_chooser = _collectionSetChooser;
+  if (cset_chooser->isEmpty()) {
+    ergo_verbose0(ErgoMixedGCs,
+                  false_action_str,
+                  ergo_format_reason("candidate old regions not available"));
+    return false;
+  }
+  size_t reclaimable_bytes = cset_chooser->remainingReclaimableBytes();
+  size_t capacity_bytes = _g1->capacity();
+  double perc = (double) reclaimable_bytes * 100.0 / (double) capacity_bytes;
+  double threshold = (double) G1OldReclaimableThresholdPercent;
+  if (perc < threshold) {
+    ergo_verbose4(ErgoMixedGCs,
+              false_action_str,
+              ergo_format_reason("reclaimable percentage lower than threshold")
+              ergo_format_region("candidate old regions")
+              ergo_format_byte_perc("reclaimable")
+              ergo_format_perc("threshold"),
+              cset_chooser->remainingRegions(),
+              reclaimable_bytes, perc, threshold);
+    return false;
+  }
+
+  ergo_verbose4(ErgoMixedGCs,
+                true_action_str,
+                ergo_format_reason("candidate old regions available")
+                ergo_format_region("candidate old regions")
+                ergo_format_byte_perc("reclaimable")
+                ergo_format_perc("threshold"),
+                cset_chooser->remainingRegions(),
+                reclaimable_bytes, perc, threshold);
+  return true;
+}
+
+void G1CollectorPolicy::finalize_cset(double target_pause_time_ms) {
   // Set this here - in case we're not doing young collections.
   double non_young_start_time_sec = os::elapsedTime();
 
@@ -2672,7 +2646,6 @@
 
   double base_time_ms = predict_base_elapsed_time_ms(_pending_cards);
   double predicted_pause_time_ms = base_time_ms;
-
   double time_remaining_ms = target_pause_time_ms - base_time_ms;
 
   ergo_verbose3(ErgoCSetConstruction | ErgoHigh,
@@ -2682,22 +2655,6 @@
                 ergo_format_ms("target pause time"),
                 base_time_ms, time_remaining_ms, target_pause_time_ms);
 
-  // the 10% and 50% values are arbitrary...
-  double threshold = 0.10 * target_pause_time_ms;
-  if (time_remaining_ms < threshold) {
-    double prev_time_remaining_ms = time_remaining_ms;
-    time_remaining_ms = 0.50 * target_pause_time_ms;
-    ergo_verbose3(ErgoCSetConstruction,
-                  "adjust remaining time",
-                  ergo_format_reason("remaining time lower than threshold")
-                  ergo_format_ms("remaining time")
-                  ergo_format_ms("threshold")
-                  ergo_format_ms("adjusted remaining time"),
-                  prev_time_remaining_ms, threshold, time_remaining_ms);
-  }
-
-  size_t expansion_bytes = _g1->expansion_regions() * HeapRegion::GrainBytes;
-
   HeapRegion* hr;
   double young_start_time_sec = os::elapsedTime();
 
@@ -2752,78 +2709,97 @@
   non_young_start_time_sec = young_end_time_sec;
 
   if (!gcs_are_young()) {
-    bool should_continue = true;
-    NumberSeq seq;
-    double avg_prediction = 100000000000000000.0; // something very large
-
-    double prev_predicted_pause_time_ms = predicted_pause_time_ms;
-    do {
-      // Note that add_old_region_to_cset() increments the
-      // _old_cset_region_length field and cset_region_length() returns the
-      // sum of _eden_cset_region_length, _survivor_cset_region_length, and
-      // _old_cset_region_length. So, as old regions are added to the
-      // CSet, _old_cset_region_length will be incremented and
-      // cset_region_length(), which is used below, will always reflect
-      // the the total number of regions added up to this point to the CSet.
-
-      hr = _collectionSetChooser->getNextMarkedRegion(time_remaining_ms,
-                                                      avg_prediction);
-      if (hr != NULL) {
-        _g1->old_set_remove(hr);
-        double predicted_time_ms = predict_region_elapsed_time_ms(hr, false);
-        time_remaining_ms -= predicted_time_ms;
-        predicted_pause_time_ms += predicted_time_ms;
-        add_old_region_to_cset(hr);
-        seq.add(predicted_time_ms);
-        avg_prediction = seq.avg() + seq.sd();
+    CollectionSetChooser* cset_chooser = _collectionSetChooser;
+    assert(cset_chooser->verify(), "CSet Chooser verification - pre");
+    const size_t min_old_cset_length = cset_chooser->calcMinOldCSetLength();
+    const size_t max_old_cset_length = cset_chooser->calcMaxOldCSetLength();
+
+    size_t expensive_region_num = 0;
+    bool check_time_remaining = adaptive_young_list_length();
+    HeapRegion* hr = cset_chooser->peek();
+    while (hr != NULL) {
+      if (old_cset_region_length() >= max_old_cset_length) {
+        // Added maximum number of old regions to the CSet.
+        ergo_verbose2(ErgoCSetConstruction,
+                      "finish adding old regions to CSet",
+                      ergo_format_reason("old CSet region num reached max")
+                      ergo_format_region("old")
+                      ergo_format_region("max"),
+                      old_cset_region_length(), max_old_cset_length);
+        break;
       }
 
-      should_continue = true;
-      if (hr == NULL) {
-        // No need for an ergo verbose message here,
-        // getNextMarkRegion() does this when it returns NULL.
-        should_continue = false;
+      double predicted_time_ms = predict_region_elapsed_time_ms(hr, false);
+      if (check_time_remaining) {
+        if (predicted_time_ms > time_remaining_ms) {
+          // Too expensive for the current CSet.
+
+          if (old_cset_region_length() >= min_old_cset_length) {
+            // We have added the minimum number of old regions to the CSet,
+            // we are done with this CSet.
+            ergo_verbose4(ErgoCSetConstruction,
+                          "finish adding old regions to CSet",
+                          ergo_format_reason("predicted time is too high")
+                          ergo_format_ms("predicted time")
+                          ergo_format_ms("remaining time")
+                          ergo_format_region("old")
+                          ergo_format_region("min"),
+                          predicted_time_ms, time_remaining_ms,
+                          old_cset_region_length(), min_old_cset_length);
+            break;
+          }
+
+          // We'll add it anyway given that we haven't reached the
+          // minimum number of old regions.
+          expensive_region_num += 1;
+        }
       } else {
-        if (adaptive_young_list_length()) {
-          if (time_remaining_ms < 0.0) {
-            ergo_verbose1(ErgoCSetConstruction,
-                          "stop adding old regions to CSet",
-                          ergo_format_reason("remaining time is lower than 0")
-                          ergo_format_ms("remaining time"),
-                          time_remaining_ms);
-            should_continue = false;
-          }
-        } else {
-          if (cset_region_length() >= _young_list_fixed_length) {
-            ergo_verbose2(ErgoCSetConstruction,
-                          "stop adding old regions to CSet",
-                          ergo_format_reason("CSet length reached target")
-                          ergo_format_region("CSet")
-                          ergo_format_region("young target"),
-                          cset_region_length(), _young_list_fixed_length);
-            should_continue = false;
-          }
+        if (old_cset_region_length() >= min_old_cset_length) {
+          // In the non-auto-tuning case, we'll finish adding regions
+          // to the CSet if we reach the minimum.
+          ergo_verbose2(ErgoCSetConstruction,
+                        "finish adding old regions to CSet",
+                        ergo_format_reason("old CSet region num reached min")
+                        ergo_format_region("old")
+                        ergo_format_region("min"),
+                        old_cset_region_length(), min_old_cset_length);
+          break;
         }
       }
-    } while (should_continue);
-
-    if (!adaptive_young_list_length() &&
-        cset_region_length() < _young_list_fixed_length) {
-      ergo_verbose2(ErgoCSetConstruction,
-                    "request mixed GCs end",
-                    ergo_format_reason("CSet length lower than target")
-                    ergo_format_region("CSet")
-                    ergo_format_region("young target"),
-                    cset_region_length(), _young_list_fixed_length);
-      _should_revert_to_young_gcs  = true;
+
+      // We will add this region to the CSet.
+      time_remaining_ms -= predicted_time_ms;
+      predicted_pause_time_ms += predicted_time_ms;
+      cset_chooser->remove_and_move_to_next(hr);
+      _g1->old_set_remove(hr);
+      add_old_region_to_cset(hr);
+
+      hr = cset_chooser->peek();
+    }
+    if (hr == NULL) {
+      ergo_verbose0(ErgoCSetConstruction,
+                    "finish adding old regions to CSet",
+                    ergo_format_reason("candidate old regions not available"));
     }
 
-    ergo_verbose2(ErgoCSetConstruction | ErgoHigh,
-                  "add old regions to CSet",
-                  ergo_format_region("old")
-                  ergo_format_ms("predicted old region time"),
-                  old_cset_region_length(),
-                  predicted_pause_time_ms - prev_predicted_pause_time_ms);
+    if (expensive_region_num > 0) {
+      // We print the information once here at the end, predicated on
+      // whether we added any apparently expensive regions or not, to
+      // avoid generating output per region.
+      ergo_verbose4(ErgoCSetConstruction,
+                    "added expensive regions to CSet",
+                    ergo_format_reason("old CSet region num not reached min")
+                    ergo_format_region("old")
+                    ergo_format_region("expensive")
+                    ergo_format_region("min")
+                    ergo_format_ms("remaining time"),
+                    old_cset_region_length(),
+                    expensive_region_num,
+                    min_old_cset_length,
+                    time_remaining_ms);
+    }
+
+    assert(cset_chooser->verify(), "CSet Chooser verification - post");
   }
 
   stop_incremental_cset_building();
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -312,16 +312,13 @@
   double _recorded_non_young_free_cset_time_ms;
 
   double _sigma;
-  double _expensive_region_limit_ms;
 
   size_t _rs_lengths_prediction;
 
   size_t _known_garbage_bytes;
   double _known_garbage_ratio;
 
-  double sigma() {
-    return _sigma;
-  }
+  double sigma() { return _sigma; }
 
   // A function that prevents us putting too much stock in small sample
   // sets.  Returns a number between 2.0 and 1.0, depending on the number
@@ -491,8 +488,6 @@
            get_new_prediction(_non_young_other_cost_per_region_ms_seq);
   }
 
-  void check_if_region_is_too_expensive(double predicted_time_ms);
-
   double predict_young_collection_elapsed_time_ms(size_t adjustment);
   double predict_base_elapsed_time_ms(size_t pending_cards);
   double predict_base_elapsed_time_ms(size_t pending_cards,
@@ -707,7 +702,6 @@
   // initial-mark work.
   volatile bool _during_initial_mark_pause;
 
-  bool _should_revert_to_young_gcs;
   bool _last_young_gc;
 
   // This set of variables tracks the collector efficiency, in order to
@@ -946,10 +940,17 @@
     return _bytes_copied_during_gc;
   }
 
+  // Determine whether the next GC should be mixed. Called to determine
+  // whether to start mixed GCs or whether to carry on doing mixed
+  // GCs. The two action strings are used in the ergo output when the
+  // method returns true or false.
+  bool next_gc_should_be_mixed(const char* true_action_str,
+                               const char* false_action_str);
+
   // Choose a new collection set.  Marks the chosen regions as being
   // "in_collection_set", and links them together.  The head and number of
   // the collection set are available via access methods.
-  void choose_collection_set(double target_pause_time_ms);
+  void finalize_cset(double target_pause_time_ms);
 
   // The head of the list (via "next_in_collection_set()") representing the
   // current collection set.
--- a/hotspot/src/share/vm/gc_implementation/g1/g1ErgoVerbose.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1ErgoVerbose.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -131,8 +131,8 @@
                              ", " _name_ ": "SIZE_FORMAT" bytes (%1.2f %%)"
 
 // Generates the format string
-#define ergo_format(_action_, _extra_format_)                   \
-  " %1.3f: [G1Ergonomics (%s) " _action_ _extra_format_ "]"
+#define ergo_format(_extra_format_)                           \
+  " %1.3f: [G1Ergonomics (%s) %s" _extra_format_ "]"
 
 // Conditionally, prints an ergonomic decision record. _extra_format_
 // is the format string for the optional items we'd like to print
@@ -145,20 +145,21 @@
 // them to the print method. For convenience, we have wrapper macros
 // below which take a specific number of arguments and set the rest to
 // a default value.
-#define ergo_verbose_common(_tag_, _action_, _extra_format_,            \
+#define ergo_verbose_common(_tag_, _action_, _extra_format_,                \
                             _arg0_, _arg1_, _arg2_, _arg3_, _arg4_, _arg5_) \
-  do {                                                                  \
-    if (G1ErgoVerbose::enabled((_tag_))) {                              \
-      gclog_or_tty->print_cr(ergo_format(_action_, _extra_format_),     \
-                             os::elapsedTime(),                         \
-                             G1ErgoVerbose::to_string((_tag_)),         \
-                             (_arg0_), (_arg1_), (_arg2_),              \
-                             (_arg3_), (_arg4_), (_arg5_));             \
-    }                                                                   \
+  do {                                                                      \
+    if (G1ErgoVerbose::enabled((_tag_))) {                                  \
+      gclog_or_tty->print_cr(ergo_format(_extra_format_),                   \
+                             os::elapsedTime(),                             \
+                             G1ErgoVerbose::to_string((_tag_)),             \
+                             (_action_),                                    \
+                             (_arg0_), (_arg1_), (_arg2_),                  \
+                             (_arg3_), (_arg4_), (_arg5_));                 \
+    }                                                                       \
   } while (0)
 
 
-#define ergo_verbose(_tag_, _action_)                           \
+#define ergo_verbose(_tag_, _action_)                                   \
   ergo_verbose_common(_tag_, _action_, "", 0, 0, 0, 0, 0, 0)
 
 #define ergo_verbose0(_tag_, _action_, _extra_format_)                  \
--- a/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -297,7 +297,23 @@
                                                                             \
   develop(uintx, G1DefaultMaxNewGenPercent, 80,                             \
           "Percentage (0-100) of the heap size to use as maximum "          \
-          "young gen size.")
+          "young gen size.")                                                \
+                                                                            \
+  develop(uintx, G1OldCSetRegionLiveThresholdPercent, 95,                   \
+          "Threshold for regions to be added to the collection set. "       \
+          "Regions with more live bytes that this will not be collected.")  \
+                                                                            \
+  develop(uintx, G1OldReclaimableThresholdPercent, 1,                       \
+          "Threshold for the remaining old reclaimable bytes, expressed "   \
+          "as a percentage of the heap size. If the old reclaimable bytes " \
+          "are under this we will not collect them with more mixed GCs.")   \
+                                                                            \
+  develop(uintx, G1MaxMixedGCNum, 4,                                        \
+          "The maximum desired number of mixed GCs after a marking cycle.") \
+                                                                            \
+  develop(uintx, G1OldCSetRegionThresholdPercent, 10,                       \
+          "An upper bound for the number of old CSet regions expressed "    \
+          "as a percentage of the heap size.")
 
 G1_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG)
 
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -387,13 +387,12 @@
   ct_bs->clear(MemRegion(bottom(), end()));
 }
 
-// <PREDICTION>
 void HeapRegion::calc_gc_efficiency() {
   G1CollectedHeap* g1h = G1CollectedHeap::heap();
-  _gc_efficiency = (double) garbage_bytes() /
-                            g1h->predict_region_elapsed_time_ms(this, false);
+  G1CollectorPolicy* g1p = g1h->g1_policy();
+  _gc_efficiency = (double) reclaimable_bytes() /
+                            g1p->predict_region_elapsed_time_ms(this, false);
 }
-// </PREDICTION>
 
 void HeapRegion::set_startsHumongous(HeapWord* new_top, HeapWord* new_end) {
   assert(!isHumongous(), "sanity / pre-condition");
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -415,6 +415,16 @@
     return used_at_mark_start_bytes - marked_bytes();
   }
 
+  // Return the amount of bytes we'll reclaim if we collect this
+  // region. This includes not only the known garbage bytes in the
+  // region but also any unallocated space in it, i.e., [top, end),
+  // since it will also be reclaimed if we collect the region.
+  size_t reclaimable_bytes() {
+    size_t known_live_bytes = live_bytes();
+    assert(known_live_bytes <= capacity(), "sanity");
+    return capacity() - known_live_bytes;
+  }
+
   // An upper bound on the number of live bytes in the region.
   size_t max_live_bytes() { return used() - garbage_bytes(); }
 
@@ -648,10 +658,8 @@
     init_top_at_mark_start();
   }
 
-  // <PREDICTION>
   void calc_gc_efficiency(void);
   double gc_efficiency() { return _gc_efficiency;}
-  // </PREDICTION>
 
   bool is_young() const     { return _young_type != NotYoung; }
   bool is_survivor() const  { return _young_type == Survivor; }
--- a/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1042,7 +1042,11 @@
     size_policy->avg_survived()->sample(from()->used());
   }
 
-  update_time_of_last_gc(os::javaTimeMillis());
+  // We need to use a monotonically non-deccreasing time in ms
+  // or we will see time-warp warnings and os::javaTimeMillis()
+  // does not guarantee monotonicity.
+  jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
+  update_time_of_last_gc(now);
 
   SpecializationStats::print();
 
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -418,25 +418,17 @@
       gc_count = Universe::heap()->total_collections();
 
       result = young_gen()->allocate(size);
-
-      // (1) If the requested object is too large to easily fit in the
-      //     young_gen, or
-      // (2) If GC is locked out via GCLocker, young gen is full and
-      //     the need for a GC already signalled to GCLocker (done
-      //     at a safepoint),
-      // ... then, rather than force a safepoint and (a potentially futile)
-      // collection (attempt) for each allocation, try allocation directly
-      // in old_gen. For case (2) above, we may in the future allow
-      // TLAB allocation directly in the old gen.
       if (result != NULL) {
         return result;
       }
-      if (size >= (young_gen()->eden_space()->capacity_in_words(Thread::current()) / 2)) {
-        result = old_gen()->allocate(size);
-        if (result != NULL) {
-          return result;
-        }
+
+      // If certain conditions hold, try allocating from the old gen.
+      result = mem_allocate_old_gen(size);
+      if (result != NULL) {
+        return result;
       }
+
+      // Failed to allocate without a gc.
       if (GC_locker::is_active_and_needs_gc()) {
         // If this thread is not in a jni critical section, we stall
         // the requestor until the critical section has cleared and
@@ -460,7 +452,6 @@
     }
 
     if (result == NULL) {
-
       // Generate a VM operation
       VM_ParallelGCFailedAllocation op(size, gc_count);
       VMThread::execute(&op);
@@ -523,6 +514,42 @@
   return result;
 }
 
+// A "death march" is a series of ultra-slow allocations in which a full gc is
+// done before each allocation, and after the full gc the allocation still
+// cannot be satisfied from the young gen.  This routine detects that condition;
+// it should be called after a full gc has been done and the allocation
+// attempted from the young gen. The parameter 'addr' should be the result of
+// that young gen allocation attempt.
+void
+ParallelScavengeHeap::death_march_check(HeapWord* const addr, size_t size) {
+  if (addr != NULL) {
+    _death_march_count = 0;  // death march has ended
+  } else if (_death_march_count == 0) {
+    if (should_alloc_in_eden(size)) {
+      _death_march_count = 1;    // death march has started
+    }
+  }
+}
+
+HeapWord* ParallelScavengeHeap::mem_allocate_old_gen(size_t size) {
+  if (!should_alloc_in_eden(size) || GC_locker::is_active_and_needs_gc()) {
+    // Size is too big for eden, or gc is locked out.
+    return old_gen()->allocate(size);
+  }
+
+  // If a "death march" is in progress, allocate from the old gen a limited
+  // number of times before doing a GC.
+  if (_death_march_count > 0) {
+    if (_death_march_count < 64) {
+      ++_death_march_count;
+      return old_gen()->allocate(size);
+    } else {
+      _death_march_count = 0;
+    }
+  }
+  return NULL;
+}
+
 // Failed allocation policy. Must be called from the VM thread, and
 // only at a safepoint! Note that this method has policy for allocation
 // flow, and NOT collection policy. So we do not check for gc collection
@@ -535,27 +562,22 @@
   assert(!Universe::heap()->is_gc_active(), "not reentrant");
   assert(!Heap_lock->owned_by_self(), "this thread should not own the Heap_lock");
 
-  size_t mark_sweep_invocation_count = total_invocations();
-
-  // We assume (and assert!) that an allocation at this point will fail
-  // unless we collect.
+  // We assume that allocation in eden will fail unless we collect.
 
   // First level allocation failure, scavenge and allocate in young gen.
   GCCauseSetter gccs(this, GCCause::_allocation_failure);
-  PSScavenge::invoke();
+  const bool invoked_full_gc = PSScavenge::invoke();
   HeapWord* result = young_gen()->allocate(size);
 
   // Second level allocation failure.
   //   Mark sweep and allocate in young generation.
-  if (result == NULL) {
-    // There is some chance the scavenge method decided to invoke mark_sweep.
-    // Don't mark sweep twice if so.
-    if (mark_sweep_invocation_count == total_invocations()) {
-      invoke_full_gc(false);
-      result = young_gen()->allocate(size);
-    }
+  if (result == NULL && !invoked_full_gc) {
+    invoke_full_gc(false);
+    result = young_gen()->allocate(size);
   }
 
+  death_march_check(result, size);
+
   // Third level allocation failure.
   //   After mark sweep and young generation allocation failure,
   //   allocate in old generation.
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -64,6 +64,7 @@
   // Collection of generations that are adjacent in the
   // space reserved for the heap.
   AdjoiningGenerations* _gens;
+  unsigned int _death_march_count;
 
   static GCTaskManager*          _gc_task_manager;      // The task manager.
 
@@ -71,8 +72,13 @@
   static inline size_t total_invocations();
   HeapWord* allocate_new_tlab(size_t size);
 
+  inline bool should_alloc_in_eden(size_t size) const;
+  inline void death_march_check(HeapWord* const result, size_t size);
+  HeapWord* mem_allocate_old_gen(size_t size);
+
  public:
   ParallelScavengeHeap() : CollectedHeap() {
+    _death_march_count = 0;
     set_alignment(_perm_gen_alignment, intra_heap_alignment());
     set_alignment(_young_gen_alignment, intra_heap_alignment());
     set_alignment(_old_gen_alignment, intra_heap_alignment());
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.inline.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.inline.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -36,6 +36,12 @@
     PSMarkSweep::total_invocations();
 }
 
+inline bool ParallelScavengeHeap::should_alloc_in_eden(const size_t size) const
+{
+  const size_t eden_size = young_gen()->eden_space()->capacity_in_words();
+  return size < eden_size / 2;
+}
+
 inline void ParallelScavengeHeap::invoke_scavenge()
 {
   PSScavenge::invoke();
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -100,12 +100,12 @@
 
 // This method contains no policy. You should probably
 // be calling invoke() instead.
-void PSMarkSweep::invoke_no_policy(bool clear_all_softrefs) {
+bool PSMarkSweep::invoke_no_policy(bool clear_all_softrefs) {
   assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint");
   assert(ref_processor() != NULL, "Sanity");
 
   if (GC_locker::check_active_before_gc()) {
-    return;
+    return false;
   }
 
   ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
@@ -382,6 +382,8 @@
 #ifdef TRACESPINNING
   ParallelTaskTerminator::print_termination_counts();
 #endif
+
+  return true;
 }
 
 bool PSMarkSweep::absorb_live_data_from_eden(PSAdaptiveSizePolicy* size_policy,
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -78,7 +78,7 @@
 
  public:
   static void invoke(bool clear_all_softrefs);
-  static void invoke_no_policy(bool clear_all_softrefs);
+  static bool invoke_no_policy(bool clear_all_softrefs);
 
   static void initialize();
 
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1993,12 +1993,12 @@
 
 // This method contains no policy. You should probably
 // be calling invoke() instead.
-void PSParallelCompact::invoke_no_policy(bool maximum_heap_compaction) {
+bool PSParallelCompact::invoke_no_policy(bool maximum_heap_compaction) {
   assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint");
   assert(ref_processor() != NULL, "Sanity");
 
   if (GC_locker::check_active_before_gc()) {
-    return;
+    return false;
   }
 
   TimeStamp marking_start;
@@ -2248,6 +2248,8 @@
 #ifdef TRACESPINNING
   ParallelTaskTerminator::print_termination_counts();
 #endif
+
+  return true;
 }
 
 bool PSParallelCompact::absorb_live_data_from_eden(PSAdaptiveSizePolicy* size_policy,
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1057,7 +1057,7 @@
   }
 
   static void invoke(bool maximum_heap_compaction);
-  static void invoke_no_policy(bool maximum_heap_compaction);
+  static bool invoke_no_policy(bool maximum_heap_compaction);
 
   static void post_initialize();
   // Perform initialization for PSParallelCompact that requires
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -247,167 +247,6 @@
   }
 }
 
-//
-// This method is pretty bulky. It would be nice to split it up
-// into smaller submethods, but we need to be careful not to hurt
-// performance.
-//
-
-oop PSPromotionManager::copy_to_survivor_space(oop o) {
-  assert(PSScavenge::should_scavenge(&o), "Sanity");
-
-  oop new_obj = NULL;
-
-  // NOTE! We must be very careful with any methods that access the mark
-  // in o. There may be multiple threads racing on it, and it may be forwarded
-  // at any time. Do not use oop methods for accessing the mark!
-  markOop test_mark = o->mark();
-
-  // The same test as "o->is_forwarded()"
-  if (!test_mark->is_marked()) {
-    bool new_obj_is_tenured = false;
-    size_t new_obj_size = o->size();
-
-    // Find the objects age, MT safe.
-    int age = (test_mark->has_displaced_mark_helper() /* o->has_displaced_mark() */) ?
-      test_mark->displaced_mark_helper()->age() : test_mark->age();
-
-    // Try allocating obj in to-space (unless too old)
-    if (age < PSScavenge::tenuring_threshold()) {
-      new_obj = (oop) _young_lab.allocate(new_obj_size);
-      if (new_obj == NULL && !_young_gen_is_full) {
-        // Do we allocate directly, or flush and refill?
-        if (new_obj_size > (YoungPLABSize / 2)) {
-          // Allocate this object directly
-          new_obj = (oop)young_space()->cas_allocate(new_obj_size);
-        } else {
-          // Flush and fill
-          _young_lab.flush();
-
-          HeapWord* lab_base = young_space()->cas_allocate(YoungPLABSize);
-          if (lab_base != NULL) {
-            _young_lab.initialize(MemRegion(lab_base, YoungPLABSize));
-            // Try the young lab allocation again.
-            new_obj = (oop) _young_lab.allocate(new_obj_size);
-          } else {
-            _young_gen_is_full = true;
-          }
-        }
-      }
-    }
-
-    // Otherwise try allocating obj tenured
-    if (new_obj == NULL) {
-#ifndef PRODUCT
-      if (Universe::heap()->promotion_should_fail()) {
-        return oop_promotion_failed(o, test_mark);
-      }
-#endif  // #ifndef PRODUCT
-
-      new_obj = (oop) _old_lab.allocate(new_obj_size);
-      new_obj_is_tenured = true;
-
-      if (new_obj == NULL) {
-        if (!_old_gen_is_full) {
-          // Do we allocate directly, or flush and refill?
-          if (new_obj_size > (OldPLABSize / 2)) {
-            // Allocate this object directly
-            new_obj = (oop)old_gen()->cas_allocate(new_obj_size);
-          } else {
-            // Flush and fill
-            _old_lab.flush();
-
-            HeapWord* lab_base = old_gen()->cas_allocate(OldPLABSize);
-            if(lab_base != NULL) {
-              _old_lab.initialize(MemRegion(lab_base, OldPLABSize));
-              // Try the old lab allocation again.
-              new_obj = (oop) _old_lab.allocate(new_obj_size);
-            }
-          }
-        }
-
-        // This is the promotion failed test, and code handling.
-        // The code belongs here for two reasons. It is slightly
-        // different thatn the code below, and cannot share the
-        // CAS testing code. Keeping the code here also minimizes
-        // the impact on the common case fast path code.
-
-        if (new_obj == NULL) {
-          _old_gen_is_full = true;
-          return oop_promotion_failed(o, test_mark);
-        }
-      }
-    }
-
-    assert(new_obj != NULL, "allocation should have succeeded");
-
-    // Copy obj
-    Copy::aligned_disjoint_words((HeapWord*)o, (HeapWord*)new_obj, new_obj_size);
-
-    // Now we have to CAS in the header.
-    if (o->cas_forward_to(new_obj, test_mark)) {
-      // We won any races, we "own" this object.
-      assert(new_obj == o->forwardee(), "Sanity");
-
-      // Increment age if obj still in new generation. Now that
-      // we're dealing with a markOop that cannot change, it is
-      // okay to use the non mt safe oop methods.
-      if (!new_obj_is_tenured) {
-        new_obj->incr_age();
-        assert(young_space()->contains(new_obj), "Attempt to push non-promoted obj");
-      }
-
-      // Do the size comparison first with new_obj_size, which we
-      // already have. Hopefully, only a few objects are larger than
-      // _min_array_size_for_chunking, and most of them will be arrays.
-      // So, the is->objArray() test would be very infrequent.
-      if (new_obj_size > _min_array_size_for_chunking &&
-          new_obj->is_objArray() &&
-          PSChunkLargeArrays) {
-        // we'll chunk it
-        oop* const masked_o = mask_chunked_array_oop(o);
-        push_depth(masked_o);
-        TASKQUEUE_STATS_ONLY(++_arrays_chunked; ++_masked_pushes);
-      } else {
-        // we'll just push its contents
-        new_obj->push_contents(this);
-      }
-    }  else {
-      // We lost, someone else "owns" this object
-      guarantee(o->is_forwarded(), "Object must be forwarded if the cas failed.");
-
-      // Try to deallocate the space.  If it was directly allocated we cannot
-      // deallocate it, so we have to test.  If the deallocation fails,
-      // overwrite with a filler object.
-      if (new_obj_is_tenured) {
-        if (!_old_lab.unallocate_object((HeapWord*) new_obj, new_obj_size)) {
-          CollectedHeap::fill_with_object((HeapWord*) new_obj, new_obj_size);
-        }
-      } else if (!_young_lab.unallocate_object((HeapWord*) new_obj, new_obj_size)) {
-        CollectedHeap::fill_with_object((HeapWord*) new_obj, new_obj_size);
-      }
-
-      // don't update this before the unallocation!
-      new_obj = o->forwardee();
-    }
-  } else {
-    assert(o->is_forwarded(), "Sanity");
-    new_obj = o->forwardee();
-  }
-
-#ifdef DEBUG
-  // This code must come after the CAS test, or it will print incorrect
-  // information.
-  if (TraceScavenge) {
-    gclog_or_tty->print_cr("{%s %s " PTR_FORMAT " -> " PTR_FORMAT " (" SIZE_FORMAT ")}",
-       PSScavenge::should_scavenge(&new_obj) ? "copying" : "tenuring",
-       new_obj->blueprint()->internal_name(), o, new_obj, new_obj->size());
-  }
-#endif
-
-  return new_obj;
-}
-
 template <class T> void PSPromotionManager::process_array_chunk_work(
                                                  oop obj,
                                                  int start, int end) {
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -171,7 +171,7 @@
   void set_old_gen_is_full(bool state) { _old_gen_is_full = state; }
 
   // Promotion methods
-  oop copy_to_survivor_space(oop o);
+  template<bool promote_immediately> oop copy_to_survivor_space(oop o);
   oop oop_promotion_failed(oop obj, markOop obj_mark);
 
   void reset();
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -61,6 +61,170 @@
   claim_or_forward_internal_depth(p);
 }
 
+//
+// This method is pretty bulky. It would be nice to split it up
+// into smaller submethods, but we need to be careful not to hurt
+// performance.
+//
+template<bool promote_immediately>
+oop PSPromotionManager::copy_to_survivor_space(oop o) {
+  assert(PSScavenge::should_scavenge(&o), "Sanity");
+
+  oop new_obj = NULL;
+
+  // NOTE! We must be very careful with any methods that access the mark
+  // in o. There may be multiple threads racing on it, and it may be forwarded
+  // at any time. Do not use oop methods for accessing the mark!
+  markOop test_mark = o->mark();
+
+  // The same test as "o->is_forwarded()"
+  if (!test_mark->is_marked()) {
+    bool new_obj_is_tenured = false;
+    size_t new_obj_size = o->size();
+
+    if (!promote_immediately) {
+      // Find the objects age, MT safe.
+      int age = (test_mark->has_displaced_mark_helper() /* o->has_displaced_mark() */) ?
+        test_mark->displaced_mark_helper()->age() : test_mark->age();
+
+      // Try allocating obj in to-space (unless too old)
+      if (age < PSScavenge::tenuring_threshold()) {
+        new_obj = (oop) _young_lab.allocate(new_obj_size);
+        if (new_obj == NULL && !_young_gen_is_full) {
+          // Do we allocate directly, or flush and refill?
+          if (new_obj_size > (YoungPLABSize / 2)) {
+            // Allocate this object directly
+            new_obj = (oop)young_space()->cas_allocate(new_obj_size);
+          } else {
+            // Flush and fill
+            _young_lab.flush();
+
+            HeapWord* lab_base = young_space()->cas_allocate(YoungPLABSize);
+            if (lab_base != NULL) {
+              _young_lab.initialize(MemRegion(lab_base, YoungPLABSize));
+              // Try the young lab allocation again.
+              new_obj = (oop) _young_lab.allocate(new_obj_size);
+            } else {
+              _young_gen_is_full = true;
+            }
+          }
+        }
+      }
+    }
+
+    // Otherwise try allocating obj tenured
+    if (new_obj == NULL) {
+#ifndef PRODUCT
+      if (Universe::heap()->promotion_should_fail()) {
+        return oop_promotion_failed(o, test_mark);
+      }
+#endif  // #ifndef PRODUCT
+
+      new_obj = (oop) _old_lab.allocate(new_obj_size);
+      new_obj_is_tenured = true;
+
+      if (new_obj == NULL) {
+        if (!_old_gen_is_full) {
+          // Do we allocate directly, or flush and refill?
+          if (new_obj_size > (OldPLABSize / 2)) {
+            // Allocate this object directly
+            new_obj = (oop)old_gen()->cas_allocate(new_obj_size);
+          } else {
+            // Flush and fill
+            _old_lab.flush();
+
+            HeapWord* lab_base = old_gen()->cas_allocate(OldPLABSize);
+            if(lab_base != NULL) {
+              _old_lab.initialize(MemRegion(lab_base, OldPLABSize));
+              // Try the old lab allocation again.
+              new_obj = (oop) _old_lab.allocate(new_obj_size);
+            }
+          }
+        }
+
+        // This is the promotion failed test, and code handling.
+        // The code belongs here for two reasons. It is slightly
+        // different thatn the code below, and cannot share the
+        // CAS testing code. Keeping the code here also minimizes
+        // the impact on the common case fast path code.
+
+        if (new_obj == NULL) {
+          _old_gen_is_full = true;
+          return oop_promotion_failed(o, test_mark);
+        }
+      }
+    }
+
+    assert(new_obj != NULL, "allocation should have succeeded");
+
+    // Copy obj
+    Copy::aligned_disjoint_words((HeapWord*)o, (HeapWord*)new_obj, new_obj_size);
+
+    // Now we have to CAS in the header.
+    if (o->cas_forward_to(new_obj, test_mark)) {
+      // We won any races, we "own" this object.
+      assert(new_obj == o->forwardee(), "Sanity");
+
+      // Increment age if obj still in new generation. Now that
+      // we're dealing with a markOop that cannot change, it is
+      // okay to use the non mt safe oop methods.
+      if (!new_obj_is_tenured) {
+        new_obj->incr_age();
+        assert(young_space()->contains(new_obj), "Attempt to push non-promoted obj");
+      }
+
+      // Do the size comparison first with new_obj_size, which we
+      // already have. Hopefully, only a few objects are larger than
+      // _min_array_size_for_chunking, and most of them will be arrays.
+      // So, the is->objArray() test would be very infrequent.
+      if (new_obj_size > _min_array_size_for_chunking &&
+          new_obj->is_objArray() &&
+          PSChunkLargeArrays) {
+        // we'll chunk it
+        oop* const masked_o = mask_chunked_array_oop(o);
+        push_depth(masked_o);
+        TASKQUEUE_STATS_ONLY(++_arrays_chunked; ++_masked_pushes);
+      } else {
+        // we'll just push its contents
+        new_obj->push_contents(this);
+      }
+    }  else {
+      // We lost, someone else "owns" this object
+      guarantee(o->is_forwarded(), "Object must be forwarded if the cas failed.");
+
+      // Try to deallocate the space.  If it was directly allocated we cannot
+      // deallocate it, so we have to test.  If the deallocation fails,
+      // overwrite with a filler object.
+      if (new_obj_is_tenured) {
+        if (!_old_lab.unallocate_object((HeapWord*) new_obj, new_obj_size)) {
+          CollectedHeap::fill_with_object((HeapWord*) new_obj, new_obj_size);
+        }
+      } else if (!_young_lab.unallocate_object((HeapWord*) new_obj, new_obj_size)) {
+        CollectedHeap::fill_with_object((HeapWord*) new_obj, new_obj_size);
+      }
+
+      // don't update this before the unallocation!
+      new_obj = o->forwardee();
+    }
+  } else {
+    assert(o->is_forwarded(), "Sanity");
+    new_obj = o->forwardee();
+  }
+
+#ifdef DEBUG
+  // This code must come after the CAS test, or it will print incorrect
+  // information.
+  if (TraceScavenge) {
+    gclog_or_tty->print_cr("{%s %s " PTR_FORMAT " -> " PTR_FORMAT " (" SIZE_FORMAT ")}",
+       PSScavenge::should_scavenge(&new_obj) ? "copying" : "tenuring",
+       new_obj->blueprint()->internal_name(), o, new_obj, new_obj->size());
+  }
+#endif
+
+  return new_obj;
+}
+
+
 inline void PSPromotionManager::process_popped_location_depth(StarTask p) {
   if (is_oop_masked(p)) {
     assert(PSChunkLargeArrays, "invariant");
@@ -69,9 +233,9 @@
   } else {
     if (p.is_narrow()) {
       assert(UseCompressedOops, "Error");
-      PSScavenge::copy_and_push_safe_barrier(this, (narrowOop*)p);
+      PSScavenge::copy_and_push_safe_barrier<narrowOop, /*promote_immediately=*/false>(this, p);
     } else {
-      PSScavenge::copy_and_push_safe_barrier(this, (oop*)p);
+      PSScavenge::copy_and_push_safe_barrier<oop, /*promote_immediately=*/false>(this, p);
     }
   }
 }
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -24,6 +24,7 @@
 
 #include "precompiled.hpp"
 #include "classfile/symbolTable.hpp"
+#include "code/codeCache.hpp"
 #include "gc_implementation/parallelScavenge/cardTableExtension.hpp"
 #include "gc_implementation/parallelScavenge/gcTaskManager.hpp"
 #include "gc_implementation/parallelScavenge/generationSizer.hpp"
@@ -100,7 +101,7 @@
 
     // Weak refs may be visited more than once.
     if (PSScavenge::should_scavenge(p, _to_space)) {
-      PSScavenge::copy_and_push_safe_barrier(_promotion_manager, p);
+      PSScavenge::copy_and_push_safe_barrier<T, /*promote_immediately=*/false>(_promotion_manager, p);
     }
   }
   virtual void do_oop(oop* p)       { PSKeepAliveClosure::do_oop_work(p); }
@@ -214,36 +215,41 @@
 //
 // Note that this method should only be called from the vm_thread while
 // at a safepoint!
-void PSScavenge::invoke() {
+bool PSScavenge::invoke() {
   assert(SafepointSynchronize::is_at_safepoint(), "should be at safepoint");
   assert(Thread::current() == (Thread*)VMThread::vm_thread(), "should be in vm thread");
   assert(!Universe::heap()->is_gc_active(), "not reentrant");
 
-  ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
+  ParallelScavengeHeap* const heap = (ParallelScavengeHeap*)Universe::heap();
   assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
 
   PSAdaptiveSizePolicy* policy = heap->size_policy();
   IsGCActiveMark mark;
 
-  bool scavenge_was_done = PSScavenge::invoke_no_policy();
+  const bool scavenge_done = PSScavenge::invoke_no_policy();
+  const bool need_full_gc = !scavenge_done ||
+    policy->should_full_GC(heap->old_gen()->free_in_bytes());
+  bool full_gc_done = false;
 
-  PSGCAdaptivePolicyCounters* counters = heap->gc_policy_counters();
-  if (UsePerfData)
-    counters->update_full_follows_scavenge(0);
-  if (!scavenge_was_done ||
-      policy->should_full_GC(heap->old_gen()->free_in_bytes())) {
-    if (UsePerfData)
-      counters->update_full_follows_scavenge(full_follows_scavenge);
+  if (UsePerfData) {
+    PSGCAdaptivePolicyCounters* const counters = heap->gc_policy_counters();
+    const int ffs_val = need_full_gc ? full_follows_scavenge : not_skipped;
+    counters->update_full_follows_scavenge(ffs_val);
+  }
+
+  if (need_full_gc) {
     GCCauseSetter gccs(heap, GCCause::_adaptive_size_policy);
     CollectorPolicy* cp = heap->collector_policy();
     const bool clear_all_softrefs = cp->should_clear_all_soft_refs();
 
     if (UseParallelOldGC) {
-      PSParallelCompact::invoke_no_policy(clear_all_softrefs);
+      full_gc_done = PSParallelCompact::invoke_no_policy(clear_all_softrefs);
     } else {
-      PSMarkSweep::invoke_no_policy(clear_all_softrefs);
+      full_gc_done = PSMarkSweep::invoke_no_policy(clear_all_softrefs);
     }
   }
+
+  return full_gc_done;
 }
 
 // This method contains no policy. You should probably
@@ -602,6 +608,8 @@
 
     NOT_PRODUCT(reference_processor()->verify_no_references_recorded());
 
+    CodeCache::prune_scavenge_root_nmethods();
+
     // Re-verify object start arrays
     if (VerifyObjectStartArray &&
         VerifyAfterGC) {
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -117,10 +117,9 @@
   // Called by parallelScavengeHeap to init the tenuring threshold
   static void initialize();
 
-  // Scavenge entry point
-  static void invoke();
-  // Return true is a collection was done.  Return
-  // false if the collection was skipped.
+  // Scavenge entry point.  This may invoke a full gc; return true if so.
+  static bool invoke();
+  // Return true if a collection was done; false otherwise.
   static bool invoke_no_policy();
 
   // If an attempt to promote fails, this method is invoked
@@ -135,7 +134,8 @@
   template <class T> static inline bool should_scavenge(T* p, MutableSpace* to_space);
   template <class T> static inline bool should_scavenge(T* p, bool check_to_space);
 
-  template <class T> inline static void copy_and_push_safe_barrier(PSPromotionManager* pm, T* p);
+  template <class T, bool promote_immediately>
+    inline static void copy_and_push_safe_barrier(PSPromotionManager* pm, T* p);
 
   // Is an object in the young generation
   // This assumes that the HeapWord argument is in the heap,
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 #include "gc_implementation/parallelScavenge/cardTableExtension.hpp"
 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
 #include "gc_implementation/parallelScavenge/psPromotionManager.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
 #include "gc_implementation/parallelScavenge/psScavenge.hpp"
 
 inline void PSScavenge::save_to_space_top_before_gc() {
@@ -65,7 +66,7 @@
 // Attempt to "claim" oop at p via CAS, push the new obj if successful
 // This version tests the oop* to make sure it is within the heap before
 // attempting marking.
-template <class T>
+template <class T, bool promote_immediately>
 inline void PSScavenge::copy_and_push_safe_barrier(PSPromotionManager* pm,
                                                    T*                  p) {
   assert(should_scavenge(p, true), "revisiting object?");
@@ -73,7 +74,7 @@
   oop o = oopDesc::load_decode_heap_oop_not_null(p);
   oop new_obj = o->is_forwarded()
         ? o->forwardee()
-        : pm->copy_to_survivor_space(o);
+        : pm->copy_to_survivor_space<promote_immediately>(o);
   oopDesc::encode_store_heap_oop_not_null(p, new_obj);
 
   // We cannot mark without test, as some code passes us pointers
@@ -86,7 +87,8 @@
   }
 }
 
-class PSScavengeRootsClosure: public OopClosure {
+template<bool promote_immediately>
+class PSRootsClosure: public OopClosure {
  private:
   PSPromotionManager* _promotion_manager;
 
@@ -94,13 +96,16 @@
   template <class T> void do_oop_work(T *p) {
     if (PSScavenge::should_scavenge(p)) {
       // We never card mark roots, maybe call a func without test?
-      PSScavenge::copy_and_push_safe_barrier(_promotion_manager, p);
+      PSScavenge::copy_and_push_safe_barrier<T, promote_immediately>(_promotion_manager, p);
     }
   }
  public:
-  PSScavengeRootsClosure(PSPromotionManager* pm) : _promotion_manager(pm) { }
-  void do_oop(oop* p)       { PSScavengeRootsClosure::do_oop_work(p); }
-  void do_oop(narrowOop* p) { PSScavengeRootsClosure::do_oop_work(p); }
+  PSRootsClosure(PSPromotionManager* pm) : _promotion_manager(pm) { }
+  void do_oop(oop* p)       { PSRootsClosure::do_oop_work(p); }
+  void do_oop(narrowOop* p) { PSRootsClosure::do_oop_work(p); }
 };
 
+typedef PSRootsClosure</*promote_immediately=*/false> PSScavengeRootsClosure;
+typedef PSRootsClosure</*promote_immediately=*/true> PSPromoteRootsClosure;
+
 #endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSSCAVENGE_INLINE_HPP
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -51,6 +51,7 @@
 
   PSPromotionManager* pm = PSPromotionManager::gc_thread_promotion_manager(which);
   PSScavengeRootsClosure roots_closure(pm);
+  PSPromoteRootsClosure  roots_to_old_closure(pm);
 
   switch (_root_type) {
     case universe:
@@ -91,7 +92,7 @@
 
     case code_cache:
       {
-        CodeBlobToOopClosure each_scavengable_code_blob(&roots_closure, /*do_marking=*/ true);
+        CodeBlobToOopClosure each_scavengable_code_blob(&roots_to_old_closure, /*do_marking=*/ true);
         CodeCache::scavenge_root_nmethods_do(&each_scavengable_code_blob);
       }
       break;
--- a/hotspot/src/share/vm/gc_interface/collectedHeap.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/gc_interface/collectedHeap.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -62,7 +62,7 @@
     return;
   }
 
-  jlong timestamp = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
+  double timestamp = fetch_timestamp();
   MutexLockerEx ml(&_mutex, Mutex::_no_safepoint_check_flag);
   int index = compute_log_index();
   _records[index].thread = NULL; // Its the GC thread so it's not that interesting.
@@ -70,9 +70,9 @@
   _records[index].data.is_before = before;
   stringStream st(_records[index].data.buffer(), _records[index].data.size());
   if (before) {
-    Universe::print_heap_before_gc(&st);
+    Universe::print_heap_before_gc(&st, true);
   } else {
-    Universe::print_heap_after_gc(&st);
+    Universe::print_heap_after_gc(&st, true);
   }
 }
 
--- a/hotspot/src/share/vm/memory/compactingPermGenGen.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/memory/compactingPermGenGen.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -240,9 +240,6 @@
     if (_ro_space == NULL || _rw_space == NULL)
       vm_exit_during_initialization("Could not allocate a shared space");
 
-    // Cover both shared spaces entirely with cards.
-    _rs->resize_covered_region(MemRegion(readonly_bottom, readwrite_end));
-
     if (UseSharedSpaces) {
 
       // Map in the regions in the shared file.
@@ -279,10 +276,14 @@
         delete _rw_space;
         _rw_space = NULL;
         shared_end = (HeapWord*)(rs.base() + rs.size());
-        _rs->resize_covered_region(MemRegion(shared_bottom, shared_bottom));
       }
     }
 
+    if (spec()->enable_shared_spaces()) {
+      // Cover both shared spaces entirely with cards.
+      _rs->resize_covered_region(MemRegion(readonly_bottom, readwrite_end));
+    }
+
     // Reserved region includes shared spaces for oop.is_in_reserved().
     _reserved.set_end(shared_end);
 
--- a/hotspot/src/share/vm/memory/defNewGeneration.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/memory/defNewGeneration.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -655,7 +655,12 @@
   from()->set_concurrent_iteration_safe_limit(from()->top());
   to()->set_concurrent_iteration_safe_limit(to()->top());
   SpecializationStats::print();
-  update_time_of_last_gc(os::javaTimeMillis());
+
+  // We need to use a monotonically non-deccreasing time in ms
+  // or we will see time-warp warnings and os::javaTimeMillis()
+  // does not guarantee monotonicity.
+  jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
+  update_time_of_last_gc(now);
 }
 
 class RemoveForwardPointerClosure: public ObjectClosure {
--- a/hotspot/src/share/vm/memory/gcLocker.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/memory/gcLocker.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -31,7 +31,6 @@
 volatile jint GC_locker::_lock_count     = 0;
 volatile bool GC_locker::_needs_gc       = false;
 volatile bool GC_locker::_doing_gc       = false;
-jlong GC_locker::_wait_begin = 0;
 
 #ifdef ASSERT
 volatile jint GC_locker::_debug_jni_lock_count = 0;
@@ -69,9 +68,8 @@
     _needs_gc = true;
     if (PrintJNIGCStalls && PrintGCDetails) {
       ResourceMark rm; // JavaThread::name() allocates to convert to UTF8
-      _wait_begin = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
-      gclog_or_tty->print_cr(INT64_FORMAT ": Setting _needs_gc. Thread \"%s\" %d locked.",
-                             _wait_begin, Thread::current()->name(), _jni_lock_count);
+      gclog_or_tty->print_cr("%.3f: Setting _needs_gc. Thread \"%s\" %d locked.",
+                             gclog_or_tty->time_stamp().seconds(), Thread::current()->name(), _jni_lock_count);
     }
 
   }
@@ -85,8 +83,8 @@
   if (needs_gc()) {
     if (PrintJNIGCStalls && PrintGCDetails) {
       ResourceMark rm; // JavaThread::name() allocates to convert to UTF8
-      gclog_or_tty->print_cr(INT64_FORMAT ": Allocation failed. Thread \"%s\" is stalled by JNI critical section, %d locked.",
-                             (os::javaTimeNanos() / NANOSECS_PER_MILLISEC) - _wait_begin, Thread::current()->name(), _jni_lock_count);
+      gclog_or_tty->print_cr("%.3f: Allocation failed. Thread \"%s\" is stalled by JNI critical section, %d locked.",
+                             gclog_or_tty->time_stamp().seconds(), Thread::current()->name(), _jni_lock_count);
     }
   }
 
@@ -131,8 +129,8 @@
         MutexUnlocker munlock(JNICritical_lock);
         if (PrintJNIGCStalls && PrintGCDetails) {
           ResourceMark rm; // JavaThread::name() allocates to convert to UTF8
-          gclog_or_tty->print_cr(INT64_FORMAT ": Thread \"%s\" is performing GC after exiting critical section, %d locked",
-                                 (os::javaTimeNanos() / NANOSECS_PER_MILLISEC) - _wait_begin, Thread::current()->name(), _jni_lock_count);
+          gclog_or_tty->print_cr("%.3f: Thread \"%s\" is performing GC after exiting critical section, %d locked",
+                                 gclog_or_tty->time_stamp().seconds(), Thread::current()->name(), _jni_lock_count);
         }
         Universe::heap()->collect(GCCause::_gc_locker);
       }
--- a/hotspot/src/share/vm/memory/gcLocker.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/memory/gcLocker.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -63,9 +63,6 @@
                                          // note: bool is typedef'd as jint
   static volatile bool _doing_gc;        // unlock_critical() is doing a GC
 
-  static jlong         _wait_begin;      // Timestamp for the setting of _needs_gc.
-                                         // Used only by printing code.
-
 #ifdef ASSERT
   // This lock count is updated for all operations and is used to
   // validate the jni_lock_count that is computed during safepoints.
@@ -86,13 +83,26 @@
   static void jni_lock(JavaThread* thread);
   static void jni_unlock(JavaThread* thread);
 
+  static bool is_active_internal() {
+    verify_critical_count();
+    return _lock_count > 0 || _jni_lock_count > 0;
+  }
+
  public:
   // Accessors
-  static bool is_active();
+  static bool is_active() {
+    assert(_needs_gc || SafepointSynchronize::is_at_safepoint(), "only read at safepoint");
+    return is_active_internal();
+  }
   static bool needs_gc()       { return _needs_gc;                        }
 
   // Shorthand
-  static bool is_active_and_needs_gc() { return needs_gc() && is_active(); }
+  static bool is_active_and_needs_gc() {
+    // Use is_active_internal since _needs_gc can change from true to
+    // false outside of a safepoint, triggering the assert in
+    // is_active.
+    return needs_gc() && is_active_internal();
+  }
 
   // In debug mode track the locking state at all times
   static void increment_debug_jni_lock_count() {
--- a/hotspot/src/share/vm/memory/gcLocker.inline.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/memory/gcLocker.inline.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -27,12 +27,6 @@
 
 #include "memory/gcLocker.hpp"
 
-inline bool GC_locker::is_active() {
-  assert(_needs_gc || SafepointSynchronize::is_at_safepoint(), "only read at safepoint");
-  verify_critical_count();
-  return _lock_count > 0 || _jni_lock_count > 0;
-}
-
 inline void GC_locker::lock() {
   // cast away volatile
   Atomic::inc(&_lock_count);
--- a/hotspot/src/share/vm/memory/genMarkSweep.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/memory/genMarkSweep.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -176,7 +176,11 @@
 
   // Update time of last gc for all generations we collected
   // (which curently is all the generations in the heap).
-  gch->update_time_of_last_gc(os::javaTimeMillis());
+  // We need to use a monotonically non-deccreasing time in ms
+  // or we will see time-warp warnings and os::javaTimeMillis()
+  // does not guarantee monotonicity.
+  jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
+  gch->update_time_of_last_gc(now);
 }
 
 void GenMarkSweep::allocate_stacks() {
--- a/hotspot/src/share/vm/memory/universe.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/memory/universe.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1303,22 +1303,22 @@
   }
 }
 
-void Universe::print_heap_before_gc(outputStream* st) {
+void Universe::print_heap_before_gc(outputStream* st, bool ignore_extended) {
   st->print_cr("{Heap before GC invocations=%u (full %u):",
                heap()->total_collections(),
                heap()->total_full_collections());
-  if (!PrintHeapAtGCExtended) {
+  if (!PrintHeapAtGCExtended || ignore_extended) {
     heap()->print_on(st);
   } else {
     heap()->print_extended_on(st);
   }
 }
 
-void Universe::print_heap_after_gc(outputStream* st) {
+void Universe::print_heap_after_gc(outputStream* st, bool ignore_extended) {
   st->print_cr("Heap after GC invocations=%u (full %u):",
                heap()->total_collections(),
                heap()->total_full_collections());
-  if (!PrintHeapAtGCExtended) {
+  if (!PrintHeapAtGCExtended || ignore_extended) {
     heap()->print_on(st);
   } else {
     heap()->print_extended_on(st);
--- a/hotspot/src/share/vm/memory/universe.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/memory/universe.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -424,8 +424,8 @@
   static void print_heap_at_SIGBREAK();
   static void print_heap_before_gc() { print_heap_before_gc(gclog_or_tty); }
   static void print_heap_after_gc()  { print_heap_after_gc(gclog_or_tty); }
-  static void print_heap_before_gc(outputStream* st);
-  static void print_heap_after_gc(outputStream* st);
+  static void print_heap_before_gc(outputStream* st, bool ignore_extended = false);
+  static void print_heap_after_gc(outputStream* st, bool ignore_extended = false);
 
   // Change the number of dummy objects kept reachable by the full gc dummy
   // array; this should trigger relocation in a sliding compaction collector.
--- a/hotspot/src/share/vm/opto/chaitin.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/opto/chaitin.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1946,18 +1946,29 @@
     reg2offset_unchecked(OptoReg::add(_matcher._old_SP,-1)) - reg2offset_unchecked(_matcher._new_SP)+jintSize);
 
   // Preserve area dump
+  int fixed_slots = C->fixed_slots();
+  OptoReg::Name begin_in_preserve = OptoReg::add(_matcher._old_SP, -(int)C->in_preserve_stack_slots());
+  OptoReg::Name return_addr = _matcher.return_addr();
+
   reg = OptoReg::add(reg, -1);
-  while( OptoReg::is_stack(reg)) {
+  while (OptoReg::is_stack(reg)) {
     tty->print("#r%3.3d %s+%2d: ",reg,fp,reg2offset_unchecked(reg));
-    if( _matcher.return_addr() == reg )
+    if (return_addr == reg) {
       tty->print_cr("return address");
-    else if( _matcher.return_addr() == OptoReg::add(reg,1) &&
-             VerifyStackAtCalls )
-      tty->print_cr("0xBADB100D   +VerifyStackAtCalls");
-    else if ((int)OptoReg::reg2stack(reg) < C->fixed_slots())
+    } else if (reg >= begin_in_preserve) {
+      // Preserved slots are present on x86
+      if (return_addr == OptoReg::add(reg, VMRegImpl::slots_per_word))
+        tty->print_cr("saved fp register");
+      else if (return_addr == OptoReg::add(reg, 2*VMRegImpl::slots_per_word) &&
+               VerifyStackAtCalls)
+        tty->print_cr("0xBADB100D   +VerifyStackAtCalls");
+      else
+        tty->print_cr("in_preserve");
+    } else if ((int)OptoReg::reg2stack(reg) < fixed_slots) {
       tty->print_cr("Fixed slot %d", OptoReg::reg2stack(reg));
-    else
-      tty->print_cr("pad2, in_preserve");
+    } else {
+      tty->print_cr("pad2, stack alignment");
+    }
     reg = OptoReg::add(reg, -1);
   }
 
--- a/hotspot/src/share/vm/opto/escape.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/opto/escape.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1687,12 +1687,23 @@
   // Observed 8 passes in jvm2008 compiler.compiler.
   // Set limit to 20 to catch situation when something
   // did go wrong and recompile the method without EA.
+  // Also limit build time to 30 sec (60 in debug VM).
 
 #define CG_BUILD_ITER_LIMIT 20
 
+#ifdef ASSERT
+#define CG_BUILD_TIME_LIMIT 60.0
+#else
+#define CG_BUILD_TIME_LIMIT 30.0
+#endif
+
   uint length = worklist.length();
   int iterations = 0;
-  while(_progress && (iterations++ < CG_BUILD_ITER_LIMIT)) {
+  elapsedTimer time;
+  while(_progress &&
+        (iterations++   < CG_BUILD_ITER_LIMIT) &&
+        (time.seconds() < CG_BUILD_TIME_LIMIT)) {
+    time.start();
     _progress = false;
     for( uint next = 0; next < length; ++next ) {
       int ni = worklist.at(next);
@@ -1701,18 +1712,19 @@
       assert(n != NULL, "should be known node");
       build_connection_graph(n, igvn);
     }
+    time.stop();
   }
-  if (iterations >= CG_BUILD_ITER_LIMIT) {
-    assert(iterations < CG_BUILD_ITER_LIMIT,
-           err_msg("infinite EA connection graph build with %d nodes and worklist size %d",
-           nodes_size(), length));
+  if ((iterations     >= CG_BUILD_ITER_LIMIT) ||
+      (time.seconds() >= CG_BUILD_TIME_LIMIT)) {
+    assert(false, err_msg("infinite EA connection graph build (%f sec, %d iterations) with %d nodes and worklist size %d",
+           time.seconds(), iterations, nodes_size(), length));
     // Possible infinite build_connection_graph loop,
-    // retry compilation without escape analysis.
-    C->record_failure(C2Compiler::retry_no_escape_analysis());
+    // bailout (no changes to ideal graph were made).
     _collecting = false;
     return false;
   }
 #undef CG_BUILD_ITER_LIMIT
+#undef CG_BUILD_TIME_LIMIT
 
   // 5. Propagate escaped states.
   worklist.clear();
@@ -2292,9 +2304,35 @@
         PointsToNode::EscapeState arg_esc = ptnode_adr(arg->_idx)->escape_state();
         if (!arg->is_top() && at->isa_ptr() && aat->isa_ptr() &&
             (is_arraycopy || arg_esc < PointsToNode::ArgEscape)) {
-
+#ifdef ASSERT
           assert(aat == Type::TOP || aat == TypePtr::NULL_PTR ||
                  aat->isa_ptr() != NULL, "expecting an Ptr");
+          if (!(is_arraycopy ||
+                call->as_CallLeaf()->_name != NULL &&
+                (strcmp(call->as_CallLeaf()->_name, "g1_wb_pre")  == 0 ||
+                 strcmp(call->as_CallLeaf()->_name, "g1_wb_post") == 0 ))
+          ) {
+            call->dump();
+            assert(false, "EA: unexpected CallLeaf");
+          }
+#endif
+          if (arg_esc < PointsToNode::ArgEscape) {
+            set_escape_state(arg->_idx, PointsToNode::ArgEscape);
+            Node* arg_base = arg;
+            if (arg->is_AddP()) {
+              //
+              // The inline_native_clone() case when the arraycopy stub is called
+              // after the allocation before Initialize and CheckCastPP nodes.
+              // Or normal arraycopy for object arrays case.
+              //
+              // Set AddP's base (Allocate) as not scalar replaceable since
+              // pointer to the base (with offset) is passed as argument.
+              //
+              arg_base = get_addp_base(arg);
+              set_escape_state(arg_base->_idx, PointsToNode::ArgEscape);
+            }
+          }
+
           bool arg_has_oops = aat->isa_oopptr() &&
                               (aat->isa_oopptr()->klass() == NULL || aat->isa_instptr() ||
                                (aat->isa_aryptr() && aat->isa_aryptr()->klass()->is_obj_array_klass()));
@@ -2307,85 +2345,33 @@
           //   arraycopy(char[],0,Object*,0,size);
           //   arraycopy(Object*,0,char[],0,size);
           //
-          // Don't add edges from dst's fields in such cases.
+          // Do nothing special in such cases.
           //
-          bool arg_is_arraycopy_dest = src_has_oops && is_arraycopy &&
-                                       arg_has_oops && (i > TypeFunc::Parms);
-#ifdef ASSERT
-          if (!(is_arraycopy ||
-                call->as_CallLeaf()->_name != NULL &&
-                (strcmp(call->as_CallLeaf()->_name, "g1_wb_pre")  == 0 ||
-                 strcmp(call->as_CallLeaf()->_name, "g1_wb_post") == 0 ))
-          ) {
-            call->dump();
-            assert(false, "EA: unexpected CallLeaf");
-          }
-#endif
-          // Always process arraycopy's destination object since
-          // we need to add all possible edges to references in
-          // source object.
-          if (arg_esc >= PointsToNode::ArgEscape &&
-              !arg_is_arraycopy_dest) {
-            continue;
-          }
-          set_escape_state(arg->_idx, PointsToNode::ArgEscape);
-          Node* arg_base = arg;
-          if (arg->is_AddP()) {
-            //
-            // The inline_native_clone() case when the arraycopy stub is called
-            // after the allocation before Initialize and CheckCastPP nodes.
-            // Or normal arraycopy for object arrays case.
-            //
-            // Set AddP's base (Allocate) as not scalar replaceable since
-            // pointer to the base (with offset) is passed as argument.
-            //
-            arg_base = get_addp_base(arg);
-          }
-          VectorSet argset = *PointsTo(arg_base); // Clone set
-          for( VectorSetI j(&argset); j.test(); ++j ) {
-            uint pd = j.elem; // Destination object
-            set_escape_state(pd, PointsToNode::ArgEscape);
-
-            if (arg_is_arraycopy_dest) {
-              PointsToNode* ptd = ptnode_adr(pd);
-              // Conservatively reference an unknown object since
-              // not all source's fields/elements may be known.
-              add_edge_from_fields(pd, _phantom_object, Type::OffsetBot);
-
-              Node *src = call->in(TypeFunc::Parms)->uncast();
-              Node* src_base = src;
-              if (src->is_AddP()) {
-                src_base  = get_addp_base(src);
-              }
-              // Create edges from destination's fields to
-              // everything known source's fields could point to.
-              for( VectorSetI s(PointsTo(src_base)); s.test(); ++s ) {
-                uint ps = s.elem;
-                bool has_bottom_offset = false;
-                for (uint fd = 0; fd < ptd->edge_count(); fd++) {
-                  assert(ptd->edge_type(fd) == PointsToNode::FieldEdge, "expecting a field edge");
-                  int fdi = ptd->edge_target(fd);
-                  PointsToNode* pfd = ptnode_adr(fdi);
-                  int offset = pfd->offset();
-                  if (offset == Type::OffsetBot)
-                    has_bottom_offset = true;
-                  assert(offset != -1, "offset should be set");
-                  add_deferred_edge_to_fields(fdi, ps, offset);
-                }
-                // Destination object may not have access (no field edge)
-                // to fields which are accessed in source object.
-                // As result no edges will be created to those source's
-                // fields and escape state of destination object will
-                // not be propagated to those fields.
-                //
-                // Mark source object as global escape except in
-                // the case with Type::OffsetBot field (which is
-                // common case for array elements access) when
-                // edges are created to all source's fields.
-                if (!has_bottom_offset) {
-                  set_escape_state(ps, PointsToNode::GlobalEscape);
-                }
-              }
+          if (is_arraycopy && (i > TypeFunc::Parms) &&
+              src_has_oops && arg_has_oops) {
+            // Destination object's fields reference an unknown object.
+            Node* arg_base = arg;
+            if (arg->is_AddP()) {
+              arg_base = get_addp_base(arg);
+            }
+            for (VectorSetI s(PointsTo(arg_base)); s.test(); ++s) {
+              uint ps = s.elem;
+              set_escape_state(ps, PointsToNode::ArgEscape);
+              add_edge_from_fields(ps, _phantom_object, Type::OffsetBot);
+            }
+            // Conservatively all values in source object fields globally escape
+            // since we don't know if values in destination object fields
+            // escape (it could be traced but it is too expensive).
+            Node* src = call->in(TypeFunc::Parms)->uncast();
+            Node* src_base = src;
+            if (src->is_AddP()) {
+              src_base  = get_addp_base(src);
+            }
+            for (VectorSetI s(PointsTo(src_base)); s.test(); ++s) {
+              uint ps = s.elem;
+              set_escape_state(ps, PointsToNode::ArgEscape);
+              // Use OffsetTop to indicate fields global escape.
+              add_edge_from_fields(ps, _phantom_object, Type::OffsetTop);
             }
           }
         }
--- a/hotspot/src/share/vm/opto/output.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/opto/output.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -167,7 +167,7 @@
   // Determine if we need to generate a stack overflow check.
   // Do it if the method is not a stub function and
   // has java calls or has frame size > vm_page_size/8.
-  return (stub_function() == NULL &&
+  return (UseStackBanging && stub_function() == NULL &&
           (has_java_calls() || frame_size_in_bytes > os::vm_page_size()>>3));
 }
 
--- a/hotspot/src/share/vm/prims/jvmtiTagMap.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiTagMap.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -2999,7 +2999,8 @@
     char type = field->field_type();
     if (!is_primitive_field_type(type)) {
       oop fld_o = o->obj_field(field->field_offset());
-      if (fld_o != NULL) {
+      // ignore any objects that aren't visible to profiler
+      if (fld_o != NULL && ServiceUtil::visible_oop(fld_o)) {
         // reflection code may have a reference to a klassOop.
         // - see sun.reflect.UnsafeStaticFieldAccessorImpl and sun.misc.Unsafe
         if (fld_o->is_klass()) {
--- a/hotspot/src/share/vm/runtime/arguments.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/runtime/arguments.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -102,8 +102,6 @@
 char* Arguments::_meta_index_path = NULL;
 char* Arguments::_meta_index_dir = NULL;
 
-static bool force_client_mode = false;
-
 // Check if head of 'option' matches 'name', and sets 'tail' remaining part of option string
 
 static bool match_option(const JavaVMOption *option, const char* name,
@@ -1345,7 +1343,7 @@
     return;
   }
 
-  if (os::is_server_class_machine() && !force_client_mode ) {
+  if (os::is_server_class_machine()) {
     // If no other collector is requested explicitly,
     // let the VM select the collector based on
     // machine class and automatic selection policy.
@@ -1370,12 +1368,9 @@
   // by ergonomics.
   if (MaxHeapSize <= max_heap_for_compressed_oops()) {
 #if !defined(COMPILER1) || defined(TIERED)
-// disable UseCompressedOops by default on MacOS X until 7118647 is fixed
-#ifndef __APPLE__
     if (FLAG_IS_DEFAULT(UseCompressedOops)) {
       FLAG_SET_ERGO(bool, UseCompressedOops, true);
     }
-#endif // !__APPLE__
 #endif
 #ifdef _WIN64
     if (UseLargePages && UseCompressedOops) {
@@ -2940,11 +2935,6 @@
   // Construct the path to the archive
   char jvm_path[JVM_MAXPATHLEN];
   os::jvm_path(jvm_path, sizeof(jvm_path));
-#ifdef TIERED
-  if (strstr(jvm_path, "client") != NULL) {
-    force_client_mode = true;
-  }
-#endif // TIERED
   char *end = strrchr(jvm_path, *os::file_separator());
   if (end != NULL) *end = '\0';
   char *shared_archive_path = NEW_C_HEAP_ARRAY(char, strlen(jvm_path) +
--- a/hotspot/src/share/vm/runtime/dtraceJSDT.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/runtime/dtraceJSDT.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -82,7 +82,7 @@
 
   int handle = pd_activate((void*)probes,
     module_name, providers_count, providers);
-  if (handle <= 0) {
+  if (handle < 0) {
     delete probes;
     THROW_MSG_0(vmSymbols::java_lang_RuntimeException(),
       "Unable to register DTrace probes (internal error).");
--- a/hotspot/src/share/vm/runtime/globals.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/runtime/globals.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -3013,7 +3013,7 @@
   product(intx, SafepointTimeoutDelay, 10000,                               \
           "Delay in milliseconds for option SafepointTimeout")              \
                                                                             \
-  product(intx, NmethodSweepFraction, 4,                                    \
+  product(intx, NmethodSweepFraction, 16,                                    \
           "Number of invocations of sweeper to cover all nmethods")         \
                                                                             \
   product(intx, NmethodSweepCheckInterval, 5,                               \
--- a/hotspot/src/share/vm/runtime/sharedRuntime.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/runtime/sharedRuntime.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -804,6 +804,7 @@
         if (thread->deopt_mark() != NULL) {
           Deoptimization::cleanup_deopt_info(thread, NULL);
         }
+        Events::log_exception(thread, "StackOverflowError at " INTPTR_FORMAT, pc);
         return StubRoutines::throw_StackOverflowError_entry();
       }
 
@@ -820,8 +821,10 @@
 
           if (vt_stub->is_abstract_method_error(pc)) {
             assert(!vt_stub->is_vtable_stub(), "should never see AbstractMethodErrors from vtable-type VtableStubs");
+            Events::log_exception(thread, "AbstractMethodError at " INTPTR_FORMAT, pc);
             return StubRoutines::throw_AbstractMethodError_entry();
           } else {
+            Events::log_exception(thread, "NullPointerException at vtable entry " INTPTR_FORMAT, pc);
             return StubRoutines::throw_NullPointerException_at_call_entry();
           }
         } else {
@@ -838,6 +841,7 @@
           if (!cb->is_nmethod()) {
             guarantee(cb->is_adapter_blob() || cb->is_method_handles_adapter_blob(),
                       "exception happened outside interpreter, nmethods and vtable stubs (1)");
+            Events::log_exception(thread, "NullPointerException in code blob at " INTPTR_FORMAT, pc);
             // There is no handler here, so we will simply unwind.
             return StubRoutines::throw_NullPointerException_at_call_entry();
           }
@@ -849,6 +853,7 @@
             // => the nmethod is not yet active (i.e., the frame
             // is not set up yet) => use return address pushed by
             // caller => don't push another return address
+            Events::log_exception(thread, "NullPointerException in IC check " INTPTR_FORMAT, pc);
             return StubRoutines::throw_NullPointerException_at_call_entry();
           }
 
--- a/hotspot/src/share/vm/runtime/sweeper.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/runtime/sweeper.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -266,7 +266,17 @@
 
     // The last invocation iterates until there are no more nmethods
     for (int i = 0; (i < todo || _invocations == 1) && _current != NULL; i++) {
+      if (SafepointSynchronize::is_synchronizing()) { // Safepoint request
+        if (PrintMethodFlushing && Verbose) {
+          tty->print_cr("### Sweep at %d out of %d, invocation: %d, yielding to safepoint", _seen, CodeCache::nof_nmethods(), _invocations);
+        }
+        MutexUnlockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
 
+        assert(Thread::current()->is_Java_thread(), "should be java thread");
+        JavaThread* thread = (JavaThread*)Thread::current();
+        ThreadBlockInVM tbivm(thread);
+        thread->java_suspend_self();
+      }
       // Since we will give up the CodeCache_lock, always skip ahead
       // to the next nmethod.  Other blobs can be deleted by other
       // threads but nmethods are only reclaimed by the sweeper.
--- a/hotspot/src/share/vm/runtime/thread.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/runtime/thread.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -3220,11 +3220,6 @@
     return status;
   }
 
-  // Must be run after init_ft which initializes ft_enabled
-  if (TRACE_INITIALIZE() != JNI_OK) {
-    vm_exit_during_initialization("Failed to initialize tracing backend");
-  }
-
   // Should be done after the heap is fully created
   main_thread->cache_global_variables();
 
@@ -3366,6 +3361,7 @@
       initialize_class(vmSymbols::java_lang_ArithmeticException(), CHECK_0);
       initialize_class(vmSymbols::java_lang_StackOverflowError(), CHECK_0);
       initialize_class(vmSymbols::java_lang_IllegalMonitorStateException(), CHECK_0);
+      initialize_class(vmSymbols::java_lang_IllegalArgumentException(), CHECK_0);
     } else {
       warning("java.lang.OutOfMemoryError has not been initialized");
       warning("java.lang.NullPointerException has not been initialized");
@@ -3373,6 +3369,7 @@
       warning("java.lang.ArrayStoreException has not been initialized");
       warning("java.lang.ArithmeticException has not been initialized");
       warning("java.lang.StackOverflowError has not been initialized");
+      warning("java.lang.IllegalArgumentException has not been initialized");
     }
   }
 
@@ -3402,6 +3399,11 @@
 
   quicken_jni_functions();
 
+  // Must be run after init_ft which initializes ft_enabled
+  if (TRACE_INITIALIZE() != JNI_OK) {
+    vm_exit_during_initialization("Failed to initialize tracing backend");
+  }
+
   // Set flag that basic initialization has completed. Used by exceptions and various
   // debug stuff, that does not work until all basic classes have been initialized.
   set_init_completed();
--- a/hotspot/src/share/vm/runtime/virtualspace.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/runtime/virtualspace.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -455,7 +455,7 @@
 
 void ReservedSpace::protect_noaccess_prefix(const size_t size) {
   assert( (_noaccess_prefix != 0) == (UseCompressedOops && _base != NULL &&
-                                      (size_t(_base + _size) > OopEncodingHeapMax) &&
+                                      (Universe::narrow_oop_base() != NULL) &&
                                       Universe::narrow_oop_use_implicit_null_checks()),
          "noaccess_prefix should be used only with non zero based compressed oops");
 
--- a/hotspot/src/share/vm/services/diagnosticArgument.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/services/diagnosticArgument.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -28,9 +28,16 @@
 #include "services/diagnosticArgument.hpp"
 
 void GenDCmdArgument::read_value(const char* str, size_t len, TRAPS) {
-  if (is_set()) {
+  /* NOTE:Some argument types doesn't require a value,
+   * for instance boolean arguments: "enableFeatureX". is
+   * equivalent to "enableFeatureX=true". In these cases,
+   * str will be null. This is perfectly valid.
+   * All argument types must perform null checks on str.
+   */
+
+  if (is_set() && !allow_multiple()) {
     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
-            "Duplicates in diagnostic command arguments");
+            "Duplicates in diagnostic command arguments\n");
   }
   parse_value(str, len, CHECK);
   set_is_set(true);
@@ -38,9 +45,9 @@
 
 template <> void DCmdArgument<jlong>::parse_value(const char* str,
                                                   size_t len, TRAPS) {
-  if (sscanf(str, INT64_FORMAT, &_value) != 1) {
+    if (str == NULL || sscanf(str, INT64_FORMAT, &_value) != 1) {
     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
-      "Integer parsing error in diagnostic command arguments");
+      "Integer parsing error in diagnostic command arguments\n");
   }
 }
 
@@ -89,16 +96,20 @@
 
 template <> void DCmdArgument<char*>::parse_value(const char* str,
                                                   size_t len, TRAPS) {
-  _value = NEW_C_HEAP_ARRAY(char, len+1);
-  strncpy(_value, str, len);
-  _value[len] = 0;
+  if (str == NULL) {
+    _value = NULL;
+  } else {
+    _value = NEW_C_HEAP_ARRAY(char, len+1);
+    strncpy(_value, str, len);
+    _value[len] = 0;
+  }
 }
 
 template <> void DCmdArgument<char*>::init_value(TRAPS) {
-  if (has_default()) {
+  if (has_default() && _default_string != NULL) {
     this->parse_value(_default_string, strlen(_default_string), THREAD);
     if (HAS_PENDING_EXCEPTION) {
-      fatal("Default string must be parsable");
+     fatal("Default string must be parsable");
     }
   } else {
     set_value(NULL);
@@ -111,3 +122,153 @@
     set_value(NULL);
   }
 }
+
+template <> void DCmdArgument<NanoTimeArgument>::parse_value(const char* str,
+                                                 size_t len, TRAPS) {
+  if (str == NULL) {
+    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
+              "Integer parsing error nanotime value: syntax error");
+  }
+
+  int argc = sscanf(str, INT64_FORMAT , &_value._time);
+  if (argc != 1) {
+    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
+              "Integer parsing error nanotime value: syntax error");
+  }
+  size_t idx = 0;
+  while(idx < len && isdigit(str[idx])) {
+    idx++;
+  }
+  if (idx == len) {
+    // only accept missing unit if the value is 0
+    if (_value._time != 0) {
+      THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
+                "Integer parsing error nanotime value: unit required");
+    } else {
+      _value._nanotime = 0;
+      strcpy(_value._unit, "ns");
+      return;
+    }
+  } else if(len - idx > 2) {
+    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
+              "Integer parsing error nanotime value: illegal unit");
+  } else {
+    strncpy(_value._unit, &str[idx], len - idx);
+    /*Write an extra null termination. This is safe because _value._unit
+     * is declared as char[3], and length is checked to be not larger than
+     * two above. Also, this is necessary, since length might be 1, and the
+     * default value already in the string is ns, which is two chars.
+     */
+    _value._unit[len-idx] = '\0';
+  }
+
+  if (strcmp(_value._unit, "ns") == 0) {
+    _value._nanotime = _value._time;
+  } else if (strcmp(_value._unit, "us") == 0) {
+    _value._nanotime = _value._time * 1000;
+  } else if (strcmp(_value._unit, "ms") == 0) {
+    _value._nanotime = _value._time * 1000 * 1000;
+  } else if (strcmp(_value._unit, "s") == 0) {
+    _value._nanotime = _value._time * 1000 * 1000 * 1000;
+  } else if (strcmp(_value._unit, "m") == 0) {
+    _value._nanotime = _value._time * 60 * 1000 * 1000 * 1000;
+  } else if (strcmp(_value._unit, "h") == 0) {
+    _value._nanotime = _value._time * 60 * 60 * 1000 * 1000 * 1000;
+  } else if (strcmp(_value._unit, "d") == 0) {
+    _value._nanotime = _value._time * 24 * 60 * 60 * 1000 * 1000 * 1000;
+  } else {
+     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
+               "Integer parsing error nanotime value: illegal unit");
+  }
+}
+
+template <> void DCmdArgument<NanoTimeArgument>::init_value(TRAPS) {
+  if (has_default()) {
+    this->parse_value(_default_string, strlen(_default_string), THREAD);
+    if (HAS_PENDING_EXCEPTION) {
+      fatal("Default string must be parsable");
+    }
+  } else {
+    _value._time = 0;
+    _value._nanotime = 0;
+    strcmp(_value._unit, "ns");
+  }
+}
+
+template <> void DCmdArgument<NanoTimeArgument>::destroy_value() { }
+
+// WARNING StringArrayArgument can only be used as an option, it cannot be
+// used as an argument with the DCmdParser
+
+template <> void DCmdArgument<StringArrayArgument*>::parse_value(const char* str,
+                                                  size_t len, TRAPS) {
+  _value->add(str,len);
+}
+
+template <> void DCmdArgument<StringArrayArgument*>::init_value(TRAPS) {
+  _value = new StringArrayArgument();
+  _allow_multiple = true;
+  if (has_default()) {
+    fatal("StringArrayArgument cannot have default value");
+  }
+}
+
+template <> void DCmdArgument<StringArrayArgument*>::destroy_value() {
+  if (_value != NULL) {
+    delete _value;
+    set_value(NULL);
+  }
+}
+
+template <> void DCmdArgument<MemorySizeArgument>::parse_value(const char* str,
+                                                  size_t len, TRAPS) {
+  if (str == NULL) {
+    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
+              "Integer parsing error nanotime value: syntax error");
+  }
+
+  if (*str == '-') {
+    THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
+               "Parsing error memory size value: negative values not allowed");
+  }
+  int res = sscanf(str, UINT64_FORMAT "%c", &_value._val, &_value._multiplier);
+  if (res == 2) {
+     switch (_value._multiplier) {
+      case 'k': case 'K':
+         _value._size = _value._val * 1024;
+         break;
+      case 'm': case 'M':
+         _value._size = _value._val * 1024 * 1024;
+         break;
+      case 'g': case 'G':
+         _value._size = _value._val * 1024 * 1024 * 1024;
+         break;
+       default:
+         _value._size = _value._val;
+         _value._multiplier = ' ';
+         //default case should be to break with no error, since user
+         //can write size in bytes, or might have a delimiter and next arg
+         break;
+     }
+   } else if (res == 1) {
+     _value._size = _value._val;
+   } else {
+     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
+               "Parsing error memory size value: invalid value");
+   }
+}
+
+template <> void DCmdArgument<MemorySizeArgument>::init_value(TRAPS) {
+  if (has_default()) {
+    this->parse_value(_default_string, strlen(_default_string), THREAD);
+    if (HAS_PENDING_EXCEPTION) {
+      fatal("Default string must be parsable");
+    }
+  } else {
+    _value._size = 0;
+    _value._val = 0;
+    _value._multiplier = ' ';
+  }
+}
+
+template <> void DCmdArgument<MemorySizeArgument>::destroy_value() { }
--- a/hotspot/src/share/vm/services/diagnosticArgument.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/services/diagnosticArgument.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,49 @@
 #include "runtime/thread.hpp"
 #include "utilities/exceptions.hpp"
 
+class StringArrayArgument : public CHeapObj {
+private:
+  GrowableArray<char*>* _array;
+public:
+  StringArrayArgument() {
+    _array = new(ResourceObj::C_HEAP)GrowableArray<char *>(32, true);
+    assert(_array != NULL, "Sanity check");
+  }
+  void add(const char* str, size_t len) {
+    if (str != NULL) {
+      char* ptr = NEW_C_HEAP_ARRAY(char, len+1);
+      strncpy(ptr, str, len);
+      ptr[len] = 0;
+      _array->append(ptr);
+    }
+  }
+  GrowableArray<char*>* array() {
+    return _array;
+  }
+  ~StringArrayArgument() {
+    for (int i=0; i<_array->length(); i++) {
+      if(_array->at(i) != NULL) { // Safety check
+        FREE_C_HEAP_ARRAY(char, _array->at(i));
+      }
+    }
+    delete _array;
+  }
+};
+
+class NanoTimeArgument {
+public:
+  jlong _nanotime;
+  jlong _time;
+  char _unit[3];
+};
+
+class MemorySizeArgument {
+public:
+  u8 _size;
+  u8 _val;
+  char _multiplier;
+};
+
 class GenDCmdArgument : public ResourceObj {
 protected:
   GenDCmdArgument* _next;
@@ -40,6 +83,7 @@
   const char*      _default_string;
   bool             _is_set;
   bool             _is_mandatory;
+  bool             _allow_multiple;
   GenDCmdArgument(const char* name, const char* description, const char* type,
                   const char* default_string, bool mandatory) {
     _name = name;
@@ -48,6 +92,7 @@
     _default_string = default_string;
     _is_mandatory = mandatory;
     _is_set = false;
+    _allow_multiple = false;
   };
 public:
   const char* name() { return _name; }
@@ -56,6 +101,7 @@
   const char* default_string() { return _default_string; }
   bool is_set() { return _is_set; }
   void set_is_set(bool b) { _is_set = b; }
+  bool allow_multiple() { return _allow_multiple; }
   bool is_mandatory() { return _is_mandatory; }
   bool has_value() { return _is_set || _default_string != NULL; }
   bool has_default() { return _default_string != NULL; }
--- a/hotspot/src/share/vm/services/diagnosticFramework.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/services/diagnosticFramework.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -61,7 +61,7 @@
 bool DCmdArgIter::next(TRAPS) {
   if (_len == 0) return false;
   // skipping spaces
-  while (_cursor < _len - 1 && isspace(_buffer[_cursor])) {
+  while (_cursor < _len - 1 && _buffer[_cursor] == _delim) {
     _cursor++;
   }
   // handling end of command line
--- a/hotspot/src/share/vm/services/diagnosticFramework.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/services/diagnosticFramework.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -195,6 +195,7 @@
   DCmdParser() {
     _options = NULL;
     _arguments_list = NULL;
+    _delim = ' ';
   }
   void add_dcmd_option(GenDCmdArgument* arg);
   void add_dcmd_argument(GenDCmdArgument* arg);
--- a/hotspot/src/share/vm/services/gcNotifier.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/services/gcNotifier.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -180,17 +180,43 @@
 }
 
 void GCNotifier::sendNotification(TRAPS) {
+  GCNotifier::sendNotificationInternal(THREAD);
+  // Clearing pending exception to avoid premature termination of
+  // the service thread
+  if (HAS_PENDING_EXCEPTION) {
+    CLEAR_PENDING_EXCEPTION;
+  }
+}
+
+class NotificationMark : public StackObj {
+  // This class is used in GCNotifier::sendNotificationInternal to ensure that
+  // the GCNotificationRequest object is properly cleaned up, whatever path
+  // is used to exit the method.
+  GCNotificationRequest* _request;
+public:
+  NotificationMark(GCNotificationRequest* r) {
+    _request = r;
+  }
+  ~NotificationMark() {
+    assert(_request != NULL, "Sanity check");
+    delete _request;
+  }
+};
+
+void GCNotifier::sendNotificationInternal(TRAPS) {
   ResourceMark rm(THREAD);
+  HandleMark hm(THREAD);
   GCNotificationRequest *request = getRequest();
-  if(request != NULL) {
-    Handle objGcInfo = createGcInfo(request->gcManager,request->gcStatInfo,THREAD);
+  if (request != NULL) {
+    NotificationMark nm(request);
+    Handle objGcInfo = createGcInfo(request->gcManager, request->gcStatInfo, THREAD);
 
     Handle objName = java_lang_String::create_from_platform_dependent_str(request->gcManager->name(), CHECK);
     Handle objAction = java_lang_String::create_from_platform_dependent_str(request->gcAction, CHECK);
     Handle objCause = java_lang_String::create_from_platform_dependent_str(request->gcCause, CHECK);
 
     klassOop k = Management::sun_management_GarbageCollectorImpl_klass(CHECK);
-    instanceKlassHandle gc_mbean_klass (THREAD, k);
+    instanceKlassHandle gc_mbean_klass(THREAD, k);
 
     instanceOop gc_mbean = request->gcManager->get_memory_manager_instance(THREAD);
     instanceHandle gc_mbean_h(THREAD, gc_mbean);
@@ -213,11 +239,6 @@
                             vmSymbols::createGCNotification_signature(),
                             &args,
                             CHECK);
-    if (HAS_PENDING_EXCEPTION) {
-      CLEAR_PENDING_EXCEPTION;
-    }
-
-    delete request;
   }
 }
 
--- a/hotspot/src/share/vm/services/gcNotifier.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/services/gcNotifier.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -60,6 +60,7 @@
   static GCNotificationRequest *last_request;
   static void addRequest(GCNotificationRequest *request);
   static GCNotificationRequest *getRequest();
+  static void sendNotificationInternal(TRAPS);
 public:
   static void pushNotification(GCMemoryManager *manager, const char *action, const char *cause);
   static bool has_event();
--- a/hotspot/src/share/vm/utilities/debug.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/utilities/debug.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -600,6 +600,10 @@
   tty->flush();
 }
 
+extern "C" void events() {
+  Command c("events");
+  Events::print();
+}
 
 // Given a heap address that was valid before the most recent GC, if
 // the oop that used to contain it is still live, prints the new
@@ -759,7 +763,7 @@
 
   tty->print_cr("misc.");
   tty->print_cr("  flush()       - flushes the log file");
-  tty->print_cr("  events()      - dump last 50 events");
+  tty->print_cr("  events()      - dump events from ring buffers");
 
 
   tty->print_cr("compiler debugging");
--- a/hotspot/src/share/vm/utilities/decoder.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/utilities/decoder.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -25,7 +25,9 @@
 #include "precompiled.hpp"
 #include "prims/jvm.h"
 #include "runtime/mutexLocker.hpp"
+#include "runtime/os.hpp"
 #include "utilities/decoder.hpp"
+#include "utilities/vmError.hpp"
 
 #if defined(_WINDOWS)
   #include "decoder_windows.hpp"
@@ -35,74 +37,94 @@
   #include "decoder_elf.hpp"
 #endif
 
-NullDecoder*  Decoder::_decoder = NULL;
-NullDecoder   Decoder::_do_nothing_decoder;
-Mutex*           Decoder::_decoder_lock = new Mutex(Mutex::safepoint,
-                                "DecoderLock");
+AbstractDecoder*  Decoder::_shared_decoder = NULL;
+AbstractDecoder*  Decoder::_error_handler_decoder = NULL;
+NullDecoder       Decoder::_do_nothing_decoder;
+Mutex*            Decoder::_shared_decoder_lock = new Mutex(Mutex::native,
+                                "SharedDecoderLock");
 
-// _decoder_lock should already acquired before enter this method
-NullDecoder* Decoder::get_decoder() {
-  assert(_decoder_lock != NULL && _decoder_lock->owned_by_self(),
+AbstractDecoder* Decoder::get_shared_instance() {
+  assert(_shared_decoder_lock != NULL && _shared_decoder_lock->owned_by_self(),
     "Require DecoderLock to enter");
 
-  if (_decoder != NULL) {
-    return _decoder;
+  if (_shared_decoder == NULL) {
+    _shared_decoder = create_decoder();
   }
+  return _shared_decoder;
+}
 
-  // Decoder is a secondary service. Although, it is good to have,
-  // but we can live without it.
+AbstractDecoder* Decoder::get_error_handler_instance() {
+  if (_error_handler_decoder == NULL) {
+    _error_handler_decoder = create_decoder();
+  }
+  return _error_handler_decoder;
+}
+
+
+AbstractDecoder* Decoder::create_decoder() {
+  AbstractDecoder* decoder;
 #if defined(_WINDOWS)
-  _decoder = new (std::nothrow) WindowsDecoder();
+  decoder = new (std::nothrow) WindowsDecoder();
 #elif defined (__APPLE__)
-    _decoder = new (std::nothrow)MachODecoder();
+  decoder = new (std::nothrow)MachODecoder();
 #else
-    _decoder = new (std::nothrow)ElfDecoder();
+  decoder = new (std::nothrow)ElfDecoder();
 #endif
 
-  if (_decoder == NULL || _decoder->has_error()) {
-    if (_decoder != NULL) {
-      delete _decoder;
+  if (decoder == NULL || decoder->has_error()) {
+    if (decoder != NULL) {
+      delete decoder;
     }
-    _decoder = &_do_nothing_decoder;
+    decoder = &_do_nothing_decoder;
   }
-  return _decoder;
+  return decoder;
 }
 
 bool Decoder::decode(address addr, char* buf, int buflen, int* offset, const char* modulepath) {
-  assert(_decoder_lock != NULL, "Just check");
-  MutexLockerEx locker(_decoder_lock, true);
-  NullDecoder* decoder = get_decoder();
+  assert(_shared_decoder_lock != NULL, "Just check");
+  bool error_handling_thread = os::current_thread_id() == VMError::first_error_tid;
+  MutexLockerEx locker(error_handling_thread ? NULL : _shared_decoder_lock, true);
+  AbstractDecoder* decoder = error_handling_thread ?
+    get_error_handler_instance(): get_shared_instance();
   assert(decoder != NULL, "null decoder");
 
   return decoder->decode(addr, buf, buflen, offset, modulepath);
 }
 
 bool Decoder::demangle(const char* symbol, char* buf, int buflen) {
-  assert(_decoder_lock != NULL, "Just check");
-  MutexLockerEx locker(_decoder_lock, true);
-  NullDecoder* decoder = get_decoder();
+  assert(_shared_decoder_lock != NULL, "Just check");
+  bool error_handling_thread = os::current_thread_id() == VMError::first_error_tid;
+  MutexLockerEx locker(error_handling_thread ? NULL : _shared_decoder_lock, true);
+  AbstractDecoder* decoder = error_handling_thread ?
+    get_error_handler_instance(): get_shared_instance();
   assert(decoder != NULL, "null decoder");
   return decoder->demangle(symbol, buf, buflen);
 }
 
 bool Decoder::can_decode_C_frame_in_vm() {
-  assert(_decoder_lock != NULL, "Just check");
-  MutexLockerEx locker(_decoder_lock, true);
-  NullDecoder* decoder = get_decoder();
+  assert(_shared_decoder_lock != NULL, "Just check");
+  bool error_handling_thread = os::current_thread_id() == VMError::first_error_tid;
+  MutexLockerEx locker(error_handling_thread ? NULL : _shared_decoder_lock, true);
+  AbstractDecoder* decoder = error_handling_thread ?
+    get_error_handler_instance(): get_shared_instance();
   assert(decoder != NULL, "null decoder");
   return decoder->can_decode_C_frame_in_vm();
 }
 
-// shutdown real decoder and replace it with
-// _do_nothing_decoder
+/*
+ * Shutdown shared decoder and replace it with
+ * _do_nothing_decoder. Do nothing with error handler
+ * instance, since the JVM is going down.
+ */
 void Decoder::shutdown() {
-  assert(_decoder_lock != NULL, "Just check");
-  MutexLockerEx locker(_decoder_lock, true);
+  assert(_shared_decoder_lock != NULL, "Just check");
+  MutexLockerEx locker(_shared_decoder_lock, true);
 
-  if (_decoder != NULL && _decoder != &_do_nothing_decoder) {
-    delete _decoder;
+  if (_shared_decoder != NULL &&
+    _shared_decoder != &_do_nothing_decoder) {
+    delete _shared_decoder;
   }
 
-  _decoder = &_do_nothing_decoder;
+  _shared_decoder = &_do_nothing_decoder;
 }
 
--- a/hotspot/src/share/vm/utilities/decoder.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/utilities/decoder.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@
 #include "memory/allocation.hpp"
 #include "runtime/mutex.hpp"
 
-class NullDecoder: public CHeapObj {
+class AbstractDecoder : public CHeapObj {
 public:
   // status code for decoding native C frame
   enum decoder_status {
@@ -43,6 +43,34 @@
          helper_init_error     // SymInitialize failed (Windows only)
   };
 
+  // decode an pc address to corresponding function name and an offset from the beginning of
+  // the function
+  virtual bool decode(address pc, char* buf, int buflen, int* offset,
+    const char* modulepath = NULL) = 0;
+  // demangle a C++ symbol
+  virtual bool demangle(const char* symbol, char* buf, int buflen) = 0;
+  // if the decoder can decode symbols in vm
+  virtual bool can_decode_C_frame_in_vm() const = 0;
+
+  virtual decoder_status status() const {
+    return _decoder_status;
+  }
+
+  virtual bool has_error() const {
+    return is_error(_decoder_status);
+  }
+
+  static bool is_error(decoder_status status) {
+    return (status > 0);
+  }
+
+protected:
+  decoder_status  _decoder_status;
+};
+
+// Do nothing decoder
+class NullDecoder : public AbstractDecoder {
+public:
   NullDecoder() {
     _decoder_status = not_available;
   }
@@ -61,40 +89,34 @@
   virtual bool can_decode_C_frame_in_vm() const {
     return false;
   }
-
-  virtual decoder_status status() const {
-    return _decoder_status;
-  }
-
-  virtual bool has_error() const {
-    return is_error(_decoder_status);
-  }
-
-  static bool is_error(decoder_status status) {
-    return (status > 0);
-  }
-
-protected:
-  decoder_status  _decoder_status;
 };
 
 
-class Decoder: AllStatic {
+class Decoder : AllStatic {
 public:
   static bool decode(address pc, char* buf, int buflen, int* offset, const char* modulepath = NULL);
   static bool demangle(const char* symbol, char* buf, int buflen);
   static bool can_decode_C_frame_in_vm();
 
+  // shutdown shared instance
   static void shutdown();
 protected:
-  static NullDecoder* get_decoder();
+  // shared decoder instance, _shared_instance_lock is needed
+  static AbstractDecoder* get_shared_instance();
+  // a private instance for error handler. Error handler can be
+  // triggered almost everywhere, including signal handler, where
+  // no lock can be taken. So the shared decoder can not be used
+  // in this scenario.
+  static AbstractDecoder* get_error_handler_instance();
 
+  static AbstractDecoder* create_decoder();
 private:
-  static NullDecoder*     _decoder;
-  static NullDecoder      _do_nothing_decoder;
+  static AbstractDecoder*     _shared_decoder;
+  static AbstractDecoder*     _error_handler_decoder;
+  static NullDecoder          _do_nothing_decoder;
 
 protected:
-  static Mutex*       _decoder_lock;
+  static Mutex*               _shared_decoder_lock;
 };
 
 #endif // SHARE_VM_UTILITIES_DECODER_HPP
--- a/hotspot/src/share/vm/utilities/decoder_elf.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/utilities/decoder_elf.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,7 +30,7 @@
 #include "utilities/decoder.hpp"
 #include "utilities/elfFile.hpp"
 
-class ElfDecoder: public NullDecoder {
+class ElfDecoder : public AbstractDecoder {
 
 public:
   ElfDecoder() {
--- a/hotspot/src/share/vm/utilities/events.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/utilities/events.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -68,6 +68,10 @@
   }
 }
 
+void Events::print() {
+  print_all(tty);
+}
+
 void Events::init() {
   if (LogEvents) {
     _messages = new StringEventLog("Events");
--- a/hotspot/src/share/vm/utilities/events.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/utilities/events.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -35,20 +35,12 @@
 // This facility is extremly useful for post-mortem debugging. The eventlog
 // often provides crucial information about events leading up to the crash.
 //
-// All arguments past the format string must be passed as an intptr_t.
-//
-// To log a single event use:
-//    Events::log("New nmethod has been created " INTPTR_FORMAT, nm);
-//
-// To log a block of events use:
-//    EventMark m("GarbageCollecting %d", (intptr_t)gc_number);
-//
-// The constructor to eventlog indents the eventlog until the
-// destructor has been executed.
-//
-// IMPLEMENTATION RESTRICTION:
-//   Max 3 arguments are saved for each logged event.
-//
+// Abstractly the logs can record whatever they way but normally they
+// would record at least a timestamp and the current Thread, along
+// with whatever data they need in a ring buffer.  Commonly fixed
+// length text messages are recorded for simplicity but other
+// strategies could be used.  Several logs are provided by default but
+// new instances can be created as needed.
 
 // The base event log dumping class that is registered for dumping at
 // crash time.  This is a very generic interface that is mainly here
@@ -79,7 +71,7 @@
 template <class T> class EventLogBase : public EventLog {
   template <class X> class EventRecord {
    public:
-    jlong   timestamp;
+    double  timestamp;
     Thread* thread;
     X       data;
   };
@@ -102,6 +94,10 @@
     _records = new EventRecord<T>[length];
   }
 
+  double fetch_timestamp() {
+    return os::elapsedTime();
+  }
+
   // move the ring buffer to next open slot and return the index of
   // the slot to use for the current message.  Should only be called
   // while mutex is held.
@@ -130,7 +126,7 @@
   void print(outputStream* out, T& e);
 
   void print(outputStream* out, EventRecord<T>& e) {
-    out->print("Event: " INT64_FORMAT " ", e.timestamp);
+    out->print("Event: %.3f ", e.timestamp);
     if (e.thread != NULL) {
       out->print("Thread " INTPTR_FORMAT " ", e.thread);
     }
@@ -155,7 +151,7 @@
   void logv(Thread* thread, const char* format, va_list ap) {
     if (!should_log()) return;
 
-    jlong timestamp = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
+    double timestamp = fetch_timestamp();
     MutexLockerEx ml(&_mutex, Mutex::_no_safepoint_check_flag);
     int index = compute_log_index();
     _records[index].thread = thread;
@@ -193,9 +189,8 @@
  public:
   static void print_all(outputStream* out);
 
-  static void print() {
-    print_all(tty);
-  }
+  // Dump all events to the tty
+  static void print();
 
   // Logs a generic message with timestamp and format as printf.
   static void log(Thread* thread, const char* format, ...);
@@ -255,6 +250,7 @@
   out->print_cr("%s (%d events):", _name, _count);
   if (_count == 0) {
     out->print_cr("No events");
+    out->cr();
     return;
   }
 
--- a/hotspot/src/share/vm/utilities/preserveException.cpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/utilities/preserveException.cpp	Wed Feb 22 16:52:50 2012 -0800
@@ -32,9 +32,9 @@
   thread     = Thread::current();
   _thread    = thread;
   _preserved_exception_oop = Handle(thread, _thread->pending_exception());
-  _thread->clear_pending_exception(); // Needed to avoid infinite recursion
   _preserved_exception_line = _thread->exception_line();
   _preserved_exception_file = _thread->exception_file();
+  _thread->clear_pending_exception(); // Needed to avoid infinite recursion
 }
 
 
--- a/hotspot/src/share/vm/utilities/vmError.hpp	Tue Feb 21 05:44:29 2012 -0800
+++ b/hotspot/src/share/vm/utilities/vmError.hpp	Wed Feb 22 16:52:50 2012 -0800
@@ -27,11 +27,12 @@
 
 #include "utilities/globalDefinitions.hpp"
 
-
+class Decoder;
 class VM_ReportJavaOutOfMemory;
 
 class VMError : public StackObj {
   friend class VM_ReportJavaOutOfMemory;
+  friend class Decoder;
 
   enum ErrorType {
     internal_error = 0xe0000000,
--- a/jaxp/.hgtags	Tue Feb 21 05:44:29 2012 -0800
+++ b/jaxp/.hgtags	Wed Feb 22 16:52:50 2012 -0800
@@ -147,3 +147,4 @@
 95102fd334183d15dc98a95dd0d749527b6c7300 jdk8-b23
 7836655e2495646c462f13de73dcc3ada197b64f jdk8-b24
 bb694c151fc7b5c8f9edc8af6a80738530feacaf jdk8-b25
+dbb7283c197b27da1fc12ae8a83785c851b68c12 jdk8-b26
--- a/jaxws/.hgtags	Tue Feb 21 05:44:29 2012 -0800
+++ b/jaxws/.hgtags	Wed Feb 22 16:52:50 2012 -0800
@@ -147,3 +147,4 @@
 25ce7a0004874273f6aeda14e7c3538cba34bdf1 jdk8-b23
 e0d90803439b174fe0b0033e09d50444ba12498f jdk8-b24
 b376d901e006cd9e0c59733c84e190aace23eec6 jdk8-b25
+3518639eab6ce5c7b482bdb0a60342c392ab97a8 jdk8-b26
--- a/jaxws/build-defs.xml	Tue Feb 21 05:44:29 2012 -0800
+++ b/jaxws/build-defs.xml	Wed Feb 22 16:52:50 2012 -0800
@@ -101,7 +101,7 @@
         <copy todir="${build.classes.dir}/META-INF"
               file="${secondary.src.dir}/META-INF/mimetypes.default"/>
         <copy todir="${build.classes.dir}/META-INF/services"
-              file="${primary.src.dir}/com/sun/tools/etc/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory"/>
+              file="${primary.src.dir}/com/sun/tools/etc/META-INF/services/com.sun.tools.internal.ws.wscompile.Plugin"/>
         <copy todir="${build.classes.dir}/META-INF/services"
               file="${primary.src.dir}/com/sun/tools/etc/META-INF/services/com.sun.tools.internal.xjc.Plugin"/>
         <mkdir dir="${build.classes.dir}/com/sun/tools/internal/xjc/runtime"/>
--- a/jaxws/jaxws.properties	Tue Feb 21 05:44:29 2012 -0800
+++ b/jaxws/jaxws.properties	Wed Feb 22 16:52:50 2012 -0800
@@ -25,8 +25,8 @@
 
 drops.master.copy.base=${drops.dir}
 
-jaxws_src.bundle.name=jdk8-jaxws2_2_4-b01-2011_07_22.zip
-jaxws_src.bundle.md5.checksum=f64bedd3c512e6b1ca265fda2feb0905
+jaxws_src.bundle.name=jdk8-jaxws-2_2-SNAPSHOT-2012_01_11-patched.zip
+jaxws_src.bundle.md5.checksum=005b93d1a2d6e66438c3c84c49c10b13
 jaxws_src.master.bundle.dir=${drops.master.copy.base}
 jaxws_src.master.bundle.url.base=http://download.java.net/glassfish/components/jax-ws/openjdk/jdk8
 
--- a/jdk/.hgtags	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/.hgtags	Wed Feb 22 16:52:50 2012 -0800
@@ -147,3 +147,4 @@
 54202e0148ec7d4570cab5bc9b00d216a7677569 jdk8-b23
 34029a0c69bba882264a29fc822f8283fd15f104 jdk8-b24
 ec17fbe5b8fbc52da070eec43b4711d9354b2ab8 jdk8-b25
+5aca406e87cb9144a9405be312dadd728a9c6fe2 jdk8-b26
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsProgressBarUI.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsProgressBarUI.java	Wed Feb 22 16:52:50 2012 -0800
@@ -137,6 +137,11 @@
                 g.setColor(progressBar.getForeground());
                 barRectHeight -= 2;
                 barRectWidth -= 2;
+
+                if (barRectWidth <= 0 || barRectHeight <= 0) {
+                    return;
+                }
+
                 Graphics2D g2 = (Graphics2D)g;
                 g2.setStroke(new BasicStroke((float)(vertical ? barRectWidth : barRectHeight),
                                              BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));
--- a/jdk/src/share/classes/java/awt/List.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/java/awt/List.java	Wed Feb 22 16:52:50 2012 -0800
@@ -115,7 +115,7 @@
      * @see #addItem(String)
      * @see #getItem(int)
      */
-    Vector      items = new Vector();
+    Vector<String>      items = new Vector<>();
 
     /**
      * This field will represent the number of visible rows in the
@@ -306,7 +306,7 @@
     //       to insure that it cannot be overridden by client subclasses.
     //       DO NOT INVOKE CLIENT CODE ON THIS THREAD!
     final String getItemImpl(int index) {
-        return (String)items.elementAt(index);
+        return items.elementAt(index);
     }
 
     /**
@@ -415,7 +415,7 @@
         if (peer != null) {
             peer.removeAll();
         }
-        items = new Vector();
+        items = new Vector<>();
         selected = new int[0];
     }
 
@@ -490,9 +490,9 @@
     public synchronized int[] getSelectedIndexes() {
         ListPeer peer = (ListPeer)this.peer;
         if (peer != null) {
-            selected = ((ListPeer)peer).getSelectedIndexes();
+            selected = peer.getSelectedIndexes();
         }
-        return (int[])selected.clone();
+        return selected.clone();
     }
 
     /**
@@ -908,7 +908,7 @@
      * @since 1.4
      */
     public synchronized ItemListener[] getItemListeners() {
-        return (ItemListener[])(getListeners(ItemListener.class));
+        return getListeners(ItemListener.class);
     }
 
     /**
@@ -975,7 +975,7 @@
      * @since 1.4
      */
     public synchronized ActionListener[] getActionListeners() {
-        return (ActionListener[])(getListeners(ActionListener.class));
+        return getListeners(ActionListener.class);
     }
 
     /**
--- a/jdk/src/share/classes/java/awt/Window.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/java/awt/Window.java	Wed Feb 22 16:52:50 2012 -0800
@@ -398,10 +398,10 @@
             initIDs();
         }
 
-        String s = (String) java.security.AccessController.doPrivileged(
+        String s = java.security.AccessController.doPrivileged(
             new GetPropertyAction("java.awt.syncLWRequests"));
         systemSyncLWRequests = (s != null && s.equals("true"));
-        s = (String) java.security.AccessController.doPrivileged(
+        s = java.security.AccessController.doPrivileged(
             new GetPropertyAction("java.awt.Window.locationByPlatform"));
         locationByPlatformProp = (s != null && s.equals("true"));
     }
@@ -1378,7 +1378,7 @@
                 // make sure the privileged action is only
                 // for getting the property! We don't want the
                 // above checkTopLevelWindow call to always succeed!
-                warningString = (String) AccessController.doPrivileged(
+                warningString = AccessController.doPrivileged(
                       new GetPropertyAction("awt.appletWarning",
                                             "Java Applet Window"));
             }
--- a/jdk/src/share/classes/java/awt/color/ICC_Profile.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/java/awt/color/ICC_Profile.java	Wed Feb 22 16:52:50 2012 -0800
@@ -921,9 +921,9 @@
      */
     private static ICC_Profile getStandardProfile(final String name) {
 
-        return (ICC_Profile) AccessController.doPrivileged(
-            new PrivilegedAction() {
-                 public Object run() {
+        return AccessController.doPrivileged(
+            new PrivilegedAction<ICC_Profile>() {
+                 public ICC_Profile run() {
                      ICC_Profile p = null;
                      try {
                          p = getInstance (name);
--- a/jdk/src/share/classes/java/awt/event/InputEvent.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/java/awt/event/InputEvent.java	Wed Feb 22 16:52:50 2012 -0800
@@ -321,14 +321,15 @@
      * @param when         a long int that gives the time the event occurred.
      *                     Passing negative or zero value
      *                     is not recommended
-     * @param modifiers    the modifier keys down during event (e.g. shift, ctrl,
-     *                     alt, meta)
-     *                     Passing negative parameter is not recommended.
-     *                     Zero value means no modifiers.
-     *                     Either extended _DOWN_MASK or old _MASK modifiers
-     *                     should be used, but both models should not be mixed
-     *                     in one event. Use of the extended modifiers is
-     *                     preferred
+     * @param modifiers    a modifier mask describing the modifier keys and mouse
+     *                     buttons (for example, shift, ctrl, alt, and meta) that
+     *                     are down during the event.
+     *                     Only extended modifiers are allowed to be used as a
+     *                     value for this parameter (see the {@link InputEvent#getModifiersEx}
+     *                     class for the description of extended modifiers).
+     *                     Passing negative parameter
+     *                     is not recommended.
+     *                     Zero value means that no modifiers were passed
      * @throws IllegalArgumentException if <code>source</code> is null
      * @see #getSource()
      * @see #getID()
@@ -416,9 +417,13 @@
 
     /**
      * Returns the extended modifier mask for this event.
+     * <P>
+     * Extended modifiers are the modifiers that ends with the _DOWN_MASK suffix,
+     * such as ALT_DOWN_MASK, BUTTON1_DOWN_MASK, and others.
+     * <P>
      * Extended modifiers represent the state of all modal keys,
      * such as ALT, CTRL, META, and the mouse buttons just after
-     * the event occurred
+     * the event occurred.
      * <P>
      * For example, if the user presses <b>button 1</b> followed by
      * <b>button 2</b>, and then releases them in the same order,
--- a/jdk/src/share/classes/java/awt/event/MouseEvent.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/java/awt/event/MouseEvent.java	Wed Feb 22 16:52:50 2012 -0800
@@ -488,14 +488,15 @@
      * @param when         A long integer that gives the time the event occurred.
      *                     Passing negative or zero value
      *                     is not recommended
-     * @param modifiers    The modifier keys down during event (e.g. shift, ctrl,
-     *                     alt, meta)
+     * @param modifiers    a modifier mask describing the modifier keys and mouse
+     *                     buttons (for example, shift, ctrl, alt, and meta) that
+     *                     are down during the event.
+     *                     Only extended modifiers are allowed to be used as a
+     *                     value for this parameter (see the {@link InputEvent#getModifiersEx}
+     *                     class for the description of extended modifiers).
      *                     Passing negative parameter
      *                     is not recommended.
-     *                     Zero value means that no modifiers were passed.
-     *                     Use either an extended _DOWN_MASK or old _MASK modifiers,
-     *                     however do not mix models in the one event.
-     *                     The extended modifiers are preferred for using
+     *                     Zero value means that no modifiers were passed
      * @param x            The horizontal x coordinate for the mouse location.
      *                       It is allowed to pass negative values
      * @param y            The vertical y coordinate for the mouse location.
@@ -586,14 +587,15 @@
      * @param when         A long integer that gives the time the event occurred.
      *                     Passing negative or zero value
      *                     is not recommended
-     * @param modifiers    The modifier keys down during event (e.g. shift, ctrl,
-     *                     alt, meta)
+     * @param modifiers    a modifier mask describing the modifier keys and mouse
+     *                     buttons (for example, shift, ctrl, alt, and meta) that
+     *                     are down during the event.
+     *                     Only extended modifiers are allowed to be used as a
+     *                     value for this parameter (see the {@link InputEvent#getModifiersEx}
+     *                     class for the description of extended modifiers).
      *                     Passing negative parameter
      *                     is not recommended.
-     *                     Zero value means that no modifiers were passed.
-     *                     Use either an extended _DOWN_MASK or old _MASK modifiers,
-     *                     however do not mix models in the one event.
-     *                     The extended modifiers are preferred for using
+     *                     Zero value means that no modifiers were passed
      * @param x            The horizontal x coordinate for the mouse location.
      *                       It is allowed to pass negative values
      * @param y            The vertical y coordinate for the mouse location.
@@ -657,14 +659,15 @@
      * @param when         A long integer that gives the time the event occurred.
      *                     Passing negative or zero value
      *                     is not recommended
-     * @param modifiers    The modifier keys down during event (e.g. shift, ctrl,
-     *                     alt, meta)
+     * @param modifiers    a modifier mask describing the modifier keys and mouse
+     *                     buttons (for example, shift, ctrl, alt, and meta) that
+     *                     are down during the event.
+     *                     Only extended modifiers are allowed to be used as a
+     *                     value for this parameter (see the {@link InputEvent#getModifiersEx}
+     *                     class for the description of extended modifiers).
      *                     Passing negative parameter
      *                     is not recommended.
-     *                     Zero value means that no modifiers were passed.
-     *                     Use either an extended _DOWN_MASK or old _MASK modifiers,
-     *                     however do not mix models in the one event.
-     *                     The extended modifiers are preferred for using
+     *                     Zero value means that no modifiers were passed
      * @param x            The horizontal x coordinate for the mouse location.
      *                       It is allowed to pass negative values
      * @param y            The vertical y coordinate for the mouse location.
--- a/jdk/src/share/classes/javax/print/attribute/standard/PrinterStateReasons.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/PrinterStateReasons.java	Wed Feb 22 16:52:50 2012 -0800
@@ -180,8 +180,7 @@
         if (severity == null) {
             throw new NullPointerException("severity is null");
         }
-        return super.put((PrinterStateReason) reason,
-                         (Severity) severity);
+        return super.put(reason, severity);
     }
 
     /**
--- a/jdk/src/share/classes/javax/print/attribute/standard/ReferenceUriSchemesSupported.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/ReferenceUriSchemesSupported.java	Wed Feb 22 16:52:50 2012 -0800
@@ -141,7 +141,7 @@
      * Returns the string table for class ReferenceUriSchemesSupported.
      */
     protected String[] getStringTable() {
-        return (String[])myStringTable.clone();
+        return myStringTable.clone();
     }
 
     /**
--- a/jdk/src/share/classes/javax/swing/JOptionPane.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/javax/swing/JOptionPane.java	Wed Feb 22 16:52:50 2012 -0800
@@ -34,7 +34,6 @@
 import java.awt.Frame;
 import java.awt.Point;
 import java.awt.HeadlessException;
-import java.awt.Toolkit;
 import java.awt.Window;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
@@ -994,8 +993,7 @@
                 // if the user closed the window without selecting a button
                 // (newValue = null in that case).  Otherwise, close the dialog.
                 if (dialog.isVisible() && event.getSource() == JOptionPane.this &&
-                        (event.getPropertyName().equals(VALUE_PROPERTY) ||
-                                event.getPropertyName().equals(INPUT_VALUE_PROPERTY)) &&
+                        (event.getPropertyName().equals(VALUE_PROPERTY)) &&
                         event.getNewValue() != null &&
                         event.getNewValue() != JOptionPane.UNINITIALIZED_VALUE) {
                     dialog.setVisible(false);
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java	Wed Feb 22 16:52:50 2012 -0800
@@ -1236,6 +1236,7 @@
                 int       index = list.locationToIndex(e.getPoint());
 
                 optionPane.setInputValue(list.getModel().getElementAt(index));
+                optionPane.setValue(JOptionPane.OK_OPTION);
             }
         }
 
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java	Wed Feb 22 16:52:50 2012 -0800
@@ -434,6 +434,8 @@
 
         // Empty out the renderer pane, allowing renderers to be gc'ed.
         rendererPane.removeAll();
+
+        paintContext = null;
     }
 
     private void configureRenderer(SynthContext context) {
--- a/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java	Wed Feb 22 16:52:50 2012 -0800
@@ -156,7 +156,7 @@
     protected Color borderSelectionColor;
 
     private boolean isDropCell;
-    private boolean fillBackground = true;
+    private boolean fillBackground;
 
     /**
      * Set to true after the constructor has run.
--- a/jdk/src/share/classes/sun/awt/image/OffScreenImageSource.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/sun/awt/image/OffScreenImageSource.java	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -185,6 +185,7 @@
             theConsumer.setDimensions(image.getWidth(), image.getHeight());
             theConsumer.setProperties(properties);
             sendPixels();
+            theConsumer.imageComplete(ImageConsumer.SINGLEFRAMEDONE);
             theConsumer.imageComplete(ImageConsumer.STATICIMAGEDONE);
         } catch (NullPointerException e) {
             if (theConsumer != null) {
--- a/jdk/src/share/classes/sun/beans/infos/ComponentBeanInfo.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/sun/beans/infos/ComponentBeanInfo.java	Wed Feb 22 16:52:50 2012 -0800
@@ -32,7 +32,7 @@
  */
 
 public class ComponentBeanInfo extends SimpleBeanInfo {
-    private static final Class beanClass = java.awt.Component.class;
+    private static final Class<java.awt.Component> beanClass = java.awt.Component.class;
 
     public PropertyDescriptor[] getPropertyDescriptors() {
         try {
--- a/jdk/src/share/classes/sun/font/FileFont.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/sun/font/FileFont.java	Wed Feb 22 16:52:50 2012 -0800
@@ -163,7 +163,9 @@
                 }
             }
         }
-        scaler.dispose();
+        if (scaler != null) {
+            scaler.dispose();
+        }
         scaler = FontScaler.getNullScaler();
     }
 
--- a/jdk/src/share/classes/sun/font/StandardGlyphVector.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/sun/font/StandardGlyphVector.java	Wed Feb 22 16:52:50 2012 -0800
@@ -1740,8 +1740,9 @@
                                                      tx,
                                                      sgv.font.getStyle(),
                                                      aa, fm);
-
-            FontStrike strike = sgv.font2D.getStrike(desc);  // !!! getStrike(desc, false)
+            // Get the strike via the handle. Shouldn't matter
+            // if we've invalidated the font but its an extra precaution.
+            FontStrike strike = sgv.font2D.handle.font2D.getStrike(desc);  // !!! getStrike(desc, false)
 
             return new GlyphStrike(sgv, strike, dx, dy);
         }
--- a/jdk/src/share/classes/sun/font/SunFontManager.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/sun/font/SunFontManager.java	Wed Feb 22 16:52:50 2012 -0800
@@ -2619,6 +2619,9 @@
         physicalFonts.remove(oldFont.fullName);
         fullNameToFont.remove(oldFont.fullName.toLowerCase(Locale.ENGLISH));
         FontFamily.remove(oldFont);
+        if (oldFont instanceof FileFont) {
+            ((FileFont)oldFont).deregisterFontAndClearStrikeCache();
+        }
 
         if (localeFullNamesToFont != null) {
             Map.Entry[] mapEntries =
--- a/jdk/src/share/classes/sun/font/TrueTypeFont.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/share/classes/sun/font/TrueTypeFont.java	Wed Feb 22 16:52:50 2012 -0800
@@ -1037,6 +1037,9 @@
             if (head_Table != null && head_Table.capacity() >= 18) {
                 ShortBuffer sb = head_Table.asShortBuffer();
                 upem = sb.get(9) & 0xffff;
+                if (upem < 16 || upem > 16384) {
+                    upem = 2048;
+                }
             }
 
             ByteBuffer os2_Table = getTableBuffer(os_2Tag);
--- a/jdk/src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.c	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.c	Wed Feb 22 16:52:50 2012 -0800
@@ -171,6 +171,53 @@
     return array;
 }
 
+/**
+ * Convert a GSList to an array of filenames (with the parent folder)
+ */
+static jobjectArray toPathAndFilenamesArray(JNIEnv *env, GSList* list)
+{
+    jstring str;
+    jclass stringCls;
+    GSList *iterator;
+    jobjectArray array;
+    int i;
+    char* entry;
+
+
+    if (list == NULL) {
+        return NULL;
+    }
+
+    stringCls = (*env)->FindClass(env, "java/lang/String");
+    if (stringCls == NULL) {
+        JNU_ThrowInternalError(env, "Could not get java.lang.String class");
+        return NULL;
+    }
+
+    array = (*env)->NewObjectArray(env, fp_gtk_g_slist_length(list), stringCls,
+            NULL);
+    if (array == NULL) {
+        JNU_ThrowInternalError(env, "Could not instantiate array files array");
+        return NULL;
+    }
+
+    i = 0;
+    for (iterator = list; iterator; iterator = iterator->next) {
+        entry = (char*) iterator->data;
+
+        //check for leading slash.
+        if (entry[0] == '/') {
+            entry++;
+        }
+
+        str = (*env)->NewStringUTF(env, entry);
+        (*env)->SetObjectArrayElement(env, array, i, str);
+        i++;
+    }
+
+    return array;
+}
+
 static void handle_response(GtkWidget* aDialog, gint responseId, gpointer obj)
 {
     JNIEnv *env;
@@ -183,16 +230,25 @@
     env = (JNIEnv *) JNU_GetEnv(jvm, JNI_VERSION_1_2);
     current_folder = NULL;
     filenames = NULL;
+    gboolean full_path_names = FALSE;
 
     if (responseId == GTK_RESPONSE_ACCEPT) {
         current_folder = fp_gtk_file_chooser_get_current_folder(
                 GTK_FILE_CHOOSER(aDialog));
+        if (current_folder == NULL) {
+            full_path_names = TRUE;
+        }
         filenames = fp_gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(aDialog));
     }
-
-    jcurrent_folder = (*env)->NewStringUTF(env, current_folder);
-    jfilenames = toFilenamesArray(env, filenames);
-
+    if (full_path_names) {
+        //This is a hack for use with "Recent Folders" in gtk where each
+        //file could have its own directory.
+        jcurrent_folder = (*env)->NewStringUTF(env, "/");
+        jfilenames = toPathAndFilenamesArray(env, filenames);
+    } else {
+        jcurrent_folder = (*env)->NewStringUTF(env, current_folder);
+        jfilenames = toFilenamesArray(env, filenames);
+    }
     (*env)->CallVoidMethod(env, obj, setFileInternalMethodID, jcurrent_folder,
             jfilenames);
     fp_g_free(current_folder);
--- a/jdk/test/java/awt/Choice/ChoiceMouseWheelTest/ChoiceMouseWheelTest.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/test/java/awt/Choice/ChoiceMouseWheelTest/ChoiceMouseWheelTest.java	Wed Feb 22 16:52:50 2012 -0800
@@ -96,7 +96,10 @@
 
             // Test mouse wheel over the choice
             String name = Toolkit.getDefaultToolkit().getClass().getName();
-            if(!name.equals("sun.awt.X11.XToolkit")) { // mouse wheel doesn't work for the choice on X11, so skip it
+
+            // mouse wheel doesn't work for the choice on X11 and Mac, so skip it
+            if(!name.equals("sun.awt.X11.XToolkit")
+               && !name.equals("sun.lwawt.macosx.LWCToolkit")) {
                 robot.mouseWheel(1);
                 Util.waitForIdle(robot);
 
--- a/jdk/test/java/awt/print/PaintSetEnabledDeadlock/PaintSetEnabledDeadlock.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/test/java/awt/print/PaintSetEnabledDeadlock/PaintSetEnabledDeadlock.java	Wed Feb 22 16:52:50 2012 -0800
@@ -54,9 +54,12 @@
             Util.clickOnComp(frame.button, robot);
         }
 
-        frame.panel.stop();
+        boolean ret = frame.panel.stop();
         frame.dispose();
 
+        if (!ret) {
+            throw new RuntimeException("Test failed!");
+        }
         System.out.println("Test passed.");
     }
 
@@ -140,17 +143,19 @@
         }
     }
 
-    public void stop() {
+    public boolean stop() {
         active = false;
         try {
-            synchronized (sync) {
-                sync.notify();
-            }
-            synchronized (thread) {
-                thread.wait();
+            sync();
+            thread.join(1000);
+            if (thread.isAlive()) {
+                thread.interrupt();
+                return false;
             }
         } catch (InterruptedException ex) {
+            return false;
         }
+        return true;
     }
 
     public void draw() {
--- a/jdk/test/javax/swing/JFileChooser/6396844/TwentyThousandTest.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/jdk/test/javax/swing/JFileChooser/6396844/TwentyThousandTest.java	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,28 +26,29 @@
  * @bug 6396844
  * @summary Tests memory leak for 20000 files
  * @author Sergey Malenkov
- * @run main/othervm/timeout=1000 -mx256m TwentyThousandTest
+ * @library ../../regtesthelpers
+ * @build Util
+ * @run main/othervm/timeout=1000 -mx128m TwentyThousandTest
  */
 
+import sun.java2d.Disposer;
+import sun.java2d.DisposerRecord;
+
 import javax.swing.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
+import java.awt.event.HierarchyEvent;
+import java.awt.event.HierarchyListener;
 import java.io.File;
 import java.io.FileWriter;
 
-public class TwentyThousandTest implements ActionListener, Runnable {
+public class TwentyThousandTest {
 
     private static final int FILES = 20000;
-    private static final int ATTEMPTS = 100;
+    private static final int ATTEMPTS = 20;
     private static final int INTERVAL = 100;
 
-    private static final boolean ALWAYS_NEW_INSTANCE = false;
-    private static final boolean UPDATE_UI_EACH_INTERVAL = true;
-    private static final boolean AUTO_CLOSE_DIALOG = true;
+    private static String tmpDir;
 
-    private static JFileChooser CHOOSER;
-
-    private static String tmpDir;
+    private static volatile boolean disposerComplete;
 
     public static void main(String[] args) throws Exception {
         tmpDir = System.getProperty("java.io.tmpdir");
@@ -77,15 +78,13 @@
 
             System.out.println("Do " + ATTEMPTS + " attempts for " + laf.getClassName());
 
-            for ( int i = 0; i < ATTEMPTS; i++ ) {
+            for (int i = 0; i < ATTEMPTS; i++) {
                 System.out.print(i + " ");
 
                 doAttempt();
             }
 
             System.out.println();
-
-            CHOOSER = null;
         }
 
         System.out.println("Removing " + FILES + " files");
@@ -94,7 +93,7 @@
             getTempFile(i).delete();
         }
 
-        System.out.println( "Test passed successfully" );
+        System.out.println("Test passed successfully");
     }
 
     private static File getTempFile(int i) {
@@ -104,48 +103,55 @@
     private static void doAttempt() throws Exception {
         SwingUtilities.invokeAndWait(new Runnable() {
             public void run() {
-                if ( ALWAYS_NEW_INSTANCE || ( CHOOSER == null ) )
-                    CHOOSER = new JFileChooser(tmpDir);
+                final JFileChooser chooser = new JFileChooser(tmpDir);
+
+                chooser.updateUI();
 
-                if ( UPDATE_UI_EACH_INTERVAL )
-                    CHOOSER.updateUI();
+                // Postpone JFileChooser closing until it becomes visible
+                chooser.addHierarchyListener(new HierarchyListener() {
+                    @Override
+                    public void hierarchyChanged(HierarchyEvent e) {
+                        if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0) {
+                            if (chooser.isShowing()) {
+                                Thread thread = new Thread(new Runnable() {
+                                    public void run() {
+                                        try {
+                                            Thread.sleep(INTERVAL);
 
-                if ( AUTO_CLOSE_DIALOG ) {
-                    Thread t = new Thread( new TwentyThousandTest( CHOOSER ) );
-                    t.start();
-                    CHOOSER.showOpenDialog( null );
-                } else {
-                    CHOOSER.showOpenDialog( null );
-                }
+                                            // Close JFileChooser
+                                            SwingUtilities.invokeLater(new Runnable() {
+                                                public void run() {
+                                                    chooser.cancelSelection();
+                                                }
+                                            });
+                                        } catch (InterruptedException e) {
+                                            throw new RuntimeException(e);
+                                        }
+                                    }
+                                });
+
+                                thread.start();
+                            }
+                        }
+                    }
+                });
+
+                chooser.showOpenDialog(null);
             }
         });
 
-        // Allow to collect garbage by GC
-        Thread.sleep(1000);
-
-        System.gc();
-    }
-
-    private final JFileChooser chooser;
-
-    TwentyThousandTest( JFileChooser chooser ) {
-        this.chooser = chooser;
-    }
+        DisposerRecord disposerRecord = new DisposerRecord() {
+            public void dispose() {
+                disposerComplete = true;
+            }
+        };
 
-    public void run() {
-        while ( !this.chooser.isShowing() ) {
-            try {
-                Thread.sleep( 30 );
-            } catch ( InterruptedException exception ) {
-                exception.printStackTrace();
-            }
+        disposerComplete = false;
+
+        Disposer.addRecord(new Object(), disposerRecord);
+
+        while (!disposerComplete) {
+            Util.generateOOME();
         }
-        Timer timer = new Timer( INTERVAL, this );
-        timer.setRepeats( false );
-        timer.start();
-    }
-
-    public void actionPerformed( ActionEvent event ) {
-        this.chooser.cancelSelection();
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JOptionPane/7138665/bug7138665.java	Wed Feb 22 16:52:50 2012 -0800
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+   @bug 7138665
+   @summary JOptionPane.getValue() unexpected change between JRE 1.6 and JRE 1.7
+   @author Pavel Porvatov
+*/
+
+import sun.awt.SunToolkit;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.KeyEvent;
+
+public class bug7138665 {
+    public static void main(String[] args) throws Exception {
+        SwingUtilities.invokeLater(new Runnable() {
+            @Override
+            public void run() {
+                JOptionPane pane = new JOptionPane("Enter value", JOptionPane.QUESTION_MESSAGE,
+                        JOptionPane.OK_CANCEL_OPTION, null, null, null);
+                pane.setWantsInput(true);
+
+                JDialog dialog = pane.createDialog(null, "My Dialog");
+                dialog.setVisible(true);
+
+                Object result = pane.getValue();
+
+                if (result == null || ((Integer) result).intValue() != JOptionPane.OK_OPTION) {
+                    throw new RuntimeException("Invalid result: " + result);
+                }
+
+                System.out.println("Test bug7138665 passed");
+            }
+        });
+
+        SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
+
+        toolkit.realSync();
+
+        Robot robot = new Robot();
+
+        robot.setAutoDelay(100);
+        robot.keyPress(KeyEvent.VK_ENTER);
+        robot.keyRelease(KeyEvent.VK_ENTER);
+
+        toolkit.realSync();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JProgressBar/7141573/bug7141573.java	Wed Feb 22 16:52:50 2012 -0800
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+   @bug 7141573
+   @summary JProgressBar resize exception, if setStringPainted in Windows LAF
+   @author Pavel Porvatov
+*/
+
+import javax.swing.*;
+import java.awt.image.BufferedImage;
+
+public class bug7141573 {
+    public static void main(String[] args) throws Exception {
+        try {
+            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
+        } catch (Exception e) {
+            System.out.println("WindowsLookAndFeel is not supported. The test bug7141573 is skipped.");
+
+            return;
+        }
+
+        SwingUtilities.invokeAndWait(new Runnable() {
+            @Override
+            public void run() {
+                BufferedImage image = new BufferedImage(200, 200, BufferedImage.TYPE_INT_ARGB);
+
+                JProgressBar bar = new JProgressBar();
+
+                bar.setStringPainted(true);
+
+                bar.setSize(100, 1);
+                bar.paint(image.getGraphics());
+
+                bar.setSize(1, 100);
+                bar.paint(image.getGraphics());
+
+                System.out.println("The test bug7141573 is passed.");
+            }
+        });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JTree/4314199/bug4314199.html	Wed Feb 22 16:52:50 2012 -0800
@@ -0,0 +1,8 @@
+<html>
+<body>
+Select the last tree node (marked "Here") and click on the menu.
+Look at the vertical line connecting nodes "Bug" and "Here". If
+this line disappears when the menu drops down, test fails.
+<applet  code="bug4314199.class" width=200 height=200></applet>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JTree/4314199/bug4314199.java	Wed Feb 22 16:52:50 2012 -0800
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+/*
+ * @test
+ * @bug 4314199
+ * @summary Tests that JTree repaints correctly in a container with a JMenu
+ * @author Peter Zhelezniakov
+ * @run applet/manual=yesno bug4314199.html
+ */
+
+import javax.swing.*;
+import javax.swing.tree.*;
+
+public class bug4314199 extends JApplet {
+
+    public void init() {
+
+        try {
+            UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
+            SwingUtilities.invokeAndWait(new Runnable() {
+
+                public void run() {
+                    createAndShowGUI();
+                }
+            });
+        } catch (final Exception e) {
+            SwingUtilities.invokeLater(new Runnable() {
+
+                public void run() {
+                    createAndShowMessage("Test fails because of exception: "
+                            + e.getMessage());
+                }
+            });
+        }
+
+    }
+
+    private void createAndShowMessage(String message) {
+        getContentPane().add(new JLabel(message));
+    }
+
+    private void createAndShowGUI() {
+        JMenuBar mb = new JMenuBar();
+
+        // needed to exactly align left edge of menu and angled line of tree
+        mb.add(Box.createHorizontalStrut(27));
+
+        JMenu mn = new JMenu("Menu");
+        JMenuItem mi = new JMenuItem("MenuItem");
+        mn.add(mi);
+        mb.add(mn);
+        setJMenuBar(mb);
+
+        DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("Root");
+        DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("Duke");
+        n1.add(n2);
+        DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("Bug");
+        n2.add(n3);
+        n3.add(new DefaultMutableTreeNode("Blah"));
+        n3.add(new DefaultMutableTreeNode("Blah"));
+        n3.add(new DefaultMutableTreeNode("Blah"));
+        DefaultMutableTreeNode n4 = new DefaultMutableTreeNode("Here");
+        n2.add(n4);
+
+        JTree tree = new JTree(new DefaultTreeModel(n1));
+        tree.putClientProperty("JTree.lineStyle", "Angled");
+        tree.expandPath(new TreePath(new Object[]{n1, n2, n3}));
+        setContentPane(tree);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/tree/DefaultTreeCellRenderer/7142955/bug7142955.java	Wed Feb 22 16:52:50 2012 -0800
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+   @bug 7142955
+   @summary DefaultTreeCellRenderer doesn't honor 'Tree.rendererFillBackground' LAF property
+   @author Pavel Porvatov
+*/
+
+import javax.swing.*;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+
+public class bug7142955 {
+    private static final Color TEST_COLOR = Color.RED;
+
+    public static void main(String[] args) throws Exception {
+        UIManager.put("Tree.rendererFillBackground", Boolean.FALSE);
+        UIManager.put("Tree.textBackground", TEST_COLOR);
+
+        SwingUtilities.invokeAndWait(new Runnable() {
+            @Override
+            public void run() {
+                int w = 200;
+                int h = 100;
+
+                BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
+
+                Graphics g = image.getGraphics();
+
+                g.setColor(Color.WHITE);
+                g.fillRect(0, 0, image.getWidth(), image.getHeight());
+
+                DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
+
+                renderer.setSize(w, h);
+                renderer.paint(g);
+
+                for (int y = 0; y < h; y++) {
+                    for (int x = 0; x < w; x++) {
+                        if (image.getRGB(x, y) == TEST_COLOR.getRGB()) {
+                            throw new RuntimeException("Test bug7142955 failed");
+                        }
+                    }
+                }
+
+                System.out.println("Test bug7142955 passed.");
+            }
+        });
+    }
+}
--- a/langtools/.hgtags	Tue Feb 21 05:44:29 2012 -0800
+++ b/langtools/.hgtags	Wed Feb 22 16:52:50 2012 -0800
@@ -147,3 +147,4 @@
 601ffcc6551d5414ef871be306c3a26396cf16a7 jdk8-b23
 6c9d21ca92c41ff5fcfa76c5b7fafe0f042f4aef jdk8-b24
 520c30f85bb529a3daf5d7623764c2464f00fd19 jdk8-b25
+b556aa8a99c358469861770aebdce884e06fa178 jdk8-b26
--- a/langtools/make/Makefile-classic	Tue Feb 21 05:44:29 2012 -0800
+++ b/langtools/make/Makefile-classic	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2012 Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -115,7 +115,6 @@
 JAVADOC_JAR = $(LIB_DIR)/javadoc.jar
 JAVAH_JAR = $(LIB_DIR)/javah.jar
 JAVAP_JAR = $(LIB_DIR)/javap.jar
-APT_JAR = $(LIB_DIR)/apt.jar
 
 CLASSES_JAR = $(DIST_DIR)/classes.jar
 SRC_ZIP = $(DIST_DIR)/src.zip
@@ -163,7 +162,7 @@
 
 #----- useful macros
 
-TOOLS =  javac javadoc javah javap apt
+TOOLS =  javac javadoc javah javap
 
 SOURCE_LEVEL = 5
 BOOTSTRAP_TARGET_LEVEL = 5
@@ -319,28 +318,6 @@
 	( $(ECHO) Main-Class: sun.tools.javap.Main ) > $(BUILD_DIR)/javap.mf
 	$(BOOTJAR) -cfm $@ $(BUILD_DIR)/javap.mf $(patsubst %,-C $(CLASSES_DIR) %, $(JAVAP_DIRS))
 
-#----- apt
-
-APT_DIRS = \
-	com/sun/mirror \
-	com/sun/tools/apt
-
-APT_RESOURCE_FILES = \
-	$(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(APT_DIRS)) -name SCCS -prune -o -name \*.properties -print )
-
-APT_JAVA_FILES = \
-	$(shell find $(patsubst %,$(SRC_CLASSES_DIR)/%,$(APT_DIRS)) -name SCCS -prune -o -name \*.java -print ) \
-	$(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(APT_RESOURCE_FILES))
- 
-$(APT_JAR): $(APT_JAVA_FILES) $(JAVAC_JAR) \
-		$(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(APT_RESOURCE_FILES))
-	$(MKDIR) -p $(CLASSES_DIR) $(@D)
-	$(BOOT_JAVAC) -sourcepath "" -classpath $(CLASSES_DIR) -d $(CLASSES_DIR) -target $(TARGET_LEVEL) $(NO_PROPRIETARY_API_WARNINGS) \
-		$(APT_JAVA_FILES) \
-		$(patsubst $(SRC_CLASSES_DIR)/%.properties,$(GENSRC_DIR)/%.java,$(APT_RESOURCE_FILES))
-	( $(ECHO) Main-Class: com.sun.tools.apt.Main ; $(ECHO) Class-Path: javac.jar ) > $(BUILD_DIR)/apt.mf
-	$(BOOTJAR) -cfm $@ $(BUILD_DIR)/apt.mf $(patsubst %,-C $(CLASSES_DIR) %, $(APT_DIRS))
-
 #-----
 
 build-tools: $(BUILDTOOLCLASSES_DIR)/CompileProperties/CompileProperties.class
@@ -366,7 +343,7 @@
 
 #----- all classes
 
-$(DIST_DIR)/%/classes.jar: $(JAVAC_JAR) $(JAVADOC_JAR) $(JAVAH_JAR) $(JAVAP_JAR) $(APT_JAR)
+$(DIST_DIR)/%/classes.jar: $(JAVAC_JAR) $(JAVADOC_JAR) $(JAVAH_JAR) $(JAVAP_JAR)
 	$(MKDIR) -p $(@D)
 	$(BOOTJAR) -cf $@ -C $(CLASSES_DIR) .
 
@@ -401,7 +378,6 @@
 	- $(TESTJAVA) -jar $(JAVADOC_JAR) -version
 	$(TESTJAVA) -jar $(JAVAH_JAR) -version
 	- $(TESTJAVA) -jar $(JAVAP_JAR) -version
-	$(TESTJAVA) -jar $(APT_JAR) -version
 
 #-----
 
--- a/langtools/make/build.properties	Tue Feb 21 05:44:29 2012 -0800
+++ b/langtools/make/build.properties	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -159,15 +159,6 @@
 
 #
 
-apt.includes = \
-        com/sun/mirror/ \
-        com/sun/tools/apt/
-
-apt.tests = \
-        tools/apt/
-
-#
-
 # The following files require the latest JDK to be available.
 # The API can be provided by using a suitable boot.java.home
 # or by setting import.jdk
--- a/langtools/make/build.xml	Tue Feb 21 05:44:29 2012 -0800
+++ b/langtools/make/build.xml	Wed Feb 22 16:52:50 2012 -0800
@@ -83,7 +83,7 @@
  - global property definitions
  - general top level targets
  - general diagnostic/debugging targets
- - groups of targets for each tool: javac, javadoc, doclets, javah, javap, apt
+ - groups of targets for each tool: javac, javadoc, doclets, javah, javap
     Within each group, the following targets are provided, where applicable
       build-bootstrap-TOOL      build the bootstrap version of the tool
       build-classes-TOOL        build the classes for the tool
@@ -245,11 +245,11 @@
     />
 
     <target name="build-all-tools"
-        depends="build-javac,build-javadoc,build-doclets,build-javah,build-javap,build-apt"
+        depends="build-javac,build-javadoc,build-doclets,build-javah,build-javap"
     />
 
     <target name="build-all-classes" depends="build-bootstrap-javac,-create-import-jdk-stubs">
-        <build-classes includes="${javac.includes} ${javadoc.includes} ${doclets.includes} ${javah.includes} ${javap.includes} ${apt.includes}"/>
+        <build-classes includes="${javac.includes} ${javadoc.includes} ${doclets.includes} ${javah.includes} ${javap.includes}"/>
     </target>
 
     <!-- clean -->
@@ -657,42 +657,6 @@
 
 
     <!--
-    **** apt targets.
-    -->
-
-    <target name="build-bootstrap-apt" depends="build-bootstrap-javac">
-        <build-bootstrap-classes includes="${apt.includes}"/>
-        <build-bootstrap-jar     name="apt" includes="${apt.includes}"
-                                 jarclasspath="javac.jar"/>
-        <build-bootstrap-tool    name="apt"/>
-    </target>
-
-    <target name="build-apt" depends="build-javac,build-classes-apt">
-        <build-jar  name="apt" includes="${apt.includes}" jarclasspath="javac.jar"/>
-        <build-tool name="apt"/>
-    </target>
-
-    <target name="build-classes-apt" depends="build-classes-javac">
-        <build-classes includes="${apt.includes}"/>
-    </target>
-
-    <target name="javadoc-apt" depends="build-apt,-def-javadoc-tool">
-        <javadoc-tool name="apt" includes="${apt.includes}"/>
-    </target>
-
-
-    <target name="jtreg-apt" depends="build-apt,-def-jtreg">
-        <jtreg-tool name="apt" tests="${apt.tests}"/>
-    </target>
-
-    <target name="findbugs-apt" depends="build-apt,-def-findbugs">
-        <findbugs-tool name="apt"/>
-    </target>
-
-    <target name="apt" depends="build-apt,jtreg-apt,findbugs-apt"/>
-
-
-    <!--
     **** Create import JDK stubs.
     -->
 
@@ -967,7 +931,6 @@
                             <filename name="java/"/>
                             <filename name="javax/"/>
                             <filename name="com/sun/javadoc/"/>
-                            <filename name="com/sun/mirror/"/>
                             <filename name="com/sun/source/"/>
                         </or>
                     </packageset>
@@ -1005,7 +968,7 @@
                     samevm="@{samevm}" verbose="@{verbose}"
                     failonerror="false" resultproperty="jtreg.@{name}.result"
                     javacoptions="-g"
-                    vmoptions="${coverage.options} -Xbootclasspath/p:${coverage.classpath}:${build.classes.dir} @{jpda.jvmargs}">
+                    vmoptions="${coverage.options} -Xbootclasspath/p:${coverage.classpath}${path.separator}${build.classes.dir} @{jpda.jvmargs}">
                     <arg line="@{keywords}"/>
                     <arg line="@{options}"/>
                     <arg line="@{tests}"/>
--- a/langtools/make/netbeans/README	Tue Feb 21 05:44:29 2012 -0800
+++ b/langtools/make/netbeans/README	Wed Feb 22 16:52:50 2012 -0800
@@ -7,7 +7,7 @@
 repository.
 
 The repository contains a number of tools:
-    apt, javac, javadoc and its doclets, javah and javap.
+    javac, javadoc and its doclets, javah and javap.
 
 Build Properties.
 
--- a/langtools/make/test/lib/apt.sh	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# @test
-# @summary Verify the basic execution of the apt classes in classes.jar.
-
-TESTSRC=${TESTSRC:-.}
-TOPDIR=${TESTSRC}/../../..
-TESTJAVAEXE="${TESTJAVA:+${TESTJAVA}/bin/}java"
-
-"${TESTJAVAEXE}" -Xbootclasspath/p:${TOPDIR}/dist/lib/classes.jar \
-    com.sun.tools.apt.Main \
-    -print "${TESTSRC}"/../HelloWorld.java > apt.tmp
-
-if diff ${TESTSRC}/../HelloWorld.apt.gold.txt apt.tmp ; then
-    echo "Test passed."
-else
-    echo "Test failed."
-    exit 1
-fi
--- a/langtools/make/test/lib/src.gold.txt	Tue Feb 21 05:44:29 2012 -0800
+++ b/langtools/make/test/lib/src.gold.txt	Wed Feb 22 16:52:50 2012 -0800
@@ -1,14 +1,4 @@
 com/sun/javadoc/package.html
-com/sun/mirror/apt/package.html
-com/sun/mirror/declaration/package.html
-com/sun/mirror/overview.html
-com/sun/mirror/type/package.html
-com/sun/mirror/util/package.html
-com/sun/tools/apt/Main.java
-com/sun/tools/apt/main/Main.java
-com/sun/tools/apt/resources/apt.properties
-com/sun/tools/apt/resources/apt_ja.properties
-com/sun/tools/apt/resources/apt_zh_CN.properties
 com/sun/tools/doclets/formats/html/markup/package.html
 com/sun/tools/doclets/formats/html/package.html
 com/sun/tools/doclets/formats/html/resources/standard.properties
--- a/langtools/src/share/classes/com/sun/mirror/apt/AnnotationProcessor.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.apt;
-
-
-import java.io.IOException;
-import java.util.Collection;
-
-
-/**
- * An annotation processor, used to examine and process the
- * annotations of program elements.  An annotation processor may,
- * for example, create new source files and XML documents to be used
- * in conjunction with the original code.
- *
- * <p> An annotation processor is constructed by a
- * {@linkplain AnnotationProcessorFactory factory}, which provides it with an
- * {@linkplain AnnotationProcessorEnvironment environment} that
- * encapsulates the state it needs.
- * Messages regarding warnings and errors encountered during processing
- * should be directed to the environment's {@link Messager},
- * and new files may be created using the environment's {@link Filer}.
- *
- * <p> Each annotation processor is created to process annotations
- * of a particular annotation type or set of annotation types.
- * It may use its environment to find the program elements with
- * annotations of those types.  It may freely examine any other program
- * elements in the course of its processing.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.annotation.processing.Processor}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface AnnotationProcessor {
-
-    /**
-     * Process all program elements supported by this annotation processor.
-     */
-    void process();
-}
--- a/langtools/src/share/classes/com/sun/mirror/apt/AnnotationProcessorEnvironment.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.apt;
-
-
-import java.util.Collection;
-import java.util.Map;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.*;
-
-
-/**
- * The environment encapsulating the state needed by an annotation processor.
- * An annotation processing tool makes this environment available
- * to all annotation processors.
- *
- * <p> When an annotation processing tool is invoked, it is given a
- * set of type declarations on which to operate.  These
- * are refered to as the <i>specified</i> types.
- * The type declarations said to be <i>included</i> in this invocation
- * consist of the specified types and any types nested within them.
- *
- * <p> {@link DeclarationFilter}
- * provides a simple way to select just the items of interest
- * when a method returns a collection of declarations.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.annotation.processing.ProcessingEnvironment}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface AnnotationProcessorEnvironment {
-
-    /**
-     * Returns the options passed to the annotation processing tool.
-     * Options are returned in the form of a map from option name
-     * (such as <tt>"-encoding"</tt>) to option value.
-     * For an option with no value (such as <tt>"-help"</tt>), the
-     * corresponding value in the map is <tt>null</tt>.
-     *
-     * <p> Options beginning with <tt>"-A"</tt> are <i>processor-specific.</i>
-     * Such options are unrecognized by the tool, but intended to be used by
-     * some annotation processor.
-     *
-     * @return the options passed to the tool
-     */
-    Map<String,String> getOptions();
-
-    /**
-     * Returns the messager used to report errors, warnings, and other
-     * notices.
-     *
-     * @return the messager
-     */
-    Messager getMessager();
-
-    /**
-     * Returns the filer used to create new source, class, or auxiliary
-     * files.
-     *
-     * @return the filer
-     */
-    Filer getFiler();
-
-
-    /**
-     * Returns the declarations of the types specified when the
-     * annotation processing tool was invoked.
-     *
-     * @return the types specified when the tool was invoked, or an
-     * empty collection if there were none
-     */
-    Collection<TypeDeclaration> getSpecifiedTypeDeclarations();
-
-    /**
-     * Returns the declaration of a package given its fully qualified name.
-     *
-     * @param name  fully qualified package name, or "" for the unnamed package
-     * @return the declaration of the named package, or null if it cannot
-     * be found
-     */
-    PackageDeclaration getPackage(String name);
-
-    /**
-     * Returns the declaration of a type given its fully qualified name.
-     *
-     * @param name  fully qualified type name
-     * @return the declaration of the named type, or null if it cannot be
-     * found
-     */
-    TypeDeclaration getTypeDeclaration(String name);
-
-    /**
-     * A convenience method that returns the declarations of the types
-     * {@linkplain AnnotationProcessorEnvironment <i>included</i>}
-     * in this invocation of the annotation processing tool.
-     *
-     * @return the declarations of the types included in this invocation
-     * of the tool, or an empty collection if there are none
-     */
-    Collection<TypeDeclaration> getTypeDeclarations();
-
-    /**
-     * Returns the declarations annotated with the given annotation type.
-     * Only declarations of the types
-     * {@linkplain AnnotationProcessorEnvironment <i>included</i>}
-     * in this invocation of the annotation processing tool, or
-     * declarations of members, parameters, or type parameters
-     * declared within those, are returned.
-     *
-     * @param a  annotation type being requested
-     * @return the declarations annotated with the given annotation type,
-     * or an empty collection if there are none
-     */
-    Collection<Declaration> getDeclarationsAnnotatedWith(
-                                                AnnotationTypeDeclaration a);
-
-    /**
-     * Returns an implementation of some utility methods for
-     * operating on declarations.
-     *
-     * @return declaration utilities
-     */
-    Declarations getDeclarationUtils();
-
-    /**
-     * Returns an implementation of some utility methods for
-     * operating on types.
-     *
-     * @return type utilities
-     */
-    Types getTypeUtils();
-
-    /**
-     * Add a listener.  If the listener is currently registered to listen,
-     * adding it again will have no effect.
-     *
-     * @param listener The listener to add.
-     * @throws NullPointerException if the listener is null
-     */
-    void addListener(AnnotationProcessorListener listener);
-
-
-    /**
-     * Remove a listener.  If the listener is not currently listening,
-     * the method call does nothing.
-     *
-     * @param listener The listener to remove.
-     * @throws NullPointerException if the listener is null
-     */
-    void removeListener(AnnotationProcessorListener listener);
-}
--- a/langtools/src/share/classes/com/sun/mirror/apt/AnnotationProcessorFactory.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.apt;
-
-
-import java.util.Collection;
-import java.util.Set;
-
-import com.sun.mirror.declaration.AnnotationTypeDeclaration;
-
-
-/**
- * A factory for creating annotation processors.
- * Each factory is responsible for creating processors for one or more
- * annotation types.
- * The factory is said to <i>support</i> these types.
- *
- * <p> Each implementation of an <tt>AnnotationProcessorFactory</tt>
- * must provide a public no-argument constructor to be used by tools to
- * instantiate the factory.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.annotation.processing.Processor}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface AnnotationProcessorFactory {
-
-    /**
-     * Returns the options recognized by this factory or by any of the
-     * processors it may create.
-     * Only {@linkplain AnnotationProcessorEnvironment#getOptions()
-     * processor-specific} options are included, each of which begins
-     * with <tt>"-A"</tt>.  For example, if this factory recognizes
-     * options such as <tt>-Adebug -Aloglevel=3</tt>, it will
-     * return the strings <tt>"-Adebug"</tt> and <tt>"-Aloglevel"</tt>.
-     *
-     * <p> A tool might use this information to determine if any
-     * options provided by a user are unrecognized by any processor,
-     * in which case it may wish to report an error.
-     *
-     * @return the options recognized by this factory or by any of the
-     * processors it may create, or an empty collection if none
-     */
-    Collection<String> supportedOptions();
-
-    /**
-     * Returns the names of the annotation types supported by this factory.
-     * An element of the result may be the canonical (fully qualified) name
-     * of a supported annotation type.  Alternately it may be of the form
-     * <tt>"<i>name</i>.*"</tt>
-     * representing the set of all annotation types
-     * with canonical names beginning with <tt>"<i>name</i>."</tt>
-     * Finally, <tt>"*"</tt> by itself represents the set of all
-     * annotation types.
-     *
-     * @return the names of the annotation types supported by this factory
-     */
-    Collection<String> supportedAnnotationTypes();
-
-    /**
-     * Returns an annotation processor for a set of annotation
-     * types. The set will be empty if the factory supports
-     * &quot;<tt>*</tt>&quot; and the specified type declarations have
-     * no annotations.  Note that the set of annotation types may be
-     * empty for other reasons, such as giving the factory an
-     * opportunity to register a listener.  An
-     * <tt>AnnotationProcessorFactory</tt> must gracefully handle an
-     * empty set of annotations; an appropriate response to an empty
-     * set will often be returning {@link AnnotationProcessors#NO_OP}.
-     *
-     * @param atds type declarations of the annotation types to be processed
-     * @param env  environment to use during processing
-     * @return an annotation processor for the given annotation types,
-     *          or <tt>null</tt> if the types are not supported or the
-     *          processor cannot be created
-     */
-    AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                        AnnotationProcessorEnvironment env);
-}
--- a/langtools/src/share/classes/com/sun/mirror/apt/AnnotationProcessorListener.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.apt;
-
-/**
- * Superinterface for all annotation processor event listeners.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  This interface has no
- * direct analog in the standardized API because the different round
- * model renders it unnecessary.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface AnnotationProcessorListener extends java.util.EventListener {}
--- a/langtools/src/share/classes/com/sun/mirror/apt/AnnotationProcessors.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.apt;
-
-import com.sun.mirror.apt.*;
-import java.util.*;
-
-/**
- * Utilities to create specialized annotation processors.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  There is no direct analog
- * of the functionality of this class in the standardized API.
- *
- * @since 1.5
- * @author Joseph D. Darcy
- * @author Scott Seligman
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public class AnnotationProcessors {
-    static class NoOpAP implements AnnotationProcessor {
-        NoOpAP() {}
-        public void process(){}
-    }
-
-    /**
-     * Combines multiple annotation processors into a simple composite
-     * processor.
-     * The composite processor functions by invoking each of its component
-     * processors in sequence.
-     */
-    static class CompositeAnnotationProcessor implements AnnotationProcessor {
-
-        private List<AnnotationProcessor> aps =
-            new LinkedList<AnnotationProcessor>();
-
-        /**
-         * Constructs a new composite annotation processor.
-         * @param aps  the component annotation processors
-         */
-        public CompositeAnnotationProcessor(Collection<AnnotationProcessor> aps) {
-            this.aps.addAll(aps);
-        }
-
-        /**
-         * Constructs a new composite annotation processor.
-         * @param aps  the component annotation processors
-         */
-        public CompositeAnnotationProcessor(AnnotationProcessor... aps) {
-            for(AnnotationProcessor ap: aps)
-                this.aps.add(ap);
-        }
-
-        /**
-         * Invokes the <tt>process</tt> method of each component processor,
-         * in the order in which the processors were passed to the constructor.
-         */
-        public void process() {
-            for(AnnotationProcessor ap: aps)
-                ap.process();
-        }
-    }
-
-
-    /**
-     *  An annotation processor that does nothing and has no state.
-     *  May be used multiple times.
-     *
-     * @since 1.5
-     */
-    public final static AnnotationProcessor NO_OP = new NoOpAP();
-
-    /**
-     * Constructs a new composite annotation processor.  A composite
-     * annotation processor combines multiple annotation processors
-     * into one and functions by invoking each of its component
-     * processors' process methods in sequence.
-     *
-     * @param aps The processors to create a composite of
-     * @since 1.5
-     */
-    public static AnnotationProcessor getCompositeAnnotationProcessor(AnnotationProcessor... aps) {
-        return new CompositeAnnotationProcessor(aps);
-    }
-
-    /**
-     * Constructs a new composite annotation processor.  A composite
-     * annotation processor combines multiple annotation processors
-     * into one and functions by invoking each of its component
-     * processors' process methods in the sequence the processors are
-     * returned by the collection's iterator.
-     *
-     * @param aps A collection of processors to create a composite of
-     * @since 1.5
-     */
-    public static AnnotationProcessor getCompositeAnnotationProcessor(Collection<AnnotationProcessor> aps) {
-        return new CompositeAnnotationProcessor(aps);
-    }
-}
--- a/langtools/src/share/classes/com/sun/mirror/apt/Filer.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,162 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.apt;
-
-
-import java.io.*;
-
-
-/**
- * This interface supports the creation of new files by an
- * annotation processor.
- * Files created in this way will be known to the annotation processing
- * tool implementing this interface, better enabling the tool to manage them.
- * Four kinds of files are distinguished:
- * source files, class files, other text files, and other binary files.
- * The latter two are collectively referred to as <i>auxiliary</i> files.
- *
- * <p> There are two distinguished locations (subtrees within the
- * file system) where newly created files are placed:
- * one for new source files, and one for new class files.
- * (These might be specified on a tool's command line, for example,
- * using flags such as <tt>-s</tt> and <tt>-d</tt>.)
- * Auxiliary files may be created in either location.
- *
- * <p> During each run of an annotation processing tool, a file
- * with a given pathname may be created only once.  If that file already
- * exists before the first attempt to create it, the old contents will
- * be deleted.  Any subsequent attempt to create the same file during
- * a run will fail.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.annotation.processing.Filer}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface Filer {
-
-    /**
-     * Creates a new source file and returns a writer for it.
-     * The file's name and path (relative to the root of all newly created
-     * source files) is based on the type to be declared in that file.
-     * If more than one type is being declared, the name of the principal
-     * top-level type (the public one, for example) should be used.
-     *
-     * <p> The {@linkplain java.nio.charset.Charset charset} used to
-     * encode the file is determined by the implementation.
-     * An annotation processing tool may have an <tt>-encoding</tt>
-     * flag or the like for specifying this.  It will typically use
-     * the platform's default encoding if none is specified.
-     *
-     * @param name  canonical (fully qualified) name of the principal type
-     *          being declared in this file
-     * @return a writer for the new file
-     * @throws IOException if the file cannot be created
-     */
-    PrintWriter createSourceFile(String name) throws IOException;
-
-    /**
-     * Creates a new class file, and returns a stream for writing to it.
-     * The file's name and path (relative to the root of all newly created
-     * class files) is based on the name of the type being written.
-     *
-     * @param name canonical (fully qualified) name of the type being written
-     * @return a stream for writing to the new file
-     * @throws IOException if the file cannot be created
-     */
-    OutputStream createClassFile(String name) throws IOException;
-
-    /**
-     * Creates a new text file, and returns a writer for it.
-     * The file is located along with either the
-     * newly created source or newly created binary files.  It may be
-     * named relative to some package (as are source and binary files),
-     * and from there by an arbitrary pathname.  In a loose sense, the
-     * pathname of the new file will be the concatenation of
-     * <tt>loc</tt>, <tt>pkg</tt>, and <tt>relPath</tt>.
-     *
-     * <p> A {@linkplain java.nio.charset.Charset charset} for
-     * encoding the file may be provided.  If none is given, the
-     * charset used to encode source files
-     * (see {@link #createSourceFile(String)}) will be used.
-     *
-     * @param loc location of the new file
-     * @param pkg package relative to which the file should be named,
-     *          or the empty string if none
-     * @param relPath final pathname components of the file
-     * @param charsetName the name of the charset to use, or null if none
-     *          is being explicitly specified
-     * @return a writer for the new file
-     * @throws IOException if the file cannot be created
-     */
-    PrintWriter createTextFile(Location loc,
-                               String pkg,
-                               File relPath,
-                               String charsetName) throws IOException;
-
-    /**
-     * Creates a new binary file, and returns a stream for writing to it.
-     * The file is located along with either the
-     * newly created source or newly created binary files.  It may be
-     * named relative to some package (as are source and binary files),
-     * and from there by an arbitrary pathname.  In a loose sense, the
-     * pathname of the new file will be the concatenation of
-     * <tt>loc</tt>, <tt>pkg</tt>, and <tt>relPath</tt>.
-     *
-     * @param loc location of the new file
-     * @param pkg package relative to which the file should be named,
-     *          or the empty string if none
-     * @param relPath final pathname components of the file
-     * @return a stream for writing to the new file
-     * @throws IOException if the file cannot be created
-     */
-    OutputStream createBinaryFile(Location loc,
-                                  String pkg,
-                                  File relPath) throws IOException;
-
-
-    /**
-     * Locations (subtrees within the file system) where new files are created.
-     *
-     * @deprecated All components of this API have been superseded by
-     * the standardized annotation processing API.  The replacement
-     * for the functionality of this enum is {@link
-     * javax.tools.StandardLocation}.
-     */
-    @Deprecated
-    enum Location {
-        /** The location of new source files. */
-        SOURCE_TREE,
-        /** The location of new class files. */
-        CLASS_TREE
-    }
-}
--- a/langtools/src/share/classes/com/sun/mirror/apt/Messager.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.apt;
-
-import com.sun.mirror.util.SourcePosition;
-
-/**
- * A <tt>Messager</tt> provides the way for
- * an annotation processor to report error messages, warnings, and
- * other notices.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.annotation.processing.Messager}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface Messager {
-
-    /**
-     * Prints an error message.
-     * Equivalent to <tt>printError(null, msg)</tt>.
-     * @param msg  the message, or an empty string if none
-     */
-    void printError(String msg);
-
-    /**
-     * Prints an error message.
-     * @param pos  the position where the error occured, or null if it is
-     *                  unknown or not applicable
-     * @param msg  the message, or an empty string if none
-     */
-    void printError(SourcePosition pos, String msg);
-
-    /**
-     * Prints a warning message.
-     * Equivalent to <tt>printWarning(null, msg)</tt>.
-     * @param msg  the message, or an empty string if none
-     */
-    void printWarning(String msg);
-
-    /**
-     * Prints a warning message.
-     * @param pos  the position where the warning occured, or null if it is
-     *                  unknown or not applicable
-     * @param msg  the message, or an empty string if none
-     */
-    void printWarning(SourcePosition pos, String msg);
-
-    /**
-     * Prints a notice.
-     * Equivalent to <tt>printNotice(null, msg)</tt>.
-     * @param msg  the message, or an empty string if none
-     */
-    void printNotice(String msg);
-
-    /**
-     * Prints a notice.
-     * @param pos  the position where the noticed occured, or null if it is
-     *                  unknown or not applicable
-     * @param msg  the message, or an empty string if none
-     */
-    void printNotice(SourcePosition pos, String msg);
-}
--- a/langtools/src/share/classes/com/sun/mirror/apt/RoundCompleteEvent.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.apt;
-
-/**
- * Event for the completion of a round of annotation processing.
- *
- * <p>While this class extends the serializable <tt>EventObject</tt>, it
- * cannot meaningfully be serialized because all of the annotation
- * processing tool's internal state would potentially be needed.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  This class has no direct
- * analog in the standardized API because the different round model
- * renders it unnecessary.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public abstract class RoundCompleteEvent extends java.util.EventObject {
-    private RoundState rs;
-
-    /**
-     * The current <tt>AnnotationProcessorEnvironment</tt> is regarded
-     * as the source of events.
-     *
-     * @param source The source of events
-     * @param rs     The state of the round
-     */
-    protected RoundCompleteEvent(AnnotationProcessorEnvironment source,
-                                 RoundState rs) {
-        super(source);
-        this.rs = rs;
-    }
-
-    /**
-     * Return round state.
-     */
-    public RoundState getRoundState() {
-        return rs;
-    }
-
-    /**
-     * Return source.
-     */
-    public AnnotationProcessorEnvironment getSource() {
-        return (AnnotationProcessorEnvironment)super.getSource();
-    }
-}
--- a/langtools/src/share/classes/com/sun/mirror/apt/RoundCompleteListener.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.apt;
-
-/**
- * Listener for the completion of a round of annotation processing.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  This interface has no
- * direct analog in the standardized API because the different round
- * model renders it unnecessary.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface RoundCompleteListener extends AnnotationProcessorListener {
-    /**
-     * Invoked after all processors for a round have run to completion.
-     *
-     * @param event An event for round completion
-     */
-    void roundComplete(RoundCompleteEvent event);
-}
--- a/langtools/src/share/classes/com/sun/mirror/apt/RoundState.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.apt;
-
-/**
- * Represents the status of a completed round of annotation processing.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.annotation.processing.RoundEnvironment}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface RoundState {
-    /**
-     * Returns <tt>true</tt> if this was the last round of annotation
-     * processing; returns <tt>false</tt> if there will be a subsequent round.
-     */
-    boolean finalRound();
-
-    /**
-     * Returns <tt>true</tt> if an error was raised in this round of processing;
-     * returns <tt>false</tt> otherwise.
-     */
-    boolean errorRaised();
-
-    /**
-     * Returns <tt>true</tt> if new source files were created in this round of
-     * processing; returns <tt>false</tt> otherwise.
-     */
-    boolean sourceFilesCreated();
-
-    /**
-     * Returns <tt>true</tt> if new class files were created in this round of
-     * processing; returns <tt>false</tt> otherwise.
-     */
-    boolean classFilesCreated();
-}
--- a/langtools/src/share/classes/com/sun/mirror/apt/package-info.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
- * Classes used to communicate information between {@linkplain
- * com.sun.mirror.apt.AnnotationProcessor annotation processors} and
- * an annotation processing tool.
- *
- * <p>The {@code apt} tool and its associated API have been superseded
- * by the standardized annotation processing API.  The replacement for
- * the functionality in this package is {@link
- * javax.annotation.processing}.
- *
- * @since 1.5
- */
-package com.sun.mirror.apt;
--- a/langtools/src/share/classes/com/sun/mirror/declaration/AnnotationMirror.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-import java.util.Map;
-import com.sun.mirror.type.AnnotationType;
-import com.sun.mirror.util.SourcePosition;
-
-
-/**
- * Represents an annotation.  An annotation associates a value with
- * each element of an annotation type.
- *
- * <p> Annotations should not be compared using reference-equality
- * ("<tt>==</tt>").  There is no guarantee that any particular
- * annotation will always be represented by the same object.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.element.AnnotationMirror}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface AnnotationMirror {
-
-    /**
-     * Returns the annotation type of this annotation.
-     *
-     * @return the annotation type of this annotation
-     */
-    AnnotationType getAnnotationType();
-
-    /**
-     * Returns the source position of the beginning of this annotation.
-     * Returns null if the position is unknown or not applicable.
-     *
-     * <p>This source position is intended for use in providing diagnostics,
-     * and indicates only approximately where an annotation begins.
-     *
-     * @return  the source position of the beginning of this annotation or
-     * null if the position is unknown or not applicable
-     */
-    SourcePosition getPosition();
-
-    /**
-     * Returns this annotation's elements and their values.
-     * This is returned in the form of a map that associates elements
-     * with their corresponding values.
-     * Only those elements and values explicitly present in the
-     * annotation are included, not those that are implicitly assuming
-     * their default values.
-     * The order of the map matches the order in which the
-     * elements appear in the annotation's source.
-     *
-     * @return this annotation's elements and their values,
-     * or an empty map if there are none
-     */
-    Map<AnnotationTypeElementDeclaration, AnnotationValue> getElementValues();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/AnnotationTypeDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-import java.util.Collection;
-
-
-/**
- * Represents the declaration of an annotation type.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.element.TypeElement}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface AnnotationTypeDeclaration extends InterfaceDeclaration {
-
-    /**
-     * Returns the annotation type elements of this annotation type.
-     * These are the methods that are directly declared in the type's
-     * declaration.
-     *
-     * @return the annotation type elements of this annotation type,
-     * or an empty collection if there are none
-     */
-    Collection<AnnotationTypeElementDeclaration> getMethods();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/AnnotationTypeElementDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-/**
- * Represents an element of an annotation type.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.element.ExecutableElement}.
- *
- * @author Joe Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface AnnotationTypeElementDeclaration extends MethodDeclaration {
-
-    /**
-     * Returns the default value of this element.
-     *
-     * @return the default value of this element, or null if this element
-     * has no default.
-     */
-    AnnotationValue getDefaultValue();
-
-    /**
-     * {@inheritDoc}
-     */
-    AnnotationTypeDeclaration getDeclaringType();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/AnnotationValue.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-import com.sun.mirror.util.SourcePosition;
-
-/**
- * Represents a value of an annotation type element.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.element.AnnotationValue}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface AnnotationValue {
-
-    /**
-     * Returns the value.
-     * The result has one of the following types:
-     * <ul><li> a wrapper class (such as {@link Integer}) for a primitive type
-     *     <li> {@code String}
-     *     <li> {@code TypeMirror}
-     *     <li> {@code EnumConstantDeclaration}
-     *     <li> {@code AnnotationMirror}
-     *     <li> {@code Collection<AnnotationValue>}
-     *          (representing the elements, in order, if the value is an array)
-     * </ul>
-     *
-     * @return the value
-     */
-    Object getValue();
-
-    /**
-     * Returns the source position of the beginning of this annotation value.
-     * Returns null if the position is unknown or not applicable.
-     *
-     * <p>This source position is intended for use in providing diagnostics,
-     * and indicates only approximately where an annotation value begins.
-     *
-     * @return  the source position of the beginning of this annotation value or
-     * null if the position is unknown or not applicable
-     */
-    SourcePosition getPosition();
-
-    /**
-     * Returns a string representation of this value.
-     * This is returned in a form suitable for representing this value
-     * in the source code of an annotation.
-     *
-     * @return a string representation of this value
-     */
-    String toString();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/ClassDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-import java.util.Collection;
-
-import com.sun.mirror.type.ClassType;
-
-
-/**
- * Represents the declaration of a class.
- * For the declaration of an interface, see {@link InterfaceDeclaration}.
- * Provides access to information about the class, its members, and
- * its constructors.
- * Note that an {@linkplain EnumDeclaration enum} is a kind of class.
- *
- * <p> While a <tt>ClassDeclaration</tt> represents the <i>declaration</i>
- * of a class, a {@link ClassType} represents a class <i>type</i>.
- * See {@link TypeDeclaration} for more on this distinction.
- *
- * <p> {@link com.sun.mirror.util.DeclarationFilter}
- * provides a simple way to select just the items of interest
- * when a method returns a collection of declarations.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.element.TypeElement}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- *
- * @see ClassType
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface ClassDeclaration extends TypeDeclaration {
-
-    /**
-     * Returns the class type directly extended by this class.
-     * The only class with no superclass is <tt>java.lang.Object</tt>,
-     * for which this method returns null.
-     *
-     * @return the class type directly extended by this class, or null
-     * if there is none
-     */
-    ClassType getSuperclass();
-
-    /**
-     * Returns the constructors of this class.
-     * This includes the default constructor if this class has
-     * no constructors explicitly declared.
-     *
-     * @return the constructors of this class
-     *
-     * @see com.sun.mirror.util.DeclarationFilter
-     */
-    Collection<ConstructorDeclaration> getConstructors();
-
-    /**
-     * {@inheritDoc}
-     */
-    Collection<MethodDeclaration> getMethods();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/ConstructorDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-/**
- * Represents a constructor of a class or interface.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.element.ExecutableElement}.
- *
- * @author Joe Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface ConstructorDeclaration extends ExecutableDeclaration {
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/Declaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-import java.lang.annotation.Annotation;
-import java.util.Collection;
-
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-/**
- * Represents the declaration of a program element such as a package,
- * class, or method.  Each declaration represents a static, language-level
- * construct (and not, for example, a runtime construct of the virtual
- * machine), and typically corresponds one-to-one with a particular
- * fragment of source code.
- *
- * <p> Declarations should be compared using the {@link #equals(Object)}
- * method.  There is no guarantee that any particular declaration will
- * always be represented by the same object.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.element.Element}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- *
- * @see Declarations
- * @see TypeMirror
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface Declaration {
-
-    /**
-     * Tests whether an object represents the same declaration as this.
-     *
-     * @param obj  the object to be compared with this declaration
-     * @return <tt>true</tt> if the specified object represents the same
-     *          declaration as this
-     */
-    boolean equals(Object obj);
-
-    /**
-     * Returns the text of the documentation ("javadoc") comment of
-     * this declaration.
-     *
-     * @return the documentation comment of this declaration, or <tt>null</tt>
-     *          if there is none
-     */
-    String getDocComment();
-
-    /**
-     * Returns the annotations that are directly present on this declaration.
-     *
-     * @return the annotations directly present on this declaration;
-     *          an empty collection if there are none
-     */
-    Collection<AnnotationMirror> getAnnotationMirrors();
-
-    /**
-     * Returns the annotation of this declaration having the specified
-     * type.  The annotation may be either inherited or directly
-     * present on this declaration.
-     *
-     * <p> The annotation returned by this method could contain an element
-     * whose value is of type <tt>Class</tt>.
-     * This value cannot be returned directly:  information necessary to
-     * locate and load a class (such as the class loader to use) is
-     * not available, and the class might not be loadable at all.
-     * Attempting to read a <tt>Class</tt> object by invoking the relevant
-     * method on the returned annotation
-     * will result in a {@link MirroredTypeException},
-     * from which the corresponding {@link TypeMirror} may be extracted.
-     * Similarly, attempting to read a <tt>Class[]</tt>-valued element
-     * will result in a {@link MirroredTypesException}.
-     *
-     * <blockquote>
-     * <i>Note:</i> This method is unlike
-     * others in this and related interfaces.  It operates on run-time
-     * reflective information -- representations of annotation types
-     * currently loaded into the VM -- rather than on the mirrored
-     * representations defined by and used throughout these
-     * interfaces.  It is intended for callers that are written to
-     * operate on a known, fixed set of annotation types.
-     * </blockquote>
-     *
-     * @param <A>  the annotation type
-     * @param annotationType  the <tt>Class</tt> object corresponding to
-     *          the annotation type
-     * @return the annotation of this declaration having the specified type
-     *
-     * @see #getAnnotationMirrors()
-     */
-    <A extends Annotation> A getAnnotation(Class<A> annotationType);
-
-    /**
-     * Returns the modifiers of this declaration, excluding annotations.
-     * Implicit modifiers, such as the <tt>public</tt> and <tt>static</tt>
-     * modifiers of interface members, are included.
-     *
-     * @return the modifiers of this declaration in undefined order;
-     *          an empty collection if there are none
-     */
-    Collection<Modifier> getModifiers();
-
-    /**
-     * Returns the simple (unqualified) name of this declaration.
-     * The name of a generic type does not include any reference
-     * to its formal type parameters.
-     * For example, the simple name of the interface declaration
-     * {@code java.util.Set<E>} is <tt>"Set"</tt>.
-     * If this declaration represents the empty package, an empty
-     * string is returned.
-     * If it represents a constructor, the simple name of its
-     * declaring class is returned.
-     *
-     * @return the simple name of this declaration
-     */
-    String getSimpleName();
-
-    /**
-     * Returns the source position of the beginning of this declaration.
-     * Returns <tt>null</tt> if the position is unknown or not applicable.
-     *
-     * <p> This source position is intended for use in providing
-     * diagnostics, and indicates only approximately where a declaration
-     * begins.
-     *
-     * @return the source position of the beginning of this declaration,
-     *          or null if the position is unknown or not applicable
-     */
-    SourcePosition getPosition();
-
-    /**
-     * Applies a visitor to this declaration.
-     *
-     * @param v the visitor operating on this declaration
-     */
-    void accept(DeclarationVisitor v);
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/EnumConstantDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-/**
- * Represents an enum constant declaration.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.element.VariableElement}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface EnumConstantDeclaration extends FieldDeclaration {
-    /**
-     * {@inheritDoc}
-     */
-    EnumDeclaration getDeclaringType();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/EnumDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-import java.util.Collection;
-
-
-/**
- * Represents the declaration of an enum type.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.element.TypeElement}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface EnumDeclaration extends ClassDeclaration {
-
-    /**
-     * Returns the enum constants defined for this enum.
-     *
-     * @return the enum constants defined for this enum,
-     * or an empty collection if there are none
-     */
-    Collection<EnumConstantDeclaration> getEnumConstants();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/ExecutableDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-import java.util.Collection;
-
-import com.sun.mirror.type.ReferenceType;
-
-
-/**
- * Represents a method or constructor of a class or interface.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.element.ExecutableElement}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface ExecutableDeclaration extends MemberDeclaration {
-
-    /**
-     * Returns <tt>true</tt> if this method or constructor accepts a variable
-     * number of arguments.
-     *
-     * @return <tt>true</tt> if this method or constructor accepts a variable
-     * number of arguments
-     */
-    boolean isVarArgs();
-
-    /**
-     * Returns the formal type parameters of this method or constructor.
-     * They are returned in declaration order.
-     *
-     * @return the formal type parameters of this method or constructor,
-     * or an empty collection if there are none
-     */
-    Collection<TypeParameterDeclaration> getFormalTypeParameters();
-
-    /**
-     * Returns the formal parameters of this method or constructor.
-     * They are returned in declaration order.
-     *
-     * @return the formal parameters of this method or constructor,
-     * or an empty collection if there are none
-     */
-    Collection<ParameterDeclaration> getParameters();
-
-    /**
-     * Returns the exceptions and other throwables listed in this
-     * method or constructor's <tt>throws</tt> clause.
-     *
-     * @return the exceptions and other throwables listed in the
-     * <tt>throws</tt> clause, or an empty collection if there are none
-     */
-    Collection<ReferenceType> getThrownTypes();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/FieldDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-import com.sun.mirror.type.TypeMirror;
-
-
-/**
- * Represents a field of a type declaration.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.element.VariableElement}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface FieldDeclaration extends MemberDeclaration {
-
-    /**
-     * Returns the type of this field.
-     *
-     * @return the type of this field
-     */
-    TypeMirror getType();
-
-    /**
-     * Returns the value of this field if this field is a compile-time
-     * constant.  Returns <tt>null</tt> otherwise.
-     * The value will be of a primitive type or <tt>String</tt>.
-     * If the value is of a primitive type, it is wrapped in the
-     * appropriate wrapper class (such as {@link Integer}).
-     *
-     * @return the value of this field if this field is a compile-time
-     * constant, or <tt>null</tt> otherwise
-     */
-    Object getConstantValue();
-
-    /**
-     * Returns the text of a <i>constant expression</i> representing the
-     * value of this field if this field is a compile-time constant.
-     * Returns <tt>null</tt> otherwise.
-     * The value will be of a primitive type or <tt>String</tt>.
-     * The text returned is in a form suitable for representing the value
-     * in source code.
-     *
-     * @return the text of a constant expression if this field is a
-     *          compile-time constant, or <tt>null</tt> otherwise
-     */
-    String getConstantExpression();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/InterfaceDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-import com.sun.mirror.type.InterfaceType;
-
-
-/**
- * Represents the declaration of an interface.
- * Provides access to information about the interface and its members.
- * Note that an {@linkplain AnnotationTypeDeclaration annotation type} is
- * a kind of interface.
- *
- * <p> While an <tt>InterfaceDeclaration</tt> represents the
- * <i>declaration</i> of an interface, an {@link InterfaceType}
- * represents an interface <i>type</i>.
- * See {@link TypeDeclaration} for more on this distinction.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.element.TypeElement}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- *
- * @see InterfaceType
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface InterfaceDeclaration extends TypeDeclaration {
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/MemberDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-/**
- * Represents a declaration that may be a member or constructor of a declared
- * type.  This includes fields, constructors, methods, and (since they
- * may be nested) declared types themselves.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.element.Element}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface MemberDeclaration extends Declaration {
-
-    /**
-     * Returns the type declaration within which this member or constructor
-     * is declared.
-     * If this is the declaration of a top-level type (a non-nested class
-     * or interface), returns null.
-     *
-     * @return the type declaration within which this member or constructor
-     * is declared, or null if there is none
-     */
-    TypeDeclaration getDeclaringType();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/MethodDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-import com.sun.mirror.type.TypeMirror;
-import com.sun.mirror.type.VoidType;
-
-
-/**
- * Represents a method of a class or interface.
- * Note that an
- * {@linkplain AnnotationTypeElementDeclaration annotation type element}
- * is a kind of method.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.element.ExecutableElement}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface MethodDeclaration extends ExecutableDeclaration {
-
-    /**
-     * Returns the formal return type of this method.
-     * Returns {@link VoidType} if this method does not return a value.
-     *
-     * @return the formal return type of this method
-     */
-    TypeMirror getReturnType();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/Modifier.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-/**
- * Represents a modifier on the declaration of a program element such
- * as a class, method, or field.
- *
- * <p> Not all modifiers are applicable to all kinds of declarations.
- * When two or more modifiers appear in the source code of a declaration,
- * then it is customary, though not required, that they appear in the same
- * order as the constants listed in the detail section below.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this enum is {@link javax.lang.model.element.Modifier}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public enum Modifier {
-
-    // See JLS2 sections 8.1.1, 8.3.1, 8.4.3, 8.8.3, and 9.1.1.
-    // java.lang.reflect.Modifier includes INTERFACE, but that's a VMism.
-
-    /** The modifier <tt>public</tt> */         PUBLIC,
-    /** The modifier <tt>protected</tt> */      PROTECTED,
-    /** The modifier <tt>private</tt> */        PRIVATE,
-    /** The modifier <tt>abstract</tt> */       ABSTRACT,
-    /** The modifier <tt>static</tt> */         STATIC,
-    /** The modifier <tt>final</tt> */          FINAL,
-    /** The modifier <tt>transient</tt> */      TRANSIENT,
-    /** The modifier <tt>volatile</tt> */       VOLATILE,
-    /** The modifier <tt>synchronized</tt> */   SYNCHRONIZED,
-    /** The modifier <tt>native</tt> */         NATIVE,
-    /** The modifier <tt>strictfp</tt> */       STRICTFP;
-
-
-    private String lowercase = null;    // modifier name in lowercase
-
-    /**
-     * Returns this modifier's name in lowercase.
-     */
-    public String toString() {
-        if (lowercase == null) {
-           lowercase = name().toLowerCase(java.util.Locale.US);
-        }
-        return lowercase;
-    }
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/PackageDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-import java.util.Collection;
-
-
-/**
- * Represents the declaration of a package.  Provides access to information
- * about the package and its members.
- *
- * <p> {@link com.sun.mirror.util.DeclarationFilter}
- * provides a simple way to select just the items of interest
- * when a method returns a collection of declarations.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.element.PackageElement}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface PackageDeclaration extends Declaration {
-
-    /**
-     * Returns the fully qualified name of this package.
-     * This is also known as the package's <i>canonical</i> name.
-     *
-     * @return the fully qualified name of this package, or the
-     * empty string if this is the unnamed package
-     */
-    String getQualifiedName();
-
-    /**
-     * Returns the declarations of the top-level classes in this package.
-     * Interfaces are not included, but enum types are.
-     *
-     * @return the declarations of the top-level classes in this package
-     *
-     * @see com.sun.mirror.util.DeclarationFilter
-     */
-    Collection<ClassDeclaration> getClasses();
-
-    /**
-     * Returns the declarations of the top-level enum types in this package.
-     *
-     * @return the declarations of the top-level enum types in this package
-     *
-     * @see com.sun.mirror.util.DeclarationFilter
-     */
-    Collection<EnumDeclaration> getEnums();
-
-    /**
-     * Returns the declarations of the top-level interfaces in this package.
-     * Annotation types are included.
-     *
-     * @return the declarations of the top-level interfaces in this package
-     *
-     * @see com.sun.mirror.util.DeclarationFilter
-     */
-    Collection<InterfaceDeclaration> getInterfaces();
-
-    /**
-     * Returns the declarations of the top-level annotation types in this
-     * package.
-     *
-     * @return the declarations of the top-level annotation types in this
-     * package
-     *
-     * @see com.sun.mirror.util.DeclarationFilter
-     */
-    Collection<AnnotationTypeDeclaration> getAnnotationTypes();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/ParameterDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-import com.sun.mirror.type.TypeMirror;
-
-
-/**
- * Represents a formal parameter of a method or constructor.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.element.VariableElement}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface ParameterDeclaration extends Declaration {
-
-    /**
-     * Returns the type of this parameter.
-     *
-     * @return the type of this parameter
-     */
-    TypeMirror getType();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/TypeDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-import java.util.Collection;
-
-import com.sun.mirror.type.*;
-
-
-/**
- * Represents the declaration of a class or interface.
- * Provides access to information about the type and its members.
- * Note that an {@linkplain EnumDeclaration enum} is a kind of class,
- * and an {@linkplain AnnotationTypeDeclaration annotation type} is
- * a kind of interface.
- *
- * <p> <a name="DECL_VS_TYPE"></a>
- * While a <tt>TypeDeclaration</tt> represents the <i>declaration</i>
- * of a class or interface, a {@link DeclaredType} represents a class
- * or interface <i>type</i>, the latter being a use
- * (or <i>invocation</i>) of the former.
- * The distinction is most apparent with generic types,
- * for which a single declaration can define a whole
- * family of types.  For example, the declaration of
- * {@code java.util.Set} corresponds to the parameterized types
- * {@code java.util.Set<String>} and {@code java.util.Set<Number>}
- * (and many others), and to the raw type {@code java.util.Set}.
- *
- * <p> {@link com.sun.mirror.util.DeclarationFilter}
- * provides a simple way to select just the items of interest
- * when a method returns a collection of declarations.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.element.TypeElement}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- *
- * @see DeclaredType
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface TypeDeclaration extends MemberDeclaration {
-
-    /**
-     * Returns the package within which this type is declared.
-     *
-     * @return the package within which this type is declared
-     */
-    PackageDeclaration getPackage();
-
-    /**
-     * Returns the fully qualified name of this class or interface
-     * declaration.  More precisely, it returns the <i>canonical</i>
-     * name.
-     * The name of a generic type does not include any reference
-     * to its formal type parameters.
-     * For example, the the fully qualified name of the interface declaration
-     * {@code java.util.Set<E>} is <tt>"java.util.Set"</tt>.
-     *
-     * @return the fully qualified name of this class or interface declaration
-     */
-    String getQualifiedName();
-
-    /**
-     * Returns the formal type parameters of this class or interface.
-     *
-     * @return the formal type parameters, or an empty collection
-     * if there are none
-     */
-    Collection<TypeParameterDeclaration> getFormalTypeParameters();
-
-    /**
-     * Returns the interface types directly implemented by this class
-     * or extended by this interface.
-     *
-     * @return the interface types directly implemented by this class
-     * or extended by this interface, or an empty collection if there are none
-     *
-     * @see com.sun.mirror.util.DeclarationFilter
-     */
-    Collection<InterfaceType> getSuperinterfaces();
-
-    /**
-     * Returns the fields that are directly declared by this class or
-     * interface.  Includes enum constants.
-     *
-     * @return the fields that are directly declared,
-     * or an empty collection if there are none
-     *
-     * @see com.sun.mirror.util.DeclarationFilter
-     */
-    Collection<FieldDeclaration> getFields();
-
-    /**
-     * Returns the methods that are directly declared by this class or
-     * interface.  Includes annotation type elements.  Excludes
-     * implicitly declared methods of an interface, such as
-     * <tt>toString</tt>, that correspond to the methods of
-     * <tt>java.lang.Object</tt>.
-     *
-     * @return the methods that are directly declared,
-     * or an empty collection if there are none
-     *
-     * @see com.sun.mirror.util.DeclarationFilter
-     */
-    Collection<? extends MethodDeclaration> getMethods();
-
-    /**
-     * Returns the declarations of the nested classes and interfaces
-     * that are directly declared by this class or interface.
-     *
-     * @return the declarations of the nested classes and interfaces,
-     * or an empty collection if there are none
-     *
-     * @see com.sun.mirror.util.DeclarationFilter
-     */
-    Collection<TypeDeclaration> getNestedTypes();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/TypeParameterDeclaration.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.declaration;
-
-
-import java.util.Collection;
-
-import com.sun.mirror.type.*;
-
-
-/**
- * Represents a formal type parameter of a generic type, method,
- * or constructor declaration.
- * A type parameter declares a {@link TypeVariable}.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.element.TypeParameterElement}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface TypeParameterDeclaration extends Declaration {
-
-    /**
-     * Returns the bounds of this type parameter.
-     * These are the types given by the <i>extends</i> clause.
-     * If there is no explicit <i>extends</i> clause, then
-     * <tt>java.lang.Object</tt> is considered to be the sole bound.
-     *
-     * @return the bounds of this type parameter
-     */
-    Collection<ReferenceType> getBounds();
-
-    /**
-     * Returns the type, method, or constructor declaration within which
-     * this type parameter is declared.
-     *
-     * @return the declaration within which this type parameter is declared
-     */
-    Declaration getOwner();
-}
--- a/langtools/src/share/classes/com/sun/mirror/declaration/package-info.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
- * Interfaces used to model program element declarations.  A
- * declaration is represented by the appropriate subinterface of
- * {@link com.sun.mirror.declaration.Declaration}, and an annotation
- * is represented as an {@link
- * com.sun.mirror.declaration.AnnotationMirror}.
- *
- * <p>The {@code apt} tool and its associated API have been superseded
- * by the standardized annotation processing API.  The replacement for
- * the functionality in this package is {@link
- * javax.lang.model.element}.
- *
- * @since 1.5
- */
-package com.sun.mirror.declaration;
--- a/langtools/src/share/classes/com/sun/mirror/overview.html	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-
-Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
-DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
-This code is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-</head>
-
-<body bgcolor="white">
-
-The Mirror API is used to model the semantic structure of a program.
-It provides representations of the entities
-declared in a program, such as classes, methods, and fields.
-Constructs below the method level, such as 
-individual statements and expressions, are not represented.
-
-<p> Also included is support for writing
-{@linkplain com.sun.mirror.apt.AnnotationProcessor annotation processors}
-to examine and process the annotations
-of program elements.  An annotation processor may, as an example, create
-new source files and XML documents to be used in conjunction with the
-original code.
-
-
-<h4> Characteristics of the API </h4>
-
-A program is represented at the language level, rather than at the
-level of the virtual machine.  Nested classes, for example, are
-handled as first-class constructs, 
-rather than in the translated form understood by the VM.
-Both source code and compiled code (class files) may be modeled
-in this way.
-
-<p> Programs are modeled in their static, or build-time, form.
-This differs from the {@linkplain java.lang.reflect reflection} API,
-which provides run-time information about classes and objects.
-
-<p> The API does not provide direct support for generating new code.
-
-
-<h4> Declarations and Types </h4>
-  
-The mirror API represents program constructs principally through the
-{@link com.sun.mirror.declaration.Declaration} interface
-and its hierarchy of subinterfaces in the package {@link
-com.sun.mirror.declaration}.  A <tt>Declaration</tt> represents a
-program element such as a package, class, or method.
-The interface hierarchy is depicted
-<a href="com/sun/mirror/declaration/package-tree.html"> here</a>.
-
-<p> Types are represented by the {@link com.sun.mirror.type.TypeMirror}
-interface and its hierarchy of subinterfaces in the
-package {@link com.sun.mirror.type}.  Types include primitive types,
-class and interface types, array types, type variables, and wildcards.
-The interface hierarchy is depicted
-<a href="com/sun/mirror/type/package-tree.html"> here</a>.
-
-<p> The API makes a clear distinction between declarations and types.
-This is most significant for generic types, where a single declaration
-can define an infinite family of types.  For example, the declaration of
-<tt>java.util.Set</tt> defines the raw type <tt>java.util.Set</tt>,
-the parameterized type {@code java.util.Set<String>},
-and much more.  Only the declaration can be annotated, for example,
-and only a type can appear in a method signature.
-
-<p> A program being modeled may be incomplete, in that
-it may depend on an unknown class or interface type.
-This may be the result of a processing error such as a missing class file,
-or perhaps the missing type is to be created by an annotation processor.
-See {@link com.sun.mirror.type.DeclaredType} for information on
-how such unknown types are handled.
-
-
-<h4> Utilities and Tool Support </h4>
-
-The {@link com.sun.mirror.util} package provides
-utilities to assist in the processing of declarations and types.
-Included is support for using the visitor design pattern when
-operating on declaration and type objects.
-
-<p> The {@link com.sun.mirror.apt} package supports the writing
-of annotation processors.  It provides the mechanism for them to
-interact with an annotation processing tool.
-
-
-@since 1.5
-
-</body>
-</html>
--- a/langtools/src/share/classes/com/sun/mirror/type/AnnotationType.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.type;
-
-
-import com.sun.mirror.declaration.AnnotationTypeDeclaration;
-
-
-/**
- * Represents an annotation type.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.type.DeclaredType}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface AnnotationType extends InterfaceType {
-
-    /**
-     * {@inheritDoc}
-     */
-    AnnotationTypeDeclaration getDeclaration();
-}
--- a/langtools/src/share/classes/com/sun/mirror/type/ArrayType.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.type;
-
-
-/**
- * Represents an array type.
- * A multidimensional array type is represented as an array type
- * whose component type is also an array type.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.type.ArrayType}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface ArrayType extends ReferenceType {
-
-    /**
-     * Returns the component type of this array type.
-     *
-     * @return the component type of this array type
-     */
-    TypeMirror getComponentType();
-}
--- a/langtools/src/share/classes/com/sun/mirror/type/ClassType.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.type;
-
-
-import com.sun.mirror.declaration.*;
-
-
-/**
- * Represents a class type.
- * Interface types are represented separately by {@link InterfaceType}.
- * Note that an {@linkplain EnumType enum} is a kind of class.
- *
- * <p> While a {@link ClassDeclaration} represents the <i>declaration</i>
- * of a class, a <tt>ClassType</tt> represents a class <i>type</i>.
- * See {@link TypeDeclaration} for more on this distinction.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.type.DeclaredType}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface ClassType extends DeclaredType {
-
-    /**
-     * {@inheritDoc}
-     */
-    ClassDeclaration getDeclaration();
-
-    /**
-     * Returns the class type that is a direct supertype of this one.
-     * This is the superclass of this type's declaring class, with any
-     * type arguments substituted in.
-     * The only class with no superclass is <tt>java.lang.Object</tt>,
-     * for which this method returns <tt>null</tt>.
-     *
-     * <p> For example, the class type extended by
-     * {@code java.util.TreeSet<String>} is
-     * {@code java.util.AbstractSet<String>}.
-     *
-     * @return the class type that is a direct supertype of this one,
-     * or <tt>null</tt> if there is none
-     */
-    ClassType getSuperclass();
-}
--- a/langtools/src/share/classes/com/sun/mirror/type/DeclaredType.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.type;
-
-
-import java.util.Collection;
-
-import com.sun.mirror.declaration.TypeDeclaration;
-
-
-/**
- * Represents a declared type, either a class type or an interface type.
- * This includes parameterized types such as {@code java.util.Set<String>}
- * as well as raw types.
- *
- * <p> While a <tt>TypeDeclaration</tt> represents the <i>declaration</i>
- * of a class or interface, a <tt>DeclaredType</tt> represents a class
- * or interface <i>type</i>, the latter being a use of the former.
- * See {@link TypeDeclaration} for more on this distinction.
- *
- * <p> A <tt>DeclaredType</tt> may represent a type
- * for which details (declaration, supertypes, <i>etc.</i>) are unknown.
- * This may be the result of a processing error, such as a missing class file,
- * and is indicated by {@link #getDeclaration()} returning <tt>null</tt>.
- * Other method invocations on such an unknown type will not, in general,
- * return meaningful results.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.type.DeclaredType}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface DeclaredType extends ReferenceType {
-
-    /**
-     * Returns the declaration of this type.
-     *
-     * <p> Returns null if this type's declaration is unknown.  This may
-     * be the result of a processing error, such as a missing class file.
-     *
-     * @return the declaration of this type, or null if unknown
-     */
-    TypeDeclaration getDeclaration();
-
-    /**
-     * Returns the type that contains this type as a member.
-     * Returns <tt>null</tt> if this is a top-level type.
-     *
-     * <p> For example, the containing type of {@code O.I<S>}
-     * is the type {@code O}, and the containing type of
-     * {@code O<T>.I<S>} is the type {@code O<T>}.
-     *
-     * @return the type that contains this type,
-     * or <tt>null</tt> if this is a top-level type
-     */
-    DeclaredType getContainingType();
-
-    /**
-     * Returns (in order) the actual type arguments of this type.
-     * For a generic type nested within another generic type
-     * (such as {@code Outer<String>.Inner<Number>}), only the type
-     * arguments of the innermost type are included.
-     *
-     * @return the actual type arguments of this type, or an empty collection
-     * if there are none
-     */
-    Collection<TypeMirror> getActualTypeArguments();
-
-    /**
-     * Returns the interface types that are direct supertypes of this type.
-     * These are the interface types implemented or extended
-     * by this type's declaration, with any type arguments
-     * substituted in.
-     *
-     * <p> For example, the interface type extended by
-     * {@code java.util.Set<String>} is {@code java.util.Collection<String>}.
-     *
-     * @return the interface types that are direct supertypes of this type,
-     * or an empty collection if there are none
-     */
-    Collection<InterfaceType> getSuperinterfaces();
-}
--- a/langtools/src/share/classes/com/sun/mirror/type/EnumType.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.type;
-
-
-import com.sun.mirror.declaration.EnumDeclaration;
-
-
-/**
- * Represents an enum type.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.type.DeclaredType}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface EnumType extends ClassType {
-
-    /**
-     * {@inheritDoc}
-     */
-    EnumDeclaration getDeclaration();
-}
--- a/langtools/src/share/classes/com/sun/mirror/type/InterfaceType.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.type;
-
-
-import com.sun.mirror.declaration.*;
-
-
-/**
- * Represents an interface type.
- * Note that an {@linkplain AnnotationType annotation type} is
- * a kind of interface.
- *
- * <p> While an {@link InterfaceDeclaration} represents the
- * <i>declaration</i> of an interface, an <tt>InterfaceType</tt>
- * represents an interface <i>type</i>.
- * See {@link TypeDeclaration} for more on this distinction.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.type.DeclaredType}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface InterfaceType extends DeclaredType {
-
-    /**
-     * {@inheritDoc}
-     */
-    InterfaceDeclaration getDeclaration();
-}
--- a/langtools/src/share/classes/com/sun/mirror/type/MirroredTypeException.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.type;
-
-
-import java.lang.annotation.Annotation;
-
-import com.sun.mirror.declaration.Declaration;
-
-
-/**
- * Thrown when an application attempts to access the {@link Class} object
- * corresponding to a {@link TypeMirror}.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this exception is {@link
- * javax.lang.model.type.MirroredTypeException}.
- *
- * @see MirroredTypesException
- * @see Declaration#getAnnotation(Class)
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public class MirroredTypeException extends RuntimeException {
-
-    private static final long serialVersionUID = 1;
-
-    private transient TypeMirror type;          // cannot be serialized
-    private String name;                        // type's qualified "name"
-
-    /**
-     * Constructs a new MirroredTypeException for the specified type.
-     *
-     * @param type  the type being accessed
-     */
-    public MirroredTypeException(TypeMirror type) {
-        super("Attempt to access Class object for TypeMirror " + type);
-        this.type = type;
-        name = type.toString();
-    }
-
-    /**
-     * Returns the type mirror corresponding to the type being accessed.
-     * The type mirror may be unavailable if this exception has been
-     * serialized and then read back in.
-     *
-     * @return the type mirror, or <tt>null</tt> if unavailable
-     */
-    public TypeMirror getTypeMirror() {
-        return type;
-    }
-
-    /**
-     * Returns the fully qualified name of the type being accessed.
-     * More precisely, returns the canonical name of a class,
-     * interface, array, or primitive, and returns <tt>"void"</tt> for
-     * the pseudo-type representing the type of <tt>void</tt>.
-     *
-     * @return the fully qualified name of the type being accessed
-     */
-    public String getQualifiedName() {
-        return name;
-    }
-}
--- a/langtools/src/share/classes/com/sun/mirror/type/MirroredTypesException.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.type;
-
-
-import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-
-import com.sun.mirror.declaration.Declaration;
-
-
-/**
- * Thrown when an application attempts to access a sequence of {@link Class}
- * objects each corresponding to a {@link TypeMirror}.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this exception is {@link
- * javax.lang.model.type.MirroredTypesException}.
- *
- * @see MirroredTypeException
- * @see Declaration#getAnnotation(Class)
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public class MirroredTypesException extends RuntimeException {
-
-    private static final long serialVersionUID = 1;
-
-    private transient Collection<TypeMirror> types;     // cannot be serialized
-    private Collection<String> names;           // types' qualified "names"
-
-    /**
-     * Constructs a new MirroredTypesException for the specified types.
-     *
-     * @param types  an ordered collection of the types being accessed
-     */
-    public MirroredTypesException(Collection<TypeMirror> types) {
-        super("Attempt to access Class objects for TypeMirrors " + types);
-        this.types = types;
-        names = new ArrayList<String>();
-        for (TypeMirror t : types) {
-            names.add(t.toString());
-        }
-    }
-
-    /**
-     * Returns the type mirrors corresponding to the types being accessed.
-     * The type mirrors may be unavailable if this exception has been
-     * serialized and then read back in.
-     *
-     * @return the type mirrors in order, or <tt>null</tt> if unavailable
-     */
-    public Collection<TypeMirror> getTypeMirrors() {
-        return (types != null)
-                ? Collections.unmodifiableCollection(types)
-                : null;
-    }
-
-    /**
-     * Returns the fully qualified names of the types being accessed.
-     * More precisely, returns the canonical names of each class,
-     * interface, array, or primitive, and <tt>"void"</tt> for
-     * the pseudo-type representing the type of <tt>void</tt>.
-     *
-     * @return the fully qualified names, in order, of the types being
-     *          accessed
-     */
-    public Collection<String> getQualifiedNames() {
-        return Collections.unmodifiableCollection(names);
-    }
-}
--- a/langtools/src/share/classes/com/sun/mirror/type/PrimitiveType.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.type;
-
-
-/**
- * Represents a primitive type.  These include
- * <tt>boolean</tt>, <tt>byte</tt>, <tt>short</tt>, <tt>int</tt>,
- * <tt>long</tt>, <tt>char</tt>, <tt>float</tt>, and <tt>double</tt>.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.type.PrimitiveType}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface PrimitiveType extends TypeMirror {
-
-    /**
-     * Returns the kind of primitive type that this object represents.
-     *
-     * @return the kind of primitive type that this object represents
-     */
-    Kind getKind();
-
-    /**
-     * An enumeration of the different kinds of primitive types.
-     *
-     * @deprecated All components of this API have been superseded by
-     * the standardized annotation processing API.  The replacement
-     * for the functionality of this enum is {@link
-     * javax.lang.model.type.TypeKind}.
-     */
-    @Deprecated
-    enum Kind {
-        /** The primitive type <tt>boolean</tt> */      BOOLEAN,
-        /** The primitive type <tt>byte</tt> */         BYTE,
-        /** The primitive type <tt>short</tt> */        SHORT,
-        /** The primitive type <tt>int</tt> */          INT,
-        /** The primitive type <tt>long</tt> */         LONG,
-        /** The primitive type <tt>char</tt> */         CHAR,
-        /** The primitive type <tt>float</tt> */        FLOAT,
-        /** The primitive type <tt>double</tt> */       DOUBLE
-    }
-}
--- a/langtools/src/share/classes/com/sun/mirror/type/ReferenceType.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.type;
-
-
-/**
- * Represents a reference type.
- * These include class and interface types, array types, and type variables.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.type.ReferenceType}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface ReferenceType extends TypeMirror {
-}
--- a/langtools/src/share/classes/com/sun/mirror/type/TypeMirror.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.type;
-
-
-import com.sun.mirror.declaration.Declaration;
-import com.sun.mirror.util.Types;
-import com.sun.mirror.util.TypeVisitor;
-
-
-/**
- * Represents a type in the Java programming language.
- * Types include primitive types, class and interface types, array
- * types, and type variables.  Wildcard type arguments, and the
- * pseudo-type representing the type of <tt>void</tt>, are represented
- * by type mirrors as well.
- *
- * <p> Types may be compared using the utility methods in
- * {@link Types}.
- * There is no guarantee that any particular type will
- * always be represented by the same object.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.type.TypeMirror}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- *
- * @see Declaration
- * @see Types
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface TypeMirror {
-
-    /**
-     * Returns a string representation of this type.
-     * Any names embedded in the expression are qualified.
-     *
-     * @return a string representation of this type
-     */
-    String toString();
-
-    /**
-     * Tests whether two types represent the same type.
-     *
-     * @param obj the object to be compared with this type
-     * @return <tt>true</tt> if the specified object represents the same
-     *          type as this.
-     */
-    boolean equals(Object obj);
-
-    /**
-     * Applies a visitor to this type.
-     *
-     * @param v the visitor operating on this type
-     */
-    void accept(TypeVisitor v);
-}
--- a/langtools/src/share/classes/com/sun/mirror/type/TypeVariable.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.type;
-
-
-import com.sun.mirror.declaration.*;
-
-
-/**
- * Represents a type variable.
- * A type variable is declared by a
- * {@linkplain TypeParameterDeclaration type parameter} of a
- * type, method, or constructor.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.type.TypeVariable}.
- *
- * @author Joe Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface TypeVariable extends ReferenceType {
-
-    /**
-     * Returns the type parameter that declared this type variable.
-     *
-     * @return the type parameter that declared this type variable
-     */
-    TypeParameterDeclaration getDeclaration();
-}
--- a/langtools/src/share/classes/com/sun/mirror/type/VoidType.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.type;
-
-
-import com.sun.mirror.declaration.MethodDeclaration;
-
-
-/**
- * A pseudo-type representing the type of <tt>void</tt>.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is included in {@link
- * javax.lang.model.type.NoType}.
- *
- * @see MethodDeclaration#getReturnType()
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface VoidType extends TypeMirror {
-}
--- a/langtools/src/share/classes/com/sun/mirror/type/WildcardType.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.type;
-
-
-import java.util.Collection;
-
-
-/**
- * Represents a wildcard type argument.
- * Examples include:    <pre><tt>
- *   ?
- *   ? extends Number
- *   ? super T
- * </tt></pre>
- *
- * <p> A wildcard may have its upper bound explicitly set by an
- * <tt>extends</tt> clause, its lower bound explicitly set by a
- * <tt>super</tt> clause, or neither (but not both).
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.type.WildcardType}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface WildcardType extends TypeMirror {
-
-    /**
-     * Returns the upper bounds of this wildcard.
-     * If no upper bound is explicitly declared, then
-     * an empty collection is returned.
-     *
-     * @return the upper bounds of this wildcard
-     */
-    Collection<ReferenceType> getUpperBounds();
-
-    /**
-     * Returns the lower bounds of this wildcard.
-     * If no lower bound is explicitly declared, then
-     * an empty collection is returned.
-     *
-     * @return the lower bounds of this wildcard
-     */
-    Collection<ReferenceType> getLowerBounds();
-}
--- a/langtools/src/share/classes/com/sun/mirror/type/package-info.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
- * Interfaces used to model types.  A type is represented by the
- * appropriate subinterface of {@link com.sun.mirror.type.TypeMirror}.
- *
- * <p>The {@code apt} tool and its associated API have been
- * superseded by the standardized annotation processing API.  The
- * replacement for the functionality in this package is {@link
- * javax.lang.model.type}.
- *
- * @since 1.5
- */
-package com.sun.mirror.type;
--- a/langtools/src/share/classes/com/sun/mirror/util/DeclarationFilter.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,319 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.util;
-
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import com.sun.mirror.declaration.Declaration;
-import com.sun.mirror.declaration.Modifier;
-
-import static com.sun.mirror.declaration.Modifier.*;
-
-
-/**
- * A filter for selecting just the items of interest
- * from a collection of declarations.
- * The filter is said to <i>select</i> or to <i>match</i> those declarations.
- * Filters can be created in several ways:
- * by the static methods described below,
- * by negating or composing existing filters,
- * or by subclasses that implement arbitrary matching rules.
- *
- * <p> A subclass can create an arbitrary filter simply by implementing
- * the {@link #matches(Declaration)} method.
- *
- * <p> Examples.
- * <p> Selecting the <tt>public</tt> declarations from a collection:
- * <blockquote><pre>
- *     result = FILTER_PUBLIC.filter(decls);            </pre></blockquote>
- * Selecting class declarations (including enums):
- * <blockquote><pre>
- *     classFilter = DeclarationFilter.getFilter(ClassDeclaration.class);
- *     result = classFilter.filter(decls);              </pre></blockquote>
- * Selecting class declarations but excluding enums:
- * <blockquote><pre>
- *     enumFilter = DeclarationFilter.getFilter(EnumDeclaration.class);
- *     compoundFilter = classFilter.and(enumFilter.not());
- *     result = compoundFilter.filter(decls);           </pre></blockquote>
- * Selecting declarations named "Bob":
- * <blockquote><pre>
- *     nameFilter = new DeclarationFilter() {
- *                      public boolean matches(Declaration d) {
- *                          return d.getSimpleName().equals("Bob");
- *                      }
- *                  };
- *     result = nameFilter.filter(decls);               </pre></blockquote>
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this class is {@link
- * javax.lang.model.util.ElementFilter}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public class DeclarationFilter {
-
-    // Predefined filters for convenience.
-
-    /**
-     * A filter that selects only <tt>public</tt> declarations.
-     */
-    public static final DeclarationFilter FILTER_PUBLIC =
-            new AccessFilter(PUBLIC);
-
-    /**
-     * A filter that selects only <tt>protected</tt> declarations.
-     */
-    public static final DeclarationFilter FILTER_PROTECTED =
-            new AccessFilter(PROTECTED);
-
-    /**
-     * A filter that selects only <tt>public</tt> or <tt>protected</tt>
-     * declarations.
-     */
-    public static final DeclarationFilter FILTER_PUBLIC_OR_PROTECTED =
-            new AccessFilter(PUBLIC, PROTECTED);
-
-    /**
-     * A filter that selects only package-private (<i>default</i>)
-     * declarations.
-     */
-    public static final DeclarationFilter FILTER_PACKAGE =
-            new AccessFilter();
-
-    /**
-     * A filter that selects only <tt>private</tt> declarations.
-     */
-    public static final DeclarationFilter FILTER_PRIVATE =
-            new AccessFilter(PRIVATE);
-
-
-    /**
-     * Constructs an identity filter:  one that selects all declarations.
-     */
-    public DeclarationFilter() {
-    }
-
-
-
-    // Methods to create a filter.
-
-    /**
-     * Returns a filter that selects declarations containing all of a
-     * collection of modifiers.
-     *
-     * @param mods  the modifiers to match (non-null)
-     * @return a filter that matches declarations containing <tt>mods</tt>
-     */
-    public static DeclarationFilter getFilter(
-                                             final Collection<Modifier> mods) {
-        return new DeclarationFilter() {
-            public boolean matches(Declaration d) {
-                return d.getModifiers().containsAll(mods);
-            }
-        };
-    }
-
-    /**
-     * Returns a filter that selects declarations of a particular kind.
-     * For example, there may be a filter that selects only class
-     * declarations, or only fields.
-     * The filter will select declarations of the specified kind,
-     * and also any subtypes of that kind; for example, a field filter
-     * will also select enum constants.
-     *
-     * @param kind  the kind of declarations to select
-     * @return a filter that selects declarations of a particular kind
-     */
-    public static DeclarationFilter getFilter(
-                                     final Class<? extends Declaration> kind) {
-        return new DeclarationFilter() {
-            public boolean matches(Declaration d) {
-                return kind.isInstance(d);
-            }
-        };
-    }
-
-    /**
-     * Returns a filter that selects those declarations selected
-     * by both this filter and another.
-     *
-     * @param f  filter to be composed with this one
-     * @return a filter that selects those declarations selected by
-     *          both this filter and another
-     */
-    public DeclarationFilter and(DeclarationFilter f) {
-        final DeclarationFilter f1 = this;
-        final DeclarationFilter f2 = f;
-        return new DeclarationFilter() {
-            public boolean matches(Declaration d) {
-                return f1.matches(d) && f2.matches(d);
-            }
-        };
-    }
-
-    /**
-     * Returns a filter that selects those declarations selected
-     * by either this filter or another.
-     *
-     * @param f  filter to be composed with this one
-     * @return a filter that selects those declarations selected by
-     *          either this filter or another
-     */
-    public DeclarationFilter or(DeclarationFilter f) {
-        final DeclarationFilter f1 = this;
-        final DeclarationFilter f2 = f;
-        return new DeclarationFilter() {
-            public boolean matches(Declaration d) {
-                return f1.matches(d) || f2.matches(d);
-            }
-        };
-    }
-
-    /**
-     * Returns a filter that selects those declarations not selected
-     * by this filter.
-     *
-     * @return a filter that selects those declarations not selected
-     * by this filter
-     */
-    public DeclarationFilter not() {
-        return new DeclarationFilter() {
-            public boolean matches(Declaration d) {
-                return !DeclarationFilter.this.matches(d);
-            }
-        };
-    }
-
-
-
-    // Methods to apply a filter.
-
-    /**
-     * Tests whether this filter matches a given declaration.
-     * The default implementation always returns <tt>true</tt>;
-     * subclasses should override this.
-     *
-     * @param decl  the declaration to match
-     * @return <tt>true</tt> if this filter matches the given declaration
-     */
-    public boolean matches(Declaration decl) {
-        return true;
-    }
-
-    /**
-     * Returns the declarations matched by this filter.
-     * The result is a collection of the same type as the argument;
-     * the {@linkplain #filter(Collection, Class) two-parameter version}
-     * of <tt>filter</tt> offers control over the result type.
-     *
-     * @param <D>    type of the declarations being filtered
-     * @param decls  declarations being filtered
-     * @return the declarations matched by this filter
-     */
-    public <D extends Declaration> Collection<D> filter(Collection<D> decls) {
-        ArrayList<D> res = new ArrayList<D>(decls.size());
-        for (D d : decls) {
-            if (matches(d)) {
-                res.add(d);
-            }
-        }
-        return res;
-    }
-
-    /**
-     * Returns the declarations matched by this filter, with the result
-     * being restricted to declarations of a given kind.
-     * Similar to the simpler
-     * {@linkplain #filter(Collection) single-parameter version}
-     * of <tt>filter</tt>, but the result type is specified explicitly.
-     *
-     * @param <D>      type of the declarations being returned
-     * @param decls    declarations being filtered
-     * @param resType  type of the declarations being returned --
-     *                  the reflective view of <tt>D</tt>
-     * @return the declarations matched by this filter, restricted to those
-     *                  of the specified type
-     */
-    public <D extends Declaration> Collection<D>
-            filter(Collection<? extends Declaration> decls, Class<D> resType) {
-        ArrayList<D> res = new ArrayList<D>(decls.size());
-        for (Declaration d : decls) {
-            if (resType.isInstance(d) && matches(d)) {
-                res.add(resType.cast(d));
-            }
-        }
-        return res;
-    }
-
-
-
-    /*
-     * A filter based on access modifiers.
-     */
-    private static class AccessFilter extends DeclarationFilter {
-
-        // The first access modifier to filter on, or null if we're looking
-        // for declarations with no access modifiers.
-        private Modifier mod1 = null;
-
-        // The second access modifier to filter on, or null if none.
-        private Modifier mod2 = null;
-
-        // Returns a filter that matches declarations with no access
-        // modifiers.
-        AccessFilter() {
-        }
-
-        // Returns a filter that matches m.
-        AccessFilter(Modifier m) {
-            mod1 = m;
-        }
-
-        // Returns a filter that matches either m1 or m2.
-        AccessFilter(Modifier m1, Modifier m2) {
-            mod1 = m1;
-            mod2 = m2;
-        }
-
-        public boolean matches(Declaration d) {
-            Collection<Modifier> mods = d.getModifiers();
-            if (mod1 == null) { // looking for package private
-                return !(mods.contains(PUBLIC) ||
-                         mods.contains(PROTECTED) ||
-                         mods.contains(PRIVATE));
-            }
-            return mods.contains(mod1) &&
-                   (mod2 == null || mods.contains(mod2));
-        }
-    }
-}
--- a/langtools/src/share/classes/com/sun/mirror/util/DeclarationScanner.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,267 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.util;
-
-import com.sun.mirror.declaration.*;
-
-/**
- * A visitor for declarations that scans declarations contained within
- * the given declaration.  For example, when visiting a class, the
- * methods, fields, constructors, and nested types of the class are
- * also visited.
- *
- * <p> To control the processing done on a declaration, users of this
- * class pass in their own visitors for pre and post processing.  The
- * preprocessing visitor is called before the contained declarations
- * are scanned; the postprocessing visitor is called after the
- * contained declarations are scanned.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this class is {@link
- * javax.lang.model.util.ElementScanner6}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-class DeclarationScanner implements DeclarationVisitor {
-    protected DeclarationVisitor pre;
-    protected DeclarationVisitor post;
-
-    DeclarationScanner(DeclarationVisitor pre, DeclarationVisitor post) {
-        this.pre = pre;
-        this.post = post;
-    }
-
-    /**
-     * Visits a declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitDeclaration(Declaration d) {
-        d.accept(pre);
-        d.accept(post);
-    }
-
-    /**
-     * Visits a package declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitPackageDeclaration(PackageDeclaration d) {
-        d.accept(pre);
-
-        for(ClassDeclaration classDecl: d.getClasses()) {
-            classDecl.accept(this);
-        }
-
-        for(InterfaceDeclaration interfaceDecl: d.getInterfaces()) {
-            interfaceDecl.accept(this);
-        }
-
-        d.accept(post);
-    }
-
-    /**
-     * Visits a member or constructor declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitMemberDeclaration(MemberDeclaration d) {
-        visitDeclaration(d);
-    }
-
-    /**
-     * Visits a type declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitTypeDeclaration(TypeDeclaration d) {
-        d.accept(pre);
-
-        for(TypeParameterDeclaration tpDecl: d.getFormalTypeParameters()) {
-            tpDecl.accept(this);
-        }
-
-        for(FieldDeclaration fieldDecl: d.getFields()) {
-            fieldDecl.accept(this);
-        }
-
-        for(MethodDeclaration methodDecl: d.getMethods()) {
-            methodDecl.accept(this);
-        }
-
-        for(TypeDeclaration typeDecl: d.getNestedTypes()) {
-            typeDecl.accept(this);
-        }
-
-        d.accept(post);
-    }
-
-    /**
-     * Visits a class declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitClassDeclaration(ClassDeclaration d) {
-        d.accept(pre);
-
-        for(TypeParameterDeclaration tpDecl: d.getFormalTypeParameters()) {
-            tpDecl.accept(this);
-        }
-
-        for(FieldDeclaration fieldDecl: d.getFields()) {
-            fieldDecl.accept(this);
-        }
-
-        for(MethodDeclaration methodDecl: d.getMethods()) {
-            methodDecl.accept(this);
-        }
-
-        for(TypeDeclaration typeDecl: d.getNestedTypes()) {
-            typeDecl.accept(this);
-        }
-
-        for(ConstructorDeclaration ctorDecl: d.getConstructors()) {
-            ctorDecl.accept(this);
-        }
-
-        d.accept(post);
-    }
-
-    /**
-     * Visits an enum declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitEnumDeclaration(EnumDeclaration d) {
-        visitClassDeclaration(d);
-    }
-
-    /**
-     * Visits an interface declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitInterfaceDeclaration(InterfaceDeclaration d) {
-        visitTypeDeclaration(d);
-    }
-
-    /**
-     * Visits an annotation type declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitAnnotationTypeDeclaration(AnnotationTypeDeclaration d) {
-        visitInterfaceDeclaration(d);
-    }
-
-    /**
-     * Visits a field declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitFieldDeclaration(FieldDeclaration d) {
-        visitMemberDeclaration(d);
-    }
-
-    /**
-     * Visits an enum constant declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitEnumConstantDeclaration(EnumConstantDeclaration d) {
-        visitFieldDeclaration(d);
-    }
-
-    /**
-     * Visits a method or constructor declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitExecutableDeclaration(ExecutableDeclaration d) {
-        d.accept(pre);
-
-        for(TypeParameterDeclaration tpDecl: d.getFormalTypeParameters()) {
-            tpDecl.accept(this);
-        }
-
-        for(ParameterDeclaration pDecl: d.getParameters()) {
-            pDecl.accept(this);
-        }
-
-        d.accept(post);
-    }
-
-    /**
-     * Visits a constructor declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitConstructorDeclaration(ConstructorDeclaration d) {
-        visitExecutableDeclaration(d);
-    }
-
-    /**
-     * Visits a method declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitMethodDeclaration(MethodDeclaration d) {
-        visitExecutableDeclaration(d);
-    }
-
-    /**
-     * Visits an annotation type element declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitAnnotationTypeElementDeclaration(
-            AnnotationTypeElementDeclaration d) {
-        visitMethodDeclaration(d);
-    }
-
-    /**
-     * Visits a parameter declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitParameterDeclaration(ParameterDeclaration d) {
-        visitDeclaration(d);
-    }
-
-    /**
-     * Visits a type parameter declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitTypeParameterDeclaration(TypeParameterDeclaration d) {
-        visitDeclaration(d);
-    }
-}
--- a/langtools/src/share/classes/com/sun/mirror/util/DeclarationVisitor.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.util;
-
-import com.sun.mirror.declaration.*;
-
-
-/**
- * A visitor for declarations, in the style of the standard visitor
- * design pattern.  Classes implementing this interface are used to
- * operate on a declaration when the kind of declaration is unknown at
- * compile time.  When a visitor is passed to a declaration's {@link
- * Declaration#accept accept} method, the most specific
- * <tt>visit<i>Xxx</i></tt> method applicable to that declaration is
- * invoked.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.element.ElementVisitor}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface DeclarationVisitor {
-
-    /**
-     * Visits a declaration.
-     * @param d the declaration to visit
-     */
-    public void visitDeclaration(Declaration d);
-
-    /**
-     * Visits a package declaration.
-     * @param d the declaration to visit
-     */
-    public void visitPackageDeclaration(PackageDeclaration d);
-
-    /**
-     * Visits a member or constructor declaration.
-     * @param d the declaration to visit
-     */
-    public void visitMemberDeclaration(MemberDeclaration d);
-
-    /**
-     * Visits a type declaration.
-     * @param d the declaration to visit
-     */
-    public void visitTypeDeclaration(TypeDeclaration d);
-
-    /**
-     * Visits a class declaration.
-     * @param d the declaration to visit
-     */
-    public void visitClassDeclaration(ClassDeclaration d);
-
-    /**
-     * Visits an enum declaration.
-     * @param d the declaration to visit
-     */
-    public void visitEnumDeclaration(EnumDeclaration d);
-
-    /**
-     * Visits an interface declaration.
-     * @param d the declaration to visit
-     */
-    public void visitInterfaceDeclaration(InterfaceDeclaration d);
-
-    /**
-     * Visits an annotation type declaration.
-     * @param d the declaration to visit
-     */
-    public void visitAnnotationTypeDeclaration(AnnotationTypeDeclaration d);
-
-    /**
-     * Visits a field declaration.
-     * @param d the declaration to visit
-     */
-    public void visitFieldDeclaration(FieldDeclaration d);
-
-    /**
-     * Visits an enum constant declaration.
-     * @param d the declaration to visit
-     */
-    public void visitEnumConstantDeclaration(EnumConstantDeclaration d);
-
-    /**
-     * Visits a method or constructor declaration.
-     * @param d the declaration to visit
-     */
-    public void visitExecutableDeclaration(ExecutableDeclaration d);
-
-    /**
-     * Visits a constructor declaration.
-     * @param d the declaration to visit
-     */
-    public void visitConstructorDeclaration(ConstructorDeclaration d);
-
-    /**
-     * Visits a method declaration.
-     * @param d the declaration to visit
-     */
-    public void visitMethodDeclaration(MethodDeclaration d);
-
-    /**
-     * Visits an annotation type element declaration.
-     * @param d the declaration to visit
-     */
-    public void visitAnnotationTypeElementDeclaration(
-                                     AnnotationTypeElementDeclaration d);
-
-    /**
-     * Visits a parameter declaration.
-     * @param d the declaration to visit
-     */
-    public void visitParameterDeclaration(ParameterDeclaration d);
-
-    /**
-     * Visits a type parameter declaration.
-     * @param d the declaration to visit
-     */
-    public void visitTypeParameterDeclaration(TypeParameterDeclaration d);
-}
--- a/langtools/src/share/classes/com/sun/mirror/util/DeclarationVisitors.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.util;
-
-/**
- * Utilities to create specialized <tt>DeclarationVisitor</tt> instances.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  There is no direct
- * replacement for the functionality of this class in the standardized
- * API due to that API's different visitor structure.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public class DeclarationVisitors {
-    private DeclarationVisitors(){} // do not instantiate.
-
-    /**
-     * A visitor that has no side effects and keeps no state.
-     */
-    public static final DeclarationVisitor NO_OP = new SimpleDeclarationVisitor();
-
-    /**
-     * Return a <tt>DeclarationVisitor</tt> that will scan the
-     * declaration structure, visiting declarations contained in
-     * another declaration.  For example, when visiting a class, the
-     * fields, methods, constructors, etc. of the class are also
-     * visited.  The order in which the contained declarations are scanned is
-     * not specified.
-     *
-     * <p>The <tt>pre</tt> and <tt>post</tt>
-     * <tt>DeclarationVisitor</tt> parameters specify,
-     * respectively, the processing the scanner will do before or
-     * after visiting the contained declarations.  If only one of pre
-     * and post processing is needed, use {@link
-     * DeclarationVisitors#NO_OP DeclarationVisitors.NO_OP} for the
-     * other parameter.
-     *
-     * @param pre visitor representing processing to do before
-     * visiting contained declarations.
-     *
-     * @param post visitor representing processing to do after
-     * visiting contained declarations.
-     */
-    public static DeclarationVisitor getDeclarationScanner(DeclarationVisitor pre,
-                                                           DeclarationVisitor post) {
-        return new DeclarationScanner(pre, post);
-    }
-
-    /**
-     * Return a <tt>DeclarationVisitor</tt> that will scan the
-     * declaration structure, visiting declarations contained in
-     * another declaration in source code order.  For example, when
-     * visiting a class, the fields, methods, constructors, etc. of
-     * the class are also visited.  The order in which the contained
-     * declarations are visited is as close to source code order as
-     * possible; declaration mirrors created from class files instead
-     * of source code will not have source position information.
-     *
-     * <p>The <tt>pre</tt> and <tt>post</tt>
-     * <tt>DeclarationVisitor</tt> parameters specify,
-     * respectively, the processing the scanner will do before or
-     * after visiting the contained declarations.  If only one of pre
-     * and post processing is needed, use {@link
-     * DeclarationVisitors#NO_OP DeclarationVisitors.NO_OP} for the other parameter.
-     *
-     * @param pre visitor representing processing to do before
-     * visiting contained declarations.
-     *
-     * @param post visitor representing processing to do after
-     * visiting contained declarations.
-     */
-    public static DeclarationVisitor getSourceOrderDeclarationScanner(DeclarationVisitor pre,
-                                                                      DeclarationVisitor post) {
-        return new SourceOrderDeclScanner(pre, post);
-    }
-}
--- a/langtools/src/share/classes/com/sun/mirror/util/Declarations.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.util;
-
-
-import com.sun.mirror.declaration.*;
-
-
-/**
- * Utility methods for operating on declarations.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.util.Elements}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface Declarations {
-
-    /**
-     * Tests whether one type, method, or field declaration hides another.
-     *
-     * @param sub the first member
-     * @param sup the second member
-     * @return <tt>true</tt> if and only if the first member hides
-     *          the second
-     */
-    boolean hides(MemberDeclaration sub, MemberDeclaration sup);
-
-    /**
-     * Tests whether one method overrides another.  When a
-     * non-abstract method overrides an abstract one, the
-     * former is also said to <i>implement</i> the latter.
-     *
-     * @param sub the first method
-     * @param sup the second method
-     * @return <tt>true</tt> if and only if the first method overrides
-     *          the second
-     */
-    boolean overrides(MethodDeclaration sub, MethodDeclaration sup);
-}
--- a/langtools/src/share/classes/com/sun/mirror/util/SimpleDeclarationVisitor.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,216 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.util;
-
-
-import com.sun.mirror.declaration.*;
-
-
-/**
- * A simple visitor for declarations.
- *
- * <p> The implementations of the methods of this class do nothing but
- * delegate up the declaration hierarchy.  A subclass should override the
- * methods that correspond to the kinds of declarations on which it
- * will operate.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this class is {@link
- * javax.lang.model.util.SimpleElementVisitor6}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public class SimpleDeclarationVisitor implements DeclarationVisitor {
-
-    /**
-     * Creates a new <tt>SimpleDeclarationVisitor</tt>.
-     */
-    public SimpleDeclarationVisitor(){}
-
-    /**
-     * Visits a declaration.
-     * The implementation does nothing.
-     * @param d the declaration to visit
-     */
-    public void visitDeclaration(Declaration d) {
-    }
-
-    /**
-     * Visits a package declaration.
-     * The implementation simply invokes
-     * {@link #visitDeclaration visitDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitPackageDeclaration(PackageDeclaration d) {
-        visitDeclaration(d);
-    }
-
-    /**
-     * Visits a member or constructor declaration.
-     * The implementation simply invokes
-     * {@link #visitDeclaration visitDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitMemberDeclaration(MemberDeclaration d) {
-        visitDeclaration(d);
-    }
-
-    /**
-     * Visits a type declaration.
-     * The implementation simply invokes
-     * {@link #visitMemberDeclaration visitMemberDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitTypeDeclaration(TypeDeclaration d) {
-        visitMemberDeclaration(d);
-    }
-
-    /**
-     * Visits a class declaration.
-     * The implementation simply invokes
-     * {@link #visitTypeDeclaration visitTypeDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitClassDeclaration(ClassDeclaration d) {
-        visitTypeDeclaration(d);
-    }
-
-    /**
-     * Visits an enum declaration.
-     * The implementation simply invokes
-     * {@link #visitClassDeclaration visitClassDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitEnumDeclaration(EnumDeclaration d) {
-        visitClassDeclaration(d);
-    }
-
-    /**
-     * Visits an interface declaration.
-     * The implementation simply invokes
-     * {@link #visitTypeDeclaration visitTypeDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitInterfaceDeclaration(InterfaceDeclaration d) {
-        visitTypeDeclaration(d);
-    }
-
-    /**
-     * Visits an annotation type declaration.
-     * The implementation simply invokes
-     * {@link #visitInterfaceDeclaration visitInterfaceDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitAnnotationTypeDeclaration(AnnotationTypeDeclaration d) {
-        visitInterfaceDeclaration(d);
-    }
-
-    /**
-     * Visits a field declaration.
-     * The implementation simply invokes
-     * {@link #visitMemberDeclaration visitMemberDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitFieldDeclaration(FieldDeclaration d) {
-        visitMemberDeclaration(d);
-    }
-
-    /**
-     * Visits an enum constant declaration.
-     * The implementation simply invokes
-     * {@link #visitFieldDeclaration visitFieldDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitEnumConstantDeclaration(EnumConstantDeclaration d) {
-        visitFieldDeclaration(d);
-    }
-
-    /**
-     * Visits a method or constructor declaration.
-     * The implementation simply invokes
-     * {@link #visitMemberDeclaration visitMemberDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitExecutableDeclaration(ExecutableDeclaration d) {
-        visitMemberDeclaration(d);
-    }
-
-    /**
-     * Visits a constructor declaration.
-     * The implementation simply invokes
-     * {@link #visitExecutableDeclaration visitExecutableDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitConstructorDeclaration(ConstructorDeclaration d) {
-        visitExecutableDeclaration(d);
-    }
-
-    /**
-     * Visits a method declaration.
-     * The implementation simply invokes
-     * {@link #visitExecutableDeclaration visitExecutableDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitMethodDeclaration(MethodDeclaration d) {
-        visitExecutableDeclaration(d);
-    }
-
-    /**
-     * Visits an annotation type element declaration.
-     * The implementation simply invokes
-     * {@link #visitMethodDeclaration visitMethodDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitAnnotationTypeElementDeclaration(
-            AnnotationTypeElementDeclaration d) {
-        visitMethodDeclaration(d);
-    }
-
-    /**
-     * Visits a parameter declaration.
-     * The implementation simply invokes
-     * {@link #visitDeclaration visitDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitParameterDeclaration(ParameterDeclaration d) {
-        visitDeclaration(d);
-    }
-
-    /**
-     * Visits a type parameter declaration.
-     * The implementation simply invokes
-     * {@link #visitDeclaration visitDeclaration}.
-     * @param d the declaration to visit
-     */
-    public void visitTypeParameterDeclaration(TypeParameterDeclaration d) {
-        visitDeclaration(d);
-    }
-}
--- a/langtools/src/share/classes/com/sun/mirror/util/SimpleTypeVisitor.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,175 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.util;
-
-
-import com.sun.mirror.type.*;
-
-
-/**
- * A simple visitor for types.
- *
- * <p> The implementations of the methods of this class do nothing but
- * delegate up the type hierarchy.  A subclass should override the
- * methods that correspond to the kinds of types on which it will
- * operate.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this class is {@link
- * javax.lang.model.util.SimpleTypeVisitor6}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public class SimpleTypeVisitor implements TypeVisitor {
-
-    /**
-     * Creates a new <tt>SimpleTypeVisitor</tt>.
-     */
-    public SimpleTypeVisitor() {}
-
-    /**
-     * Visits a type mirror.
-     * The implementation does nothing.
-     * @param t the type to visit
-     */
-    public void visitTypeMirror(TypeMirror t) {
-    }
-
-    /**
-     * Visits a primitive type.
-     * The implementation simply invokes
-     * {@link #visitTypeMirror visitTypeMirror}.
-     * @param t the type to visit
-     */
-    public void visitPrimitiveType(PrimitiveType t) {
-        visitTypeMirror(t);
-    }
-
-    /**
-     * Visits a void type.
-     * The implementation simply invokes
-     * {@link #visitTypeMirror visitTypeMirror}.
-     * @param t the type to visit
-     */
-    public void visitVoidType(VoidType t) {
-        visitTypeMirror(t);
-    }
-
-    /**
-     * Visits a reference type.
-     * The implementation simply invokes
-     * {@link #visitTypeMirror visitTypeMirror}.
-     * @param t the type to visit
-     */
-    public void visitReferenceType(ReferenceType t) {
-        visitTypeMirror(t);
-    }
-
-    /**
-     * Visits a declared type.
-     * The implementation simply invokes
-     * {@link #visitReferenceType visitReferenceType}.
-     * @param t the type to visit
-     */
-    public void visitDeclaredType(DeclaredType t) {
-        visitReferenceType(t);
-    }
-
-    /**
-     * Visits a class type.
-     * The implementation simply invokes
-     * {@link #visitDeclaredType visitDeclaredType}.
-     * @param t the type to visit
-     */
-    public void visitClassType(ClassType t) {
-        visitDeclaredType(t);
-    }
-
-    /**
-     * Visits an enum type.
-     * The implementation simply invokes
-     * {@link #visitClassType visitClassType}.
-     * @param t the type to visit
-     */
-    public void visitEnumType(EnumType t) {
-        visitClassType(t);
-    }
-
-    /**
-     * Visits an interface type.
-     * The implementation simply invokes
-     * {@link #visitDeclaredType visitDeclaredType}.
-     * @param t the type to visit
-     */
-    public void visitInterfaceType(InterfaceType t) {
-        visitDeclaredType(t);
-    }
-
-    /**
-     * Visits an annotation type.
-     * The implementation simply invokes
-     * {@link #visitInterfaceType visitInterfaceType}.
-     * @param t the type to visit
-     */
-    public void visitAnnotationType(AnnotationType t) {
-        visitInterfaceType(t);
-    }
-
-    /**
-     * Visits an array type.
-     * The implementation simply invokes
-     * {@link #visitReferenceType visitReferenceType}.
-     * @param t the type to visit
-     */
-    public void visitArrayType(ArrayType t) {
-        visitReferenceType(t);
-    }
-
-    /**
-     * Visits a type variable.
-     * The implementation simply invokes
-     * {@link #visitReferenceType visitReferenceType}.
-     * @param t the type to visit
-     */
-    public void visitTypeVariable(TypeVariable t) {
-        visitReferenceType(t);
-    }
-
-    /**
-     * Visits a wildcard.
-     * The implementation simply invokes
-     * {@link #visitTypeMirror visitTypeMirror}.
-     * @param t the type to visit
-     */
-    public void visitWildcardType(WildcardType t) {
-        visitTypeMirror(t);
-    }
-}
--- a/langtools/src/share/classes/com/sun/mirror/util/SourceOrderDeclScanner.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,258 +0,0 @@
-/*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.util;
-
-import com.sun.mirror.declaration.*;
-
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-/**
- * A visitor for declarations that scans declarations contained within
- * the given declaration in source code order.  For example, when
- * visiting a class, the methods, fields, constructors, and nested
- * types of the class are also visited.
- *
- * To control the processing done on a declaration, users of this
- * class pass in their own visitors for pre and post processing.  The
- * preprocessing visitor is called before the contained declarations
- * are scanned; the postprocessing visitor is called after the
- * contained declarations are scanned.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this class is {@link
- * javax.lang.model.util.SimpleElementVisitor6}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-class SourceOrderDeclScanner extends DeclarationScanner {
-    static class SourceOrderComparator implements java.util.Comparator<Declaration> {
-        SourceOrderComparator(){}
-
-
-        static boolean equals(Declaration d1, Declaration d2) {
-            return d1 == d2 || (d1 != null && d1.equals(d2));
-        }
-
-        private static class DeclPartialOrder extends com.sun.mirror.util.SimpleDeclarationVisitor {
-            private int value = 1000;
-            private static int staticAdjust(Declaration d) {
-                return d.getModifiers().contains(Modifier.STATIC)?0:1;
-            }
-
-            DeclPartialOrder() {}
-
-            public int getValue() { return value; }
-
-            @Override
-            public void visitTypeParameterDeclaration(TypeParameterDeclaration d) {value = 0;}
-
-            @Override
-            public void visitEnumConstantDeclaration(EnumConstantDeclaration d) {value = 1;}
-
-            @Override
-            public void visitClassDeclaration(ClassDeclaration d) {value = 2 + staticAdjust(d);}
-
-            @Override
-            public void visitInterfaceDeclaration(InterfaceDeclaration d) {value = 4;}
-
-            @Override
-            public void visitEnumDeclaration(EnumDeclaration d) {value = 6;}
-
-            @Override
-            public void visitAnnotationTypeDeclaration(AnnotationTypeDeclaration d) {value = 8;}
-
-            @Override
-            public void visitFieldDeclaration(FieldDeclaration d) {value = 10 + staticAdjust(d);}
-
-            @Override
-            public void visitConstructorDeclaration(ConstructorDeclaration d) {value = 12;}
-
-            @Override
-            public void visitMethodDeclaration(MethodDeclaration d) {value = 14 + staticAdjust(d);}
-        }
-        @SuppressWarnings("cast")
-        private int compareEqualPosition(Declaration d1, Declaration d2) {
-            assert
-                (d1.getPosition() == d2.getPosition()) || // Handles two null positions.
-                (d1.getPosition().file().compareTo(d2.getPosition().file()) == 0 &&
-                 d1.getPosition().line()   == d2.getPosition().line() &&
-                 d1.getPosition().column() == d2.getPosition().column());
-
-            DeclPartialOrder dpo1 = new DeclPartialOrder();
-            DeclPartialOrder dpo2 = new DeclPartialOrder();
-
-            d1.accept(dpo1);
-            d2.accept(dpo2);
-
-            int difference = dpo1.getValue() - dpo2.getValue();
-            if (difference != 0)
-                return difference;
-            else {
-                int result = d1.getSimpleName().compareTo(d2.getSimpleName());
-                if (result != 0)
-                    return result;
-                return (int)( Long.signum((long)System.identityHashCode(d1) -
-                                          (long)System.identityHashCode(d2)));
-            }
-        }
-
-        public int compare(Declaration d1, Declaration d2) {
-            if (equals(d1, d2))
-                return 0;
-
-            SourcePosition p1 = d1.getPosition();
-            SourcePosition p2 = d2.getPosition();
-
-            if (p1 == null && p2 != null)
-                return 1;
-            else if (p1 != null && p2 == null)
-                return -1;
-            else if(p1 == null && p2 == null)
-                return compareEqualPosition(d1, d2);
-            else {
-                assert p1 != null && p2 != null;
-                int fileComp = p1.file().compareTo(p2.file()) ;
-                if (fileComp == 0) {
-                    long diff = (long)p1.line() - (long)p2.line();
-                    if (diff == 0) {
-                        diff = Long.signum((long)p1.column() - (long)p2.column());
-                        if (diff != 0)
-                            return (int)diff;
-                        else {
-                            // declarations may be two
-                            // compiler-generated members with the
-                            // same source position
-                            return compareEqualPosition(d1, d2);
-                        }
-                    } else
-                        return (diff<0)? -1:1;
-                } else
-                    return fileComp;
-            }
-        }
-    }
-
-    final static java.util.Comparator<Declaration> comparator = new SourceOrderComparator();
-
-    SourceOrderDeclScanner(DeclarationVisitor pre, DeclarationVisitor post) {
-        super(pre, post);
-    }
-
-    /**
-     * Visits a type declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitTypeDeclaration(TypeDeclaration d) {
-        d.accept(pre);
-
-        SortedSet<Declaration> decls = new
-            TreeSet<Declaration>(SourceOrderDeclScanner.comparator) ;
-
-        for(TypeParameterDeclaration tpDecl: d.getFormalTypeParameters()) {
-            decls.add(tpDecl);
-        }
-
-        for(FieldDeclaration fieldDecl: d.getFields()) {
-            decls.add(fieldDecl);
-        }
-
-        for(MethodDeclaration methodDecl: d.getMethods()) {
-            decls.add(methodDecl);
-        }
-
-        for(TypeDeclaration typeDecl: d.getNestedTypes()) {
-            decls.add(typeDecl);
-        }
-
-        for(Declaration decl: decls )
-            decl.accept(this);
-
-        d.accept(post);
-    }
-
-    /**
-     * Visits a class declaration.
-     *
-     * @param d the declaration to visit
-     */
-    public void visitClassDeclaration(ClassDeclaration d) {
-        d.accept(pre);
-
-        SortedSet<Declaration> decls = new
-            TreeSet<Declaration>(SourceOrderDeclScanner.comparator) ;
-
-        for(TypeParameterDeclaration tpDecl: d.getFormalTypeParameters()) {
-            decls.add(tpDecl);
-        }
-
-        for(FieldDeclaration fieldDecl: d.getFields()) {
-            decls.add(fieldDecl);
-        }
-
-        for(MethodDeclaration methodDecl: d.getMethods()) {
-            decls.add(methodDecl);
-        }
-
-        for(TypeDeclaration typeDecl: d.getNestedTypes()) {
-            decls.add(typeDecl);
-        }
-
-        for(ConstructorDeclaration ctorDecl: d.getConstructors()) {
-            decls.add(ctorDecl);
-        }
-
-        for(Declaration decl: decls )
-            decl.accept(this);
-
-        d.accept(post);
-    }
-
-    public void visitExecutableDeclaration(ExecutableDeclaration d) {
-        d.accept(pre);
-
-        SortedSet<Declaration> decls = new
-            TreeSet<Declaration>(SourceOrderDeclScanner.comparator) ;
-
-        for(TypeParameterDeclaration tpDecl: d.getFormalTypeParameters())
-            decls.add(tpDecl);
-
-        for(ParameterDeclaration pDecl: d.getParameters())
-            decls.add(pDecl);
-
-        for(Declaration decl: decls )
-            decl.accept(this);
-
-        d.accept(post);
-    }
-
-}
--- a/langtools/src/share/classes/com/sun/mirror/util/SourcePosition.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.util;
-
-
-import java.io.File;
-
-
-/**
- * Represents a position in a source file.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  There is no direct
- * replacement for the functionality of this interface since the
- * standardized {@link javax.annotation.processing.Messager Messager}
- * API implicitly takes a source position argument via any element,
- * annotation mirror, or annotation value passed along with the
- * message.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface SourcePosition {
-
-    /**
-     * Returns the source file containing this position.
-     *
-     * @return the source file containing this position; never null
-     */
-    File file();
-
-    /**
-     * Returns the line number of this position.  Lines are numbered
-     * starting with 1.
-     *
-     * @return the line number of this position, or 0 if the line
-     * number is unknown or not applicable
-     */
-    int line();
-
-    /**
-     * Returns the column number of this position.  Columns are numbered
-     * starting with 1.
-     *
-     * @return the column number of this position, or 0 if the column
-     * number is unknown or not applicable
-     */
-    int column();
-}
--- a/langtools/src/share/classes/com/sun/mirror/util/TypeVisitor.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.util;
-
-
-import com.sun.mirror.type.*;
-
-
-/**
- * A visitor for types, in the style of the standard visitor design pattern.
- * This is used to operate on a type when the kind
- * of type is unknown at compile time.
- * When a visitor is passed to a type's
- * {@link TypeMirror#accept accept} method,
- * the most specific <tt>visit<i>Xxx</i></tt> method applicable to
- * that type is invoked.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.element.TypeVisitor}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface TypeVisitor {
-
-    /**
-     * Visits a type mirror.
-     *
-     * @param t the type to visit
-     */
-    public void visitTypeMirror(TypeMirror t);
-
-    /**
-     * Visits a primitive type.
-
-     * @param t the type to visit
-     */
-    public void visitPrimitiveType(PrimitiveType t);
-
-    /**
-     * Visits a void type.
-     *
-     * @param t the type to visit
-     */
-    public void visitVoidType(VoidType t);
-
-    /**
-     * Visits a reference type.
-     *
-     * @param t the type to visit
-     */
-    public void visitReferenceType(ReferenceType t);
-
-    /**
-     * Visits a declared type.
-     *
-     * @param t the type to visit
-     */
-    public void visitDeclaredType(DeclaredType t);
-
-    /**
-     * Visits a class type.
-     *
-     * @param t the type to visit
-     */
-    public void visitClassType(ClassType t);
-
-    /**
-     * Visits an enum type.
-     *
-     * @param t the type to visit
-     */
-    public void visitEnumType(EnumType t);
-
-    /**
-     * Visits an interface type.
-     *
-     * @param t the type to visit
-     */
-    public void visitInterfaceType(InterfaceType t);
-
-    /**
-     * Visits an annotation type.
-     *
-     * @param t the type to visit
-     */
-    public void visitAnnotationType(AnnotationType t);
-
-    /**
-     * Visits an array type.
-     *
-     * @param t the type to visit
-     */
-    public void visitArrayType(ArrayType t);
-
-    /**
-     * Visits a type variable.
-     *
-     * @param t the type to visit
-     */
-    public void visitTypeVariable(TypeVariable t);
-
-    /**
-     * Visits a wildcard.
-     *
-     * @param t the type to visit
-     */
-    public void visitWildcardType(WildcardType t);
-}
--- a/langtools/src/share/classes/com/sun/mirror/util/Types.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.mirror.util;
-
-
-import java.util.Collection;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-
-
-/**
- * Utility methods for operating on types.
- *
- * @deprecated All components of this API have been superseded by the
- * standardized annotation processing API.  The replacement for the
- * functionality of this interface is {@link
- * javax.lang.model.util.Types}.
- *
- * @author Joseph D. Darcy
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public interface Types {
-
-    /**
-     * Tests whether one type is a subtype of the another.
-     * Any type is considered to be a subtype of itself.
-     *
-     * @param t1  the first type
-     * @param t2  the second type
-     * @return <tt>true</tt> if and only if the first type is a subtype
-     *          of the second
-     */
-    boolean isSubtype(TypeMirror t1, TypeMirror t2);
-
-    /**
-     * Tests whether one type is assignable to another.
-     *
-     * @param t1  the first type
-     * @param t2  the second type
-     * @return <tt>true</tt> if and only if the first type is assignable
-     *          to the second
-     */
-    boolean isAssignable(TypeMirror t1, TypeMirror t2);
-
-    /**
-     * Returns the erasure of a type.
-     *
-     * @param t  the type to be erased
-     * @return the erasure of the given type
-     */
-    TypeMirror getErasure(TypeMirror t);
-
-    /**
-     * Returns a primitive type.
-     *
-     * @param kind  the kind of primitive type to return
-     * @return a primitive type
-     */
-    PrimitiveType getPrimitiveType(PrimitiveType.Kind kind);
-
-    /**
-     * Returns the pseudo-type representing the type of <tt>void</tt>.
-     *
-     * @return the pseudo-type representing the type of <tt>void</tt>
-     */
-    VoidType getVoidType();
-
-    /**
-     * Returns an array type with the specified component type.
-     *
-     * @param componentType  the component type
-     * @return an array type with the specified component type.
-     * @throws IllegalArgumentException if the component type is not valid for
-     *          an array
-     */
-    ArrayType getArrayType(TypeMirror componentType);
-
-    /**
-     * Returns the type variable declared by a type parameter.
-     *
-     * @param tparam  the type parameter
-     * @return the type variable declared by the type parameter
-     */
-    TypeVariable getTypeVariable(TypeParameterDeclaration tparam);
-
-    /**
-     * Returns a new wildcard.
-     * Either the wildcards's upper bounds or lower bounds may be
-     * specified, or neither, but not both.
-     *
-     * @param upperBounds  the upper bounds of this wildcard,
-     *          or an empty collection if none
-     * @param lowerBounds  the lower bounds of this wildcard,
-     *          or an empty collection if none
-     * @return a new wildcard
-     * @throws IllegalArgumentException if bounds are not valid
-     */
-    WildcardType getWildcardType(Collection<ReferenceType> upperBounds,
-                                 Collection<ReferenceType> lowerBounds);
-
-    /**
-     * Returns the type corresponding to a type declaration and
-     * actual type arguments.
-     * Given the declaration for <tt>String</tt>, for example, this
-     * method may be used to get the <tt>String</tt> type.  It may
-     * then be invoked a second time, with the declaration for <tt>Set</tt>,
-     * to make the parameterized type {@code Set<String>}.
-     *
-     * <p> The number of type arguments must either equal the
-     * number of the declaration's formal type parameters, or must be
-     * zero.  If zero, and if the declaration is generic,
-     * then the declaration's raw type is returned.
-     *
-     * <p> If a parameterized type is being returned, its declaration
-     * must not be contained within a generic outer class.
-     * The parameterized type {@code Outer<String>.Inner<Number>},
-     * for example, may be constructed by first using this
-     * method to get the type {@code Outer<String>}, and then invoking
-     * {@link #getDeclaredType(DeclaredType, TypeDeclaration, TypeMirror...)}.
-     *
-     * @param decl      the type declaration
-     * @param typeArgs  the actual type arguments
-     * @return the type corresponding to the type declaration and
-     *          actual type arguments
-     * @throws IllegalArgumentException if too many or too few
-     *          type arguments are given, or if an inappropriate type
-     *          argument or declaration is provided
-     */
-    DeclaredType getDeclaredType(TypeDeclaration decl,
-                                 TypeMirror... typeArgs);
-
-    /**
-     * Returns the type corresponding to a type declaration
-     * and actual arguments, given a
-     * {@linkplain DeclaredType#getContainingType() containing type}
-     * of which it is a member.
-     * The parameterized type {@code Outer<String>.Inner<Number>},
-     * for example, may be constructed by first using
-     * {@link #getDeclaredType(TypeDeclaration, TypeMirror...)}
-     * to get the type {@code Outer<String>}, and then invoking
-     * this method.
-     *
-     * <p> If the containing type is a parameterized type,
-     * the number of type arguments must equal the
-     * number of the declaration's formal type parameters.
-     * If it is not parameterized or if it is <tt>null</tt>, this method is
-     * equivalent to <tt>getDeclaredType(decl, typeArgs)</tt>.
-     *
-     * @param containing  the containing type, or <tt>null</tt> if none
-     * @param decl        the type declaration
-     * @param typeArgs    the actual type arguments
-     * @return the type corresponding to the type declaration and
-     *          actual type arguments,
-     *          contained within the given type
-     * @throws IllegalArgumentException if too many or too few
-     *          type arguments are given, or if an inappropriate type
-     *          argument, declaration, or containing type is provided
-     */
-    DeclaredType getDeclaredType(DeclaredType containing,
-                                 TypeDeclaration decl,
-                                 TypeMirror... typeArgs);
-}
--- a/langtools/src/share/classes/com/sun/mirror/util/package-info.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
- * Utilities to assist in the processing of {@linkplain
- * com.sun.mirror.declaration declarations} and {@linkplain
- * com.sun.mirror.type types}.
- *
- * <p>The {@code apt} tool and its associated API have been superseded
- * by the standardized annotation processing API.  The replacement for
- * the functionality in this package is {@link javax.lang.model.util}.
- *
- * @since 1.5
- */
-package com.sun.mirror.util;
--- a/langtools/src/share/classes/com/sun/tools/apt/Main.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt;
-
-import java.io.PrintWriter;
-import com.sun.mirror.apt.AnnotationProcessorFactory;
-
-/**
- * The main program for the command-line tool apt.
- *
- * <p>Nothing described in this source file is part of any supported
- * API.  If you write code that depends on this, you do so at your own
- * risk.  This code and its internal interfaces are subject to change
- * or deletion without notice.
- */
-public class Main {
-
-    static {
-        ClassLoader loader = Main.class.getClassLoader();
-        if (loader != null)
-            loader.setPackageAssertionStatus("com.sun.tools.apt", true);
-    }
-
-    /** Command line interface.  If args is <tt>null</tt>, a
-     * <tt>NullPointerException</tt> is thrown.
-     * @param args   The command line parameters.
-     */
-    public static void main(String... args) {
-        System.exit(process(args));
-    }
-
-    /** Programatic interface.  If args is <tt>null</tt>, a
-     * <tt>NullPointerException</tt> is thrown.
-     * Output is directed to <tt>System.err</tt>.
-     * @param args   The command line parameters.
-     */
-    public static int process(String... args) {
-        return processing(null, null, args);
-    }
-
-    /** Programmatic interface.  If any argument
-     * is <tt>null</tt>, a <tt>NullPointerException</tt> is thrown.
-     * @param args   The command line parameters.
-     * @param out    Where the tool's output is directed.
-     */
-    public static int process(PrintWriter out, String... args) {
-        if (out == null)
-            throw new NullPointerException("Parameter out cannot be null.");
-        return processing(null, out, args);
-    }
-
-    /** Programmatic interface.  If <tt>factory</tt> or <tt>args</tt>
-     * is <tt>null</tt>, a <tt>NullPointerException</tt> is thrown.
-     * The &quot;<tt>-factory</tt>&quot; and &quot;<tt>-factorypath</tt>&quot;
-     * command line parameters are ignored by this entry point.
-     * Output is directed to <tt>System.err</tt>.
-     *
-     * @param factory The annotation processor factory to use
-     * @param args    The command line parameters.
-     */
-    public static int process(AnnotationProcessorFactory factory, String... args) {
-        return process(factory, new PrintWriter(System.err, true), args);
-    }
-
-    /** Programmatic interface.  If any argument
-     * is <tt>null</tt>, a <tt>NullPointerException</tt> is thrown.
-     * The &quot;<tt>-factory</tt>&quot; and &quot;<tt>-factorypath</tt>&quot;
-     * command line parameters are ignored by this entry point.
-     *
-     * @param factory The annotation processor factory to use
-     * @param args   The command line parameters.
-     * @param out    Where the tool's output is directed.
-     */
-    public static int process(AnnotationProcessorFactory factory, PrintWriter out,
-                              String... args) {
-        if (out == null)
-            throw new NullPointerException("Parameter out cannot be null.");
-        if (factory == null)
-            throw new NullPointerException("Parameter factory cannot be null");
-        return processing(factory, out, args);
-    }
-
-    private static int processing(AnnotationProcessorFactory factory,
-                                  PrintWriter out,
-                                  String... args) {
-        if (out == null)
-            out = new PrintWriter(System.err, true);
-        com.sun.tools.apt.main.Main compiler =
-            new com.sun.tools.apt.main.Main("apt", out);
-        return compiler.compile(args, factory);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/comp/AnnotationProcessingError.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.comp;
-
-public class AnnotationProcessingError extends Error {
-    private static final long serialVersionUID = 3279196183341719287L;
-    AnnotationProcessingError(Throwable cause) {
-        super(cause);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/comp/Apt.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,509 +0,0 @@
-/*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.comp;
-
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.comp.*;
-import com.sun.tools.javac.tree.*;
-import com.sun.tools.javac.util.*;
-import com.sun.tools.javac.tree.TreeScanner;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.apt.util.Bark;
-import com.sun.tools.javac.util.Position;
-
-import java.util.*;
-import java.util.regex.*;
-import java.lang.reflect.*;
-import java.lang.reflect.InvocationTargetException;
-import java.io.IOException;
-
-import com.sun.tools.apt.*;
-import com.sun.tools.apt.comp.*;
-import com.sun.tools.javac.code.Symbol.*;
-
-import com.sun.mirror.declaration.TypeDeclaration;
-import com.sun.mirror.declaration.AnnotationTypeDeclaration;
-import com.sun.mirror.apt.*;
-// import com.sun.mirror.apt.AnnotationProcessorFactory;
-import com.sun.mirror.apt.AnnotationProcessors;
-
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.apt.mirror.apt.FilerImpl;
-import com.sun.tools.apt.mirror.apt.AnnotationProcessorEnvironmentImpl;
-
-
-import static com.sun.tools.apt.mirror.declaration.DeclarationMaker.isJavaIdentifier;
-
-/**
- * Apt compiler phase.
- *
- *  <p><b>This is NOT part of any supported API.
- *  If you write code that depends on this, you do so at your own
- *  risk.  This code and its internal interfaces are subject to change
- *  or deletion without notice.</b>
- */
-@SuppressWarnings("deprecation")
-public class Apt extends ListBuffer<Env<AttrContext>> {
-    java.util.Set<String> genSourceFileNames = new java.util.LinkedHashSet<String>();
-    public java.util.Set<String> getSourceFileNames() {
-        return genSourceFileNames;
-    }
-
-    /** List of names of generated class files.
-     */
-    java.util.Set<String> genClassFileNames  = new java.util.LinkedHashSet<String>();
-    public java.util.Set<String> getClassFileNames() {
-        return genClassFileNames;
-    }
-
-    /* AptEnvironment */
-    AptEnv aptenv;
-
-    private Context context;
-
-    /** The context key for the todo list. */
-
-    protected static final Context.Key<Apt> aptKey =
-        new Context.Key<Apt>();
-
-    /** Get the Apt instance for this context. */
-    public static Apt instance(Context context) {
-        Apt instance = context.get(aptKey);
-        if (instance == null)
-            instance = new Apt(context);
-        return instance;
-    }
-
-    /** Create a new apt list. */
-    protected Apt(Context context) {
-        this.context = context;
-
-        context.put(aptKey, this);
-        aptenv = AptEnv.instance(context);
-    }
-
-    /**
-     * Used to scan javac trees to build data structures needed for
-     * bootstrapping the apt environment.  In particular:
-     *
-     * <ul>
-     *
-     * <li> Generate list of canonical names of annotation types that
-     * appear in source files given on the command line
-     *
-     * <li> Collect list of javac symbols representing source files
-     * given on the command line
-     *
-     * </ul>
-     */
-    static class AptTreeScanner extends TreeScanner {
-
-        // Set of fully qualified names of annotation types present in
-        // examined source
-        private Set<String> annotationSet;
-
-        // Symbols to build bootstrapping declaration list
-        private Collection<ClassSymbol> specifiedDeclCollection;
-        private Collection<ClassSymbol> declCollection;
-
-        public Set<String> getAnnotationSet() {
-            return annotationSet;
-        }
-
-        public AptTreeScanner() {
-            annotationSet = new  LinkedHashSet<String>();
-            specifiedDeclCollection = new LinkedHashSet<ClassSymbol>();
-            declCollection = new LinkedHashSet<ClassSymbol>();
-        }
-
-        public void visitTopLevel(JCTree.JCCompilationUnit tree) {
-            super.visitTopLevel(tree);
-            // Print out contents -- what are we dealing with?
-
-            for(JCTree d: tree.defs) {
-                if (d instanceof JCTree.JCClassDecl)
-                    specifiedDeclCollection.add(((JCTree.JCClassDecl) d).sym);
-            }
-
-        }
-
-        public void visitBlock(JCTree.JCBlock tree) {
-            ; // Do nothing.
-        }
-
-
-        // should add nested classes to packages, etc.
-        public void visitClassDef(JCTree.JCClassDecl tree) {
-            if (tree.sym == null) {
-                // could be an anon class w/in an initializer
-                return;
-            }
-
-            super.visitClassDef(tree);
-
-            declCollection.add(tree.sym);
-        }
-
-        public void visitMethodDef(JCTree.JCMethodDecl tree) {
-            super.visitMethodDef(tree);
-        }
-
-        public void visitVarDef(JCTree.JCVariableDecl tree) {
-            super.visitVarDef(tree);
-        }
-
-        public void visitAnnotation(JCTree.JCAnnotation tree) {
-            super.visitAnnotation(tree);
-            annotationSet.add(tree.type.tsym.toString());
-        }
-    }
-
-    Set<String> computeAnnotationSet(Collection<ClassSymbol> classSymbols) {
-        Set<String> annotationSet = new HashSet<String>();
-
-        for(ClassSymbol classSymbol: classSymbols) {
-            computeAnnotationSet(classSymbol, annotationSet);
-        }
-        return annotationSet;
-    }
-
-    void computeAnnotationSet(Symbol symbol, Set<String> annotationSet) {
-        if (symbol != null ) {
-            if (symbol.getAnnotationMirrors() != null)
-                for(Attribute.Compound compound: symbol.getAnnotationMirrors())
-                    annotationSet.add(compound.type.tsym.toString()); // should fullName be used instead of toString?
-
-            if (symbol instanceof Symbol.MethodSymbol) // add parameter annotations
-                for(Symbol param: ((MethodSymbol) symbol).params())
-                    computeAnnotationSet(param, annotationSet);
-
-            if (symbol.members() != null) {
-                for(Scope.Entry e = symbol.members().elems; e != null; e = e.sibling)
-                    computeAnnotationSet(e.sym, annotationSet);
-            }
-        }
-    }
-
-    public void main(com.sun.tools.javac.util.List<JCTree.JCCompilationUnit> treeList,
-                     ListBuffer<ClassSymbol> classes,
-                     Map<String, String> origOptions,
-                     ClassLoader aptCL,
-                     AnnotationProcessorFactory providedFactory,
-                     java.util.Set<Class<? extends AnnotationProcessorFactory> > productiveFactories) {
-        Bark bark = Bark.instance(context);
-        java.io.PrintWriter out = bark.getWriter(Log.WriterKind.WARNING);
-        Options options = Options.instance(context);
-
-        Collection<TypeDeclaration> spectypedecls =     new LinkedHashSet<TypeDeclaration>();
-        Collection<TypeDeclaration> typedecls =         new LinkedHashSet<TypeDeclaration>();
-        Set<String> unmatchedAnnotations =              new LinkedHashSet<String>();
-        Set<AnnotationTypeDeclaration> emptyATDS =      Collections.emptySet();
-        Set<Class<? extends AnnotationProcessorFactory> > currentRoundFactories =
-            new LinkedHashSet<Class<? extends AnnotationProcessorFactory> >();
-
-        // Determine what annotations are present on the input source
-        // files, create collections of specified type declarations,
-        // and type declarations.
-        AptTreeScanner ats = new AptTreeScanner();
-        for(JCTree t: treeList) {
-            t.accept(ats);
-        }
-
-        // Turn collection of ClassSymbols into Collection of apt decls
-        for (ClassSymbol cs : ats.specifiedDeclCollection) {
-            TypeDeclaration decl = aptenv.declMaker.getTypeDeclaration(cs);
-            spectypedecls.add(decl);
-        }
-
-        for (ClassSymbol cs : ats.declCollection) {
-            TypeDeclaration decl = aptenv.declMaker.getTypeDeclaration(cs);
-            typedecls.add(decl);
-        }
-
-        unmatchedAnnotations.addAll(ats.getAnnotationSet());
-
-        // Process input class files
-        for(ClassSymbol cs : classes) {
-            TypeDeclaration decl = aptenv.declMaker.getTypeDeclaration(cs);
-            // System.out.println("Adding a class to spectypedecls");
-            spectypedecls.add(decl);
-            typedecls.add(decl);
-            computeAnnotationSet(cs, unmatchedAnnotations);
-        }
-
-        if (options.get("-XListAnnotationTypes") != null) {
-            out.println("Set of annotations found:" +
-                        (new TreeSet<String>(unmatchedAnnotations)).toString());
-        }
-
-        AnnotationProcessorEnvironmentImpl trivAPE =
-            new AnnotationProcessorEnvironmentImpl(spectypedecls, typedecls, origOptions, context);
-
-        if (options.get("-XListDeclarations") != null) {
-            out.println("Set of Specified Declarations:" +
-                        spectypedecls);
-
-            out.println("Set of Included Declarations: " +
-                           typedecls);
-        }
-
-        if (options.get("-print") != null) {
-            if (spectypedecls.size() == 0 )
-                throw new UsageMessageNeededException();
-
-            // Run the printing processor
-            AnnotationProcessor proc = (new BootstrapAPF()).getProcessorFor(new HashSet<AnnotationTypeDeclaration>(),
-                                                                            trivAPE);
-            proc.process();
-        } else {
-            // Discovery process
-
-            // List of annotation processory factory instances
-            java.util.Iterator<AnnotationProcessorFactory> providers = null;
-            {
-                /*
-                 * If a factory is provided by the user, the
-                 * "-factory" and "-factorypath" options are not used.
-                 *
-                 * Otherwise, if the "-factory" option is used, search
-                 * the appropriate path for the named class.
-                 * Otherwise, use sun.misc.Service to implement the
-                 * default discovery policy.
-                 */
-
-                java.util.List<AnnotationProcessorFactory> list =
-                    new LinkedList<AnnotationProcessorFactory>();
-                String factoryName = options.get("-factory");
-
-                if (providedFactory != null) {
-                    list.add(providedFactory);
-                    providers = list.iterator();
-                } else if (factoryName != null) {
-                    try {
-                        AnnotationProcessorFactory factory =
-                            (AnnotationProcessorFactory) (aptCL.loadClass(factoryName).newInstance());
-                        list.add(factory);
-                    } catch (ClassNotFoundException cnfe) {
-                        bark.aptWarning("FactoryNotFound", factoryName);
-                    } catch (ClassCastException cce) {
-                        bark.aptWarning("FactoryWrongType", factoryName);
-                    } catch (Exception e ) {
-                        bark.aptWarning("FactoryCantInstantiate", factoryName);
-                    } catch(Throwable t) {
-                        throw new AnnotationProcessingError(t);
-                    }
-
-                    providers = list.iterator();
-                } else {
-                    @SuppressWarnings("unchecked")
-                    Iterator<AnnotationProcessorFactory> iter =
-                            sun.misc.Service.providers(AnnotationProcessorFactory.class, aptCL);
-                    providers = iter;
-
-                }
-            }
-
-            java.util.Map<AnnotationProcessorFactory, Set<AnnotationTypeDeclaration>> factoryToAnnotation =
-                new LinkedHashMap<AnnotationProcessorFactory, Set<AnnotationTypeDeclaration>>();
-
-            if (!providers.hasNext() && productiveFactories.size() == 0) {
-                if (unmatchedAnnotations.size() > 0)
-                    bark.aptWarning("NoAnnotationProcessors");
-                if (spectypedecls.size() == 0)
-                    throw new UsageMessageNeededException();
-                return; // no processors; nothing else to do
-            } else {
-                // If there are no annotations, still give
-                // processors that match everything a chance to
-                // run.
-
-                if(unmatchedAnnotations.size() == 0)
-                    unmatchedAnnotations.add("");
-
-                Set<String> emptyStringSet = new HashSet<String>();
-                emptyStringSet.add("");
-                emptyStringSet = Collections.unmodifiableSet(emptyStringSet);
-
-                while (providers.hasNext() ) {
-                    Object provider = providers.next();
-                    try {
-                        Set<String> matchedStrings = new HashSet<String>();
-
-                        AnnotationProcessorFactory apf = (AnnotationProcessorFactory) provider;
-                        Collection<String> supportedTypes = apf.supportedAnnotationTypes();
-
-                        Collection<Pattern> supportedTypePatterns = new LinkedList<Pattern>();
-                        for(String s: supportedTypes)
-                            supportedTypePatterns.add(importStringToPattern(s));
-
-                        for(String s: unmatchedAnnotations) {
-                            for(Pattern p: supportedTypePatterns) {
-                                if (p.matcher(s).matches()) {
-                                    matchedStrings.add(s);
-                                    break;
-                                }
-                            }
-                        }
-
-                        unmatchedAnnotations.removeAll(matchedStrings);
-
-                        if (options.get("-XPrintFactoryInfo") != null) {
-                            out.println("Factory " + apf.getClass().getName() +
-                                        " matches " +
-                                        ((matchedStrings.size() == 0)?
-                                         "nothing.": matchedStrings));
-                        }
-
-                        if (matchedStrings.size() > 0) {
-                            // convert annotation names to annotation
-                            // type decls
-                            Set<AnnotationTypeDeclaration> atds = new HashSet<AnnotationTypeDeclaration>();
-
-                            // If a "*" processor is called on the
-                            // empty string, pass in an empty set of
-                            // annotation type declarations.
-                            if (!matchedStrings.equals(emptyStringSet)) {
-                                for(String s: matchedStrings) {
-                                    TypeDeclaration decl = aptenv.declMaker.getTypeDeclaration(s);
-                                    AnnotationTypeDeclaration annotdecl;
-                                    if (decl == null) {
-                                        bark.aptError("DeclarationCreation", s);
-                                    } else {
-                                        try {
-                                            annotdecl = (AnnotationTypeDeclaration)decl;
-                                            atds.add(annotdecl);
-
-                                        } catch (ClassCastException cce) {
-                                            bark.aptError("BadDeclaration", s);
-                                        }
-                                    }
-                                }
-                            }
-
-                            currentRoundFactories.add(apf.getClass());
-                            productiveFactories.add(apf.getClass());
-                            factoryToAnnotation.put(apf, atds);
-                        } else if (productiveFactories.contains(apf.getClass())) {
-                            // If a factory provided a processor in a
-                            // previous round but doesn't match any
-                            // annotations this round, call it with an
-                            // empty set of declarations.
-                            currentRoundFactories.add(apf.getClass());
-                            factoryToAnnotation.put(apf, emptyATDS );
-                        }
-
-                        if (unmatchedAnnotations.size() == 0)
-                            break;
-
-                    } catch (ClassCastException cce) {
-                        bark.aptWarning("BadFactory", cce);
-                    }
-                }
-
-                unmatchedAnnotations.remove("");
-            }
-
-            // If the set difference of productiveFactories and
-            // currentRoundFactories is non-empty, call the remaining
-            // productive factories with an empty set of declarations.
-            {
-                java.util.Set<Class<? extends AnnotationProcessorFactory> > neglectedFactories =
-                    new LinkedHashSet<Class<? extends AnnotationProcessorFactory>>(productiveFactories);
-                neglectedFactories.removeAll(currentRoundFactories);
-                for(Class<? extends AnnotationProcessorFactory> working : neglectedFactories) {
-                    try {
-                        AnnotationProcessorFactory factory = working.newInstance();
-                        factoryToAnnotation.put(factory, emptyATDS);
-                    } catch (Exception e ) {
-                        bark.aptWarning("FactoryCantInstantiate", working.getName());
-                    } catch(Throwable t) {
-                        throw new AnnotationProcessingError(t);
-                    }
-                }
-            }
-
-            if (unmatchedAnnotations.size() > 0)
-                bark.aptWarning("AnnotationsWithoutProcessors", unmatchedAnnotations);
-
-            Set<AnnotationProcessor> processors = new LinkedHashSet<AnnotationProcessor>();
-
-            // If there were no source files AND no factory matching "*",
-            // make sure the usage message is printed
-            if (spectypedecls.size() == 0 &&
-                factoryToAnnotation.keySet().size() == 0 )
-                throw new UsageMessageNeededException();
-
-            try {
-                for(Map.Entry<AnnotationProcessorFactory, Set<AnnotationTypeDeclaration>> entry :
-                        factoryToAnnotation.entrySet()) {
-                    AnnotationProcessorFactory  apFactory = entry.getKey();
-                    AnnotationProcessor processor = apFactory.getProcessorFor(entry.getValue(),
-                                                                              trivAPE);
-                    if (processor != null)
-                        processors.add(processor);
-                    else
-                        bark.aptWarning("NullProcessor", apFactory.getClass().getName());
-                }
-            } catch(Throwable t) {
-                throw new AnnotationProcessingError(t);
-            }
-
-            LinkedList<AnnotationProcessor> temp = new LinkedList<AnnotationProcessor>();
-            temp.addAll(processors);
-
-            AnnotationProcessor proc = AnnotationProcessors.getCompositeAnnotationProcessor(temp);
-
-            try {
-                proc.process();
-            } catch (Throwable t) {
-                throw new AnnotationProcessingError(t);
-            }
-
-            // Invoke listener callback mechanism
-            trivAPE.roundComplete();
-
-            FilerImpl filerimpl = (FilerImpl)trivAPE.getFiler();
-            genSourceFileNames = filerimpl.getSourceFileNames();
-            genClassFileNames = filerimpl.getClassFileNames();
-            filerimpl.flush(); // Make sure new files are written out
-        }
-    }
-
-    /**
-     * Convert import-style string to regex matching that string.  If
-     * the string is a valid import-style string, return a regex that
-     * won't match anything.
-     */
-    Pattern importStringToPattern(String s) {
-        if (com.sun.tools.javac.processing.JavacProcessingEnvironment.isValidImportString(s)) {
-            return com.sun.tools.javac.processing.JavacProcessingEnvironment.validImportStringToPattern(s);
-        } else {
-            Bark bark = Bark.instance(context);
-            bark.aptWarning("MalformedSupportedString", s);
-            return com.sun.tools.javac.processing.JavacProcessingEnvironment.noMatches;
-        }
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/comp/BootstrapAPF.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.comp;
-
-import java.util.*;
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.AnnotationTypeDeclaration;
-
-@SuppressWarnings("deprecation")
-public class BootstrapAPF implements AnnotationProcessorFactory {
-
-    static final Collection<String> supportedOptions =
-        Collections.unmodifiableSet(new HashSet<String>());
-
-    static Collection<String> supportedAnnotations;
-    static {
-        Collection<String> c = new HashSet<String>();
-        c.add("*");
-        supportedAnnotations = Collections.unmodifiableCollection(c);
-    }
-
-    public BootstrapAPF(){}
-
-    public Collection<String> supportedOptions() {
-        return BootstrapAPF.supportedOptions;
-    }
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedAnnotations;
-    }
-
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-            AnnotationProcessorEnvironment env) {
-        return new PrintAP(env);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/comp/PrintAP.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,467 +0,0 @@
-/*
- * Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.comp;
-
-import com.sun.mirror.declaration.*;
-import static com.sun.mirror.declaration.Modifier.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.apt.*;
-
-import java.util.*;
-import com.sun.mirror.util.*;
-
-/**
- * Class used to implement "-print" option.
- */
-@SuppressWarnings("deprecation")
-public class PrintAP implements AnnotationProcessor {
-
-
-    static class PrintingVisitors {
-        int indentation = 0; // Indentation level;
-        AnnotationProcessorEnvironment env;
-        Messager out;
-        Declaration java_lang_Object;
-        Declaration java_lang_annotation_Annotation;
-
-        static Set<Modifier> EMPTY_ELIDES = Collections.emptySet();
-        static Set<Modifier> INTERFACE_ELIDES = EnumSet.of(ABSTRACT);
-        static Set<Modifier> ENUM_ELIDES = EnumSet.of(FINAL, ABSTRACT);
-        static Set<Modifier> INTERFACE_MEMBER_ELIDES = EnumSet.of(ABSTRACT, PUBLIC, STATIC, FINAL);
-
-        PrintingVisitors(AnnotationProcessorEnvironment env) {
-            this.env = env;
-            this.out = env.getMessager();
-            this.java_lang_Object = env.getTypeDeclaration("java.lang.Object");
-            this.java_lang_annotation_Annotation = env.getTypeDeclaration("java.lang.annotation.Annotation");
-        }
-
-
-        static String [] spaces = {
-            "",
-            "  ",
-            "    ",
-            "      ",
-            "        ",
-            "          ",
-            "            ",
-            "              ",
-            "                ",
-            "                  ",
-            "                    "
-        };
-
-
-        String indent(){
-            int indentation = this.indentation;
-            if (indentation < 0)
-                return "";
-            else if (indentation <= 10)
-                return spaces[indentation];
-            else {
-                StringBuilder sb = new StringBuilder();
-                while (indentation > 10) {
-                    sb.append(spaces[indentation]);
-                    indentation -= 10;
-                }
-                sb.append(spaces[indentation]);
-            return sb.toString();
-            }
-        }
-
-
-        class PrePrinting extends SimpleDeclarationVisitor {
-            Map<EnumDeclaration, Integer> enumCardinality  = new HashMap<EnumDeclaration, Integer>();
-            Map<EnumDeclaration, Integer> enumConstVisited = new HashMap<EnumDeclaration, Integer>();
-
-            PrePrinting(){}
-
-            public void visitClassDeclaration(ClassDeclaration d) {
-                System.out.println();
-                printDocComment(d);
-                printModifiers(d, EMPTY_ELIDES);
-                System.out.print("class " + d.getSimpleName());
-                printFormalTypeParameters(d);
-
-                // Elide "extends Object"
-                ClassType Super = d.getSuperclass();
-                if (Super != null && !java_lang_Object.equals(Super.getDeclaration()) )
-                    System.out.print(" extends " + Super.toString());
-
-                printInterfaces(d);
-
-                System.out.println(" {");
-
-                PrintingVisitors.this.indentation++;
-            }
-
-            public void visitEnumDeclaration(EnumDeclaration d) {
-                enumCardinality.put(d, d.getEnumConstants().size());
-                enumConstVisited.put(d, 1);
-
-                System.out.println();
-                printDocComment(d);
-                printModifiers(d, ENUM_ELIDES);
-
-                System.out.print("enum " + d.getSimpleName());
-                printFormalTypeParameters(d);
-                printInterfaces(d);
-
-                System.out.println(" {");
-
-                PrintingVisitors.this.indentation++;
-            }
-
-
-            public void visitInterfaceDeclaration(InterfaceDeclaration d) {
-                System.out.println();
-                printDocComment(d);
-                printModifiers(d, INTERFACE_ELIDES);
-                System.out.print("interface " + d.getSimpleName());
-
-                printFormalTypeParameters(d);
-                printInterfaces(d);
-
-                System.out.println(" {");
-
-                PrintingVisitors.this.indentation++;
-            }
-
-            public void visitAnnotationTypeDeclaration(AnnotationTypeDeclaration d) {
-                System.out.println();
-                printDocComment(d);
-                printModifiers(d, INTERFACE_ELIDES);
-                System.out.print("@interface " + d.getSimpleName());
-                printFormalTypeParameters(d);
-
-                printInterfaces(d);
-
-                System.out.println(" {");
-
-                PrintingVisitors.this.indentation++;
-            }
-
-            public void visitFieldDeclaration(FieldDeclaration d) {
-                System.out.println();
-                printDocComment(d);
-                printModifiers(d,
-                               (d.getDeclaringType() instanceof InterfaceDeclaration)?
-                               INTERFACE_MEMBER_ELIDES : EMPTY_ELIDES);
-                System.out.print(d.getType().toString() + " " +
-                                   d.getSimpleName() );
-                String constantExpr = d.getConstantExpression();
-                if (constantExpr != null) {
-                    System.out.print(" = " + constantExpr);
-                }
-                System.out.println(";" );
-            }
-
-            public void visitEnumConstantDeclaration(EnumConstantDeclaration d) {
-                EnumDeclaration ed = d.getDeclaringType();
-                int enumCard = enumCardinality.get(ed);
-                int enumVisit = enumConstVisited.get(ed);
-
-                System.out.println();
-                printDocComment(d);
-                System.out.print(PrintingVisitors.this.indent());
-                System.out.print(d.getSimpleName() );
-                System.out.println((enumVisit < enumCard )? ",":";" );
-
-                enumConstVisited.put(ed, enumVisit+1);
-            }
-
-            public void visitMethodDeclaration(MethodDeclaration d) {
-                System.out.println();
-                printDocComment(d);
-                printModifiers(d,
-                               (d.getDeclaringType() instanceof InterfaceDeclaration)?
-                               INTERFACE_MEMBER_ELIDES : EMPTY_ELIDES);
-                printFormalTypeParameters(d);
-                System.out.print(d.getReturnType().toString() + " ");
-                System.out.print(d.getSimpleName() + "(");
-                printParameters(d);
-                System.out.print(")");
-                printThrows(d);
-                System.out.println(";");
-            }
-
-            public void visitConstructorDeclaration(ConstructorDeclaration d) {
-                System.out.println();
-                printDocComment(d);
-                printModifiers(d, EMPTY_ELIDES);
-                printFormalTypeParameters(d);
-                System.out.print(d.getSimpleName() + "(");
-                printParameters(d);
-                System.out.print(")");
-                printThrows(d);
-                System.out.println(";");
-            }
-
-
-        }
-
-        class PostPrinting extends SimpleDeclarationVisitor {
-            PostPrinting(){}
-
-            public void visitTypeDeclaration(TypeDeclaration d) {
-                PrintingVisitors.this.indentation--;
-
-                System.out.print(PrintingVisitors.this.indent());
-                System.out.println("}");
-            }
-        }
-
-        private void printAnnotations(Collection<AnnotationMirror> annots) {
-
-            for(AnnotationMirror annot: annots) {
-                System.out.print(this.indent());
-                System.out.print(annot.toString());
-                System.out.println();
-            }
-        }
-
-        private void printAnnotationsInline(Collection<AnnotationMirror> annots) {
-
-            for(AnnotationMirror annot: annots) {
-                System.out.print(annot);
-                System.out.print(" ");
-            }
-        }
-
-
-        private void printParameters(ExecutableDeclaration ex) {
-
-            Collection<ParameterDeclaration> parameters = ex.getParameters();
-            int size = parameters.size();
-
-            switch (size) {
-            case 0:
-                break;
-
-            case 1:
-                for(ParameterDeclaration parameter: parameters) {
-                    printModifiers(parameter, EMPTY_ELIDES);
-
-                    if (ex.isVarArgs() ) {
-                        System.out.print(((ArrayType)parameter.getType()).getComponentType() );
-                        System.out.print("...");
-                    } else
-                        System.out.print(parameter.getType());
-                    System.out.print(" " + parameter.getSimpleName());
-                }
-                break;
-
-            default:
-                {
-                    int i = 1;
-                    for(ParameterDeclaration parameter: parameters) {
-                        if (i == 2)
-                            PrintingVisitors.this.indentation++;
-
-                        if (i > 1)
-                            System.out.print(PrintingVisitors.this.indent());
-
-                        printModifiers(parameter, EMPTY_ELIDES);
-
-                        if (i == size && ex.isVarArgs() ) {
-                            System.out.print(((ArrayType)parameter.getType()).getComponentType() );
-                            System.out.print("...");
-                        } else
-                            System.out.print(parameter.getType());
-                        System.out.print(" " + parameter.getSimpleName());
-
-                        if (i < size)
-                            System.out.println(",");
-
-                        i++;
-                    }
-
-                    if (parameters.size() >= 2)
-                        PrintingVisitors.this.indentation--;
-                }
-                break;
-            }
-        }
-
-        private void printDocComment(Declaration d) {
-            String docComment = d.getDocComment();
-
-            if (docComment != null) {
-                // Break comment into lines
-                java.util.StringTokenizer st = new StringTokenizer(docComment,
-                                                                  "\n\r");
-                System.out.print(PrintingVisitors.this.indent());
-                System.out.println("/**");
-
-                while(st.hasMoreTokens()) {
-                    System.out.print(PrintingVisitors.this.indent());
-                    System.out.print(" *");
-                    System.out.println(st.nextToken());
-                }
-
-                System.out.print(PrintingVisitors.this.indent());
-                System.out.println(" */");
-            }
-        }
-
-        private void printModifiers(Declaration d, Collection<Modifier> elides) {
-            printAnnotations(d.getAnnotationMirrors());
-
-            System.out.print(PrintingVisitors.this.indent());
-
-            for(Modifier m: adjustModifiers(d.getModifiers(), elides) ){
-                System.out.print(m.toString() + " ");
-            }
-        }
-
-        private void printModifiers(ParameterDeclaration d, Collection<Modifier> elides) {
-            printAnnotationsInline(d.getAnnotationMirrors());
-
-            for(Modifier m: adjustModifiers(d.getModifiers(), elides) ) {
-                System.out.print(m.toString() + " ");
-            }
-        }
-
-        private Collection<Modifier> adjustModifiers(Collection<Modifier> mods,
-                                                     Collection<Modifier> elides) {
-            if (elides.isEmpty())
-                return mods;
-            else {
-                Collection<Modifier> newMods = new LinkedHashSet<Modifier>();
-                newMods.addAll(mods);
-                newMods.removeAll(elides);
-                return newMods;
-            }
-        }
-
-        private void printFormalTypeParameters(ExecutableDeclaration e) {
-            printFormalTypeParameterSet(e.getFormalTypeParameters(), true);
-        }
-
-        private void printFormalTypeParameters(TypeDeclaration d) {
-            printFormalTypeParameterSet(d.getFormalTypeParameters(), false);
-        }
-
-        private void printFormalTypeParameterSet(Collection<TypeParameterDeclaration> typeParams, boolean pad) {
-            if (typeParams.size() != 0) {
-                System.out.print("<");
-
-                boolean first = true;
-                for(TypeParameterDeclaration tpd: typeParams) {
-                    if (!first)
-                        System.out.print(", ");
-                    System.out.print(tpd.toString());
-                }
-
-                System.out.print(">");
-                if (pad)
-                    System.out.print(" ");
-
-            }
-        }
-
-        private void printInterfaceSet(Collection<InterfaceType> interfaces,
-                                       boolean classNotInterface) {
-            if (interfaces.size() != 0) {
-                System.out.print((classNotInterface?" implements" : " extends"));
-
-                boolean first = true;
-                for(InterfaceType interType: interfaces) {
-                    if (!first)
-                        System.out.print(",");
-                    System.out.print(" ");
-                    System.out.print(interType.toString());
-                    first = false;
-                }
-            }
-        }
-
-        private void printInterfaces(TypeDeclaration d) {
-            printInterfaceSet(d.getSuperinterfaces(), d instanceof ClassDeclaration);
-        }
-
-        private void printInterfaces(AnnotationTypeDeclaration d) {
-            Collection<InterfaceType> interfaces = new HashSet<InterfaceType>(d.getSuperinterfaces());
-
-            for(InterfaceType interType: interfaces) {
-                if (java_lang_annotation_Annotation.equals(interType.getDeclaration()) )
-                    interfaces.remove(interType);
-            }
-
-            printInterfaceSet(interfaces, d instanceof ClassDeclaration);
-        }
-
-        private void printThrows(ExecutableDeclaration d) {
-            Collection<ReferenceType> thrownTypes = d.getThrownTypes();
-            final int size = thrownTypes.size();
-            if (size != 0) {
-                System.out.print(" throws");
-
-                int i = 1;
-                for(ReferenceType thrownType: thrownTypes) {
-                    if (i == 1) {
-                        System.out.print(" ");
-                    }
-
-                    if (i == 2)
-                        PrintingVisitors.this.indentation++;
-
-                    if (i >= 2)
-                        System.out.print(PrintingVisitors.this.indent());
-
-                    System.out.print(thrownType.toString());
-
-
-                    if (i != size) {
-                        System.out.println(", ");
-                    }
-                    i++;
-                }
-
-                if (size >= 2)
-                    PrintingVisitors.this.indentation--;
-            }
-        }
-
-        DeclarationVisitor getPrintingVisitor() {
-            return DeclarationVisitors.getSourceOrderDeclarationScanner(new PrePrinting(),
-                                                                        new PostPrinting());
-        }
-    }
-
-    AnnotationProcessorEnvironment env;
-    PrintAP(AnnotationProcessorEnvironment env) {
-        this.env = env;
-    }
-
-
-    public void process() {
-        Collection<TypeDeclaration> typedecls = env.getSpecifiedTypeDeclarations();
-
-        for (TypeDeclaration td: typedecls)
-            td.accept((new PrintingVisitors(env)).getPrintingVisitor());
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/comp/UsageMessageNeededException.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.comp;
-
-
-public class UsageMessageNeededException extends RuntimeException {
-    private static final long serialVersionUID = -3265159608992825840L;
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/main/AptJavaCompiler.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,291 +0,0 @@
-/*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.main;
-
-import java.io.*;
-import java.util.Map;
-
-import javax.tools.JavaFileManager;
-import javax.tools.JavaFileObject;
-
-import com.sun.tools.javac.file.JavacFileManager;
-import com.sun.tools.javac.util.*;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.jvm.*;
-
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.tree.JCTree.*;
-
-import com.sun.tools.apt.comp.*;
-import com.sun.tools.apt.util.Bark;
-import com.sun.mirror.apt.AnnotationProcessorFactory;
-
-/**
- *  <p><b>This is NOT part of any supported API.
- *  If you write code that depends on this, you do so at your own
- *  risk.  This code and its internal interfaces are subject to change
- *  or deletion without notice.</b>
- */
-@SuppressWarnings("deprecation")
-public class AptJavaCompiler extends com.sun.tools.javac.main.JavaCompiler {
-    /** The context key for the compiler. */
-    protected static final Context.Key<AptJavaCompiler> compilerKey =
-        new Context.Key<AptJavaCompiler>();
-
-    /** Get the JavaCompiler instance for this context. */
-    public static AptJavaCompiler instance(Context context) {
-        AptJavaCompiler instance = context.get(compilerKey);
-        if (instance == null)
-            instance = new AptJavaCompiler(context);
-        return instance;
-    }
-
-
-    java.util.Set<String> genSourceFileNames;
-    java.util.Set<String> genClassFileNames;
-
-    public java.util.Set<String> getSourceFileNames() {
-        return genSourceFileNames;
-    }
-
-    /** List of names of generated class files.
-     */
-    public java.util.Set<String> getClassFileNames() {
-        return genClassFileNames;
-    }
-
-    java.util.Set<java.io.File> aggregateGenFiles = java.util.Collections.emptySet();
-
-    public java.util.Set<java.io.File> getAggregateGenFiles() {
-        return aggregateGenFiles;
-    }
-
-    /** The bark to be used for error reporting.
-     */
-    Bark bark;
-
-    /** The log to be used for error reporting.
-     */
-    Log log;
-
-    /** The annotation framework
-     */
-    Apt apt;
-
-    private static Context preRegister(Context context) {
-        Bark.preRegister(context);
-
-        if (context.get(JavaFileManager.class) == null)
-            JavacFileManager.preRegister(context);
-
-        return context;
-    }
-
-    /** Construct a new compiler from a shared context.
-     */
-    public AptJavaCompiler(Context context) {
-        super(preRegister(context));
-
-        context.put(compilerKey, this);
-        apt = Apt.instance(context);
-
-        ClassReader classReader = ClassReader.instance(context);
-        classReader.preferSource = true;
-
-        // TEMPORARY NOTE: bark==log, but while refactoring, we maintain their
-        // original identities, to remember the original intent.
-        log = Log.instance(context);
-        bark = Bark.instance(context);
-
-        Options options = Options.instance(context);
-        classOutput   = options.get("-retrofit")      == null;
-        nocompile     = options.get("-nocompile")     != null;
-        print         = options.get("-print")         != null;
-        classesAsDecls= options.get("-XclassesAsDecls") != null;
-
-        genSourceFileNames = new java.util.LinkedHashSet<String>();
-        genClassFileNames  = new java.util.LinkedHashSet<String>();
-
-        // this forces a copy of the line map to be kept in the tree,
-        // for use by com.sun.mirror.util.SourcePosition.
-        lineDebugInfo = true;
-    }
-
-    /* Switches:
-     */
-
-    /** Emit class files. This switch is always set, except for the first
-     *  phase of retrofitting, where signatures are parsed.
-     */
-    public boolean classOutput;
-
-    /** The internal printing annotation processor should be used.
-     */
-    public boolean print;
-
-    /** Compilation should not be done after annotation processing.
-     */
-    public boolean nocompile;
-
-    /** Are class files being treated as declarations
-     */
-    public boolean classesAsDecls;
-
-    /** Try to open input stream with given name.
-     *  Report an error if this fails.
-     *  @param filename   The file name of the input stream to be opened.
-     */
-    // PROVIDED FOR EXTREME BACKWARDS COMPATIBILITY
-    // There are some very obscure errors that can arise while translating
-    // the contents of a file from bytes to characters. In Tiger, these
-    // diagnostics were ignored. This method provides compatibility with
-    // that behavior. It would be better to honor those diagnostics, in which
-    // case, this method can be deleted.
-    @Override
-    public CharSequence readSource(JavaFileObject filename) {
-        try {
-            inputFiles.add(filename);
-            boolean prev = bark.setDiagnosticsIgnored(true);
-            try {
-                return filename.getCharContent(false);
-            }
-            finally {
-                bark.setDiagnosticsIgnored(prev);
-            }
-        } catch (IOException e) {
-            bark.error(Position.NOPOS, "cant.read.file", filename);
-            return null;
-        }
-    }
-
-    /** Parse contents of input stream.
-     *  @param filename     The name of the file from which input stream comes.
-     *  @param input        The input stream to be parsed.
-     */
-    // PROVIDED FOR BACKWARDS COMPATIBILITY
-    // In Tiger, diagnostics from the scanner and parser were ignored.
-    // This method provides compatibility with that behavior.
-    // It would be better to honor those diagnostics, in which
-    // case, this method can be deleted.
-    @Override
-    protected JCCompilationUnit parse(JavaFileObject filename, CharSequence content) {
-        boolean prev = bark.setDiagnosticsIgnored(true);
-        try {
-            return super.parse(filename, content);
-        }
-        finally {
-            bark.setDiagnosticsIgnored(prev);
-        }
-    }
-
-    @Override
-    protected boolean keepComments() {
-        return true;  // make doc comments available to mirror API impl.
-    }
-
-    /** Track when the JavaCompiler has been used to compile something. */
-    private boolean hasBeenUsed = false;
-
-    /** Main method: compile a list of files, return all compiled classes
-     *  @param filenames     The names of all files to be compiled.
-     */
-    public List<ClassSymbol> compile(List<String> filenames,
-                                     Map<String, String> origOptions,
-                                     ClassLoader aptCL,
-                                     AnnotationProcessorFactory providedFactory,
-                                     java.util.Set<Class<? extends AnnotationProcessorFactory> > productiveFactories,
-                                     java.util.Set<java.io.File> aggregateGenFiles)
-        throws Throwable {
-        // as a JavaCompiler can only be used once, throw an exception if
-        // it has been used before.
-        assert !hasBeenUsed : "attempt to reuse JavaCompiler";
-        hasBeenUsed = true;
-
-        this.aggregateGenFiles = aggregateGenFiles;
-
-        long msec = System.currentTimeMillis();
-
-        ListBuffer<ClassSymbol> classes = new ListBuffer<ClassSymbol>();
-        try {
-            JavacFileManager fm = (JavacFileManager)fileManager;
-            //parse all files
-            ListBuffer<JCCompilationUnit> trees = new ListBuffer<JCCompilationUnit>();
-            for (List<String> l = filenames; l.nonEmpty(); l = l.tail) {
-                if (classesAsDecls) {
-                    if (! l.head.endsWith(".java") ) { // process as class file
-                        ClassSymbol cs = reader.enterClass(names.fromString(l.head));
-                        try {
-                            cs.complete();
-                        } catch(Symbol.CompletionFailure cf) {
-                            bark.aptError("CantFindClass", l);
-                            continue;
-                        }
-
-                        classes.append(cs); // add to list of classes
-                        continue;
-                    }
-                }
-                JavaFileObject fo = fm.getJavaFileObjectsFromStrings(List.of(l.head)).iterator().next();
-                trees.append(parse(fo));
-            }
-
-            //enter symbols for all files
-            List<JCCompilationUnit> roots = trees.toList();
-
-            if (errorCount() == 0) {
-                boolean prev = bark.setDiagnosticsIgnored(true);
-                try {
-                    enter.main(roots);
-                }
-                finally {
-                    bark.setDiagnosticsIgnored(prev);
-                }
-            }
-
-            if (errorCount() == 0) {
-                apt.main(roots,
-                         classes,
-                         origOptions, aptCL,
-                         providedFactory,
-                         productiveFactories);
-                genSourceFileNames.addAll(apt.getSourceFileNames());
-                genClassFileNames.addAll(apt.getClassFileNames());
-            }
-
-        } catch (Abort ex) {
-        }
-
-        if (verbose)
-            log.printVerbose("total", Long.toString(System.currentTimeMillis() - msec));
-
-        chk.reportDeferredDiagnostics();
-
-        printCount("error", errorCount());
-        printCount("warn", warningCount());
-
-        return classes.toList();
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/main/CommandLine.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.main;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.io.FileReader;
-import java.io.BufferedReader;
-import java.io.StreamTokenizer;
-import com.sun.tools.javac.util.ListBuffer;
-
-/**
- * Various utility methods for processing Java tool command line arguments.
- *
- *  <p><b>This is NOT part of any supported API.
- *  If you write code that depends on this, you do so at your own risk.
- *  This code and its internal interfaces are subject to change or
- *  deletion without notice.</b>
- */
-public class CommandLine {
-    /**
-     * Process Win32-style command files for the specified command line
-     * arguments and return the resulting arguments. A command file argument
-     * is of the form '@file' where 'file' is the name of the file whose
-     * contents are to be parsed for additional arguments. The contents of
-     * the command file are parsed using StreamTokenizer and the original
-     * '@file' argument replaced with the resulting tokens. Recursive command
-     * files are not supported. The '@' character itself can be quoted with
-     * the sequence '@@'.
-     */
-    public static String[] parse(String[] args)
-        throws IOException
-    {
-        ListBuffer<String> newArgs = new ListBuffer<String>();
-        for (int i = 0; i < args.length; i++) {
-            String arg = args[i];
-            if (arg.length() > 1 && arg.charAt(0) == '@') {
-                arg = arg.substring(1);
-                if (arg.charAt(0) == '@') {
-                    newArgs.append(arg);
-                } else {
-                    loadCmdFile(arg, newArgs);
-                }
-            } else {
-                newArgs.append(arg);
-            }
-        }
-        return newArgs.toList().toArray(new String[newArgs.length()]);
-    }
-
-    private static void loadCmdFile(String name, ListBuffer<String> args)
-        throws IOException
-    {
-        Reader r = new BufferedReader(new FileReader(name));
-        StreamTokenizer st = new StreamTokenizer(r);
-        st.resetSyntax();
-        st.wordChars(' ', 255);
-        st.whitespaceChars(0, ' ');
-        st.commentChar('#');
-        st.quoteChar('"');
-        st.quoteChar('\'');
-        while (st.nextToken() != StreamTokenizer.TT_EOF) {
-            args.append(st.sval);
-        }
-        r.close();
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/main/Main.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1281 +0,0 @@
-/*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.main;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.text.MessageFormat;
-import java.util.ResourceBundle;
-import java.util.MissingResourceException;
-import java.util.StringTokenizer;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.Collections;
-
-import java.net.URLClassLoader;
-import java.net.URL;
-import java.net.MalformedURLException;
-
-import javax.tools.JavaFileManager;
-import javax.tools.StandardLocation;
-
-import com.sun.tools.javac.file.JavacFileManager;
-import com.sun.tools.javac.code.Source;
-import com.sun.tools.javac.code.Symbol;
-import com.sun.tools.javac.code.Type;
-import com.sun.tools.javac.jvm.Target;
-import com.sun.tools.javac.util.*;
-
-import com.sun.tools.apt.comp.AnnotationProcessingError;
-import com.sun.tools.apt.comp.UsageMessageNeededException;
-import com.sun.tools.apt.util.Bark;
-import com.sun.mirror.apt.AnnotationProcessorFactory;
-
-import static com.sun.tools.javac.file.Locations.pathToURLs;
-
-/** This class provides a commandline interface to the apt build-time
- *  tool.
- *
- *  <p><b>This is NOT part of any supported API.
- *  If you write code that depends on this, you do so at your own
- *  risk.  This code and its internal interfaces are subject to change
- *  or deletion without notice.</b>
- */
-@SuppressWarnings("deprecation")
-public class Main {
-
-    /** For testing: enter any options you want to be set implicitly
-     *  here.
-     */
-    static String[] forcedOpts = {
-        // Preserve parameter names from class files if the class was
-        // compiled with debug enabled
-        "-XDsave-parameter-names"
-    };
-
-    /** The name of the compiler, for use in diagnostics.
-     */
-    String ownName;
-
-    /** The writer to use for diagnostic output.
-     */
-    PrintWriter out;
-
-
-    /** Instantiated factory to use in lieu of discovery process.
-     */
-    AnnotationProcessorFactory providedFactory = null;
-
-    /** Map representing original command-line arguments.
-     */
-    Map<String,String> origOptions = new HashMap<String, String>();
-
-    /** Classloader to use for finding factories.
-     */
-    ClassLoader aptCL = null;
-
-    /** Result codes.
-     */
-    static final int
-        EXIT_OK = 0,        // Compilation completed with no errors.
-        EXIT_ERROR = 1,     // Completed but reported errors.
-        EXIT_CMDERR = 2,    // Bad command-line arguments
-        EXIT_SYSERR = 3,    // System error or resource exhaustion.
-        EXIT_ABNORMAL = 4;  // Compiler terminated abnormally
-
-    /** This class represents an option recognized by the main program
-     */
-    private class Option {
-        /** Whether or not the option is used only aptOnly.
-         */
-        boolean aptOnly = false;
-
-        /** Option string.
-         */
-        String name;
-
-        /** Documentation key for arguments.
-         */
-        String argsNameKey;
-
-        /** Documentation key for description.
-         */
-        String descrKey;
-
-        /** Suffix option (-foo=bar or -foo:bar)
-         */
-        boolean hasSuffix;
-
-        Option(String name, String argsNameKey, String descrKey) {
-            this.name = name;
-            this.argsNameKey = argsNameKey;
-            this.descrKey = descrKey;
-            char lastChar = name.charAt(name.length()-1);
-            hasSuffix = lastChar == ':' || lastChar == '=';
-        }
-        Option(String name, String descrKey) {
-            this(name, null, descrKey);
-        }
-
-        public String toString() {
-            return name;
-        }
-
-        /** Does this option take a (separate) operand?
-         */
-        boolean hasArg() {
-            return argsNameKey != null && !hasSuffix;
-        }
-
-        /** Does argument string match option pattern?
-         *  @param arg        The command line argument string.
-         */
-        boolean matches(String arg) {
-            return hasSuffix ? arg.startsWith(name) : arg.equals(name);
-        }
-
-        /** For javac-only options, print nothing.
-         */
-        void help() {
-        }
-
-        String helpSynopsis() {
-            return name +
-                (argsNameKey == null ? "" :
-                 ((hasSuffix ? "" : " ") +
-                  getLocalizedString(argsNameKey)));
-        }
-
-        /** Print a line of documentation describing this option, if non-standard.
-         */
-        void xhelp() {}
-
-        /** Process the option (with arg). Return true if error detected.
-         */
-        boolean process(String option, String arg) {
-            options.put(option, arg);
-            return false;
-        }
-
-        /** Process the option (without arg). Return true if error detected.
-         */
-        boolean process(String option) {
-            if (hasSuffix)
-                return process(name, option.substring(name.length()));
-            else
-                return process(option, option);
-        }
-    };
-
-    private class SharedOption extends Option {
-        SharedOption(String name, String argsNameKey, String descrKey) {
-            super(name, argsNameKey, descrKey);
-        }
-
-        SharedOption(String name, String descrKey) {
-            super(name, descrKey);
-        }
-
-        void help() {
-            String s = "  " + helpSynopsis();
-            out.print(s);
-            for (int j = s.length(); j < 29; j++) out.print(" ");
-            Bark.printRawLines(out, getLocalizedString(descrKey));
-        }
-
-    }
-
-    private class AptOption extends Option {
-        AptOption(String name, String argsNameKey, String descrKey) {
-            super(name, argsNameKey, descrKey);
-            aptOnly = true;
-        }
-
-        AptOption(String name, String descrKey) {
-            super(name, descrKey);
-            aptOnly = true;
-        }
-
-        /** Print a line of documentation describing this option, if standard.
-         */
-        void help() {
-            String s = "  " + helpSynopsis();
-            out.print(s);
-            for (int j = s.length(); j < 29; j++) out.print(" ");
-            Bark.printRawLines(out, getLocalizedString(descrKey));
-        }
-
-    }
-
-    /** A nonstandard or extended (-X) option
-     */
-    private class XOption extends Option {
-        XOption(String name, String argsNameKey, String descrKey) {
-            super(name, argsNameKey, descrKey);
-        }
-        XOption(String name, String descrKey) {
-            this(name, null, descrKey);
-        }
-        void help() {}
-        void xhelp() {}
-    };
-
-    /** A nonstandard or extended (-X) option
-     */
-    private class AptXOption extends Option {
-        AptXOption(String name, String argsNameKey, String descrKey) {
-            super(name, argsNameKey, descrKey);
-            aptOnly = true;
-        }
-        AptXOption(String name, String descrKey) {
-            this(name, null, descrKey);
-        }
-        void xhelp() {
-            String s = "  " + helpSynopsis();
-            out.print(s);
-            for (int j = s.length(); j < 29; j++) out.print(" ");
-            Log.printRawLines(out, getLocalizedString(descrKey));
-        }
-    };
-
-    /** A hidden (implementor) option
-     */
-    private class HiddenOption extends Option {
-        HiddenOption(String name) {
-            super(name, null, null);
-        }
-        HiddenOption(String name, String argsNameKey) {
-            super(name, argsNameKey, null);
-        }
-        void help() {}
-        void xhelp() {}
-    };
-
-    private class AptHiddenOption extends HiddenOption {
-        AptHiddenOption(String name) {
-            super(name);
-            aptOnly = true;
-        }
-        AptHiddenOption(String name, String argsNameKey) {
-            super(name, argsNameKey);
-            aptOnly = true;
-        }
-    }
-
-    private Option[] recognizedOptions = {
-        new Option("-g",                                        "opt.g"),
-        new Option("-g:none",                                   "opt.g.none") {
-            boolean process(String option) {
-                options.put("-g:", "none");
-                return false;
-            }
-        },
-
-        new Option("-g:{lines,vars,source}",                    "opt.g.lines.vars.source") {
-            boolean matches(String s) {
-                return s.startsWith("-g:");
-            }
-            boolean process(String option) {
-                String suboptions = option.substring(3);
-                options.put("-g:", suboptions);
-                // enter all the -g suboptions as "-g:suboption"
-                for (StringTokenizer t = new StringTokenizer(suboptions, ","); t.hasMoreTokens(); ) {
-                    String tok = t.nextToken();
-                    String opt = "-g:" + tok;
-                    options.put(opt, opt);
-                }
-                return false;
-            }
-        },
-
-        new XOption("-Xlint",                                   "opt.Xlint"),
-        new XOption("-Xlint:{"
-                    + "all,"
-                    + "cast,deprecation,divzero,empty,unchecked,fallthrough,path,serial,finally,overrides,"
-                    + "-cast,-deprecation,-divzero,-empty,-unchecked,-fallthrough,-path,-serial,-finally,-overrides,"
-                    + "none}",
-                                                                "opt.Xlint.suboptlist") {
-            boolean matches(String s) {
-                return s.startsWith("-Xlint:");
-            }
-            boolean process(String option) {
-                String suboptions = option.substring(7);
-                options.put("-Xlint:", suboptions);
-                // enter all the -Xlint suboptions as "-Xlint:suboption"
-                for (StringTokenizer t = new StringTokenizer(suboptions, ","); t.hasMoreTokens(); ) {
-                    String tok = t.nextToken();
-                    String opt = "-Xlint:" + tok;
-                    options.put(opt, opt);
-                }
-                return false;
-            }
-        },
-
-        new Option("-nowarn",                                   "opt.nowarn"),
-        new Option("-verbose",                                  "opt.verbose"),
-
-        // -deprecation is retained for command-line backward compatibility
-        new Option("-deprecation",                              "opt.deprecation") {
-                boolean process(String option) {
-                    options.put("-Xlint:deprecation", option);
-                    return false;
-                }
-            },
-
-        new SharedOption("-classpath",     "opt.arg.path",      "opt.classpath"),
-        new SharedOption("-cp",            "opt.arg.path",      "opt.classpath") {
-            boolean process(String option, String arg) {
-                return super.process("-classpath", arg);
-            }
-        },
-        new Option("-sourcepath",          "opt.arg.path",      "opt.sourcepath"),
-        new Option("-bootclasspath",       "opt.arg.path",      "opt.bootclasspath") {
-            boolean process(String option, String arg) {
-                options.remove("-Xbootclasspath/p:");
-                options.remove("-Xbootclasspath/a:");
-                return super.process(option, arg);
-            }
-        },
-        new XOption("-Xbootclasspath/p:",  "opt.arg.path", "opt.Xbootclasspath.p"),
-        new XOption("-Xbootclasspath/a:",  "opt.arg.path", "opt.Xbootclasspath.a"),
-        new XOption("-Xbootclasspath:",    "opt.arg.path", "opt.bootclasspath") {
-            boolean process(String option, String arg) {
-                options.remove("-Xbootclasspath/p:");
-                options.remove("-Xbootclasspath/a:");
-                return super.process("-bootclasspath", arg);
-            }
-        },
-        new Option("-extdirs",             "opt.arg.dirs",      "opt.extdirs"),
-        new XOption("-Djava.ext.dirs=",    "opt.arg.dirs",      "opt.extdirs") {
-            boolean process(String option, String arg) {
-                return super.process("-extdirs", arg);
-            }
-        },
-        new Option("-endorseddirs",        "opt.arg.dirs",      "opt.endorseddirs"),
-        new XOption("-Djava.endorsed.dirs=","opt.arg.dirs",     "opt.endorseddirs") {
-            boolean process(String option, String arg) {
-                return super.process("-endorseddirs", arg);
-            }
-        },
-        new Option("-proc:{none, only}",                        "opt.proc.none.only") {
-            public boolean matches(String s) {
-                return s.equals("-proc:none") || s.equals("-proc:only");
-            }
-        },
-        new Option("-processor",        "opt.arg.class",        "opt.processor"),
-        new Option("-processorpath",    "opt.arg.path",         "opt.processorpath"),
-
-        new SharedOption("-d",          "opt.arg.path", "opt.d"),
-        new SharedOption("-s",          "opt.arg.path", "opt.s"),
-        new Option("-encoding",         "opt.arg.encoding",     "opt.encoding"),
-        new SharedOption("-source",             "opt.arg.release",      "opt.source") {
-            boolean process(String option, String operand) {
-                Source source = Source.lookup(operand);
-                if (source == null) {
-                    error("err.invalid.source", operand);
-                    return true;
-                } else if (source.compareTo(Source.JDK1_5) > 0) {
-                    error("err.unsupported.source.version", operand);
-                    return true;
-                }
-                return super.process(option, operand);
-            }
-        },
-        new Option("-target",           "opt.arg.release",      "opt.target") {
-            boolean process(String option, String operand) {
-                Target target = Target.lookup(operand);
-                if (target == null) {
-                    error("err.invalid.target", operand);
-                    return true;
-                } else if (target.compareTo(Target.JDK1_5) > 0) {
-                    error("err.unsupported.target.version", operand);
-                    return true;
-                }
-                return super.process(option, operand);
-            }
-        },
-        new AptOption("-version",               "opt.version") {
-            boolean process(String option) {
-                Bark.printRawLines(out, ownName + " " + AptJavaCompiler.version());
-                return super.process(option);
-            }
-        },
-        new HiddenOption("-fullversion"),
-        new AptOption("-help",                                  "opt.help") {
-            boolean process(String option) {
-                Main.this.help();
-                return super.process(option);
-            }
-        },
-        new SharedOption("-X",                                  "opt.X") {
-            boolean process(String option) {
-                Main.this.xhelp();
-                return super.process(option);
-            }
-        },
-
-        // This option exists only for the purpose of documenting itself.
-        // It's actually implemented by the launcher.
-        new AptOption("-J",             "opt.arg.flag",         "opt.J") {
-            String helpSynopsis() {
-                hasSuffix = true;
-                return super.helpSynopsis();
-            }
-            boolean process(String option) {
-                throw new AssertionError
-                    ("the -J flag should be caught by the launcher.");
-            }
-        },
-
-
-        new SharedOption("-A",          "opt.proc.flag",        "opt.A") {
-                String helpSynopsis() {
-                    hasSuffix = true;
-                    return super.helpSynopsis();
-                }
-
-                boolean matches(String arg) {
-                    return arg.startsWith("-A");
-                }
-
-                boolean hasArg() {
-                    return false;
-                }
-
-                boolean process(String option) {
-                    return process(option, option);
-                }
-            },
-
-        new AptOption("-nocompile",     "opt.nocompile"),
-
-        new AptOption("-print",         "opt.print"),
-
-        new AptOption("-factorypath", "opt.arg.path", "opt.factorypath"),
-
-        new AptOption("-factory",     "opt.arg.class", "opt.factory"),
-
-        new AptXOption("-XListAnnotationTypes", "opt.XListAnnotationTypes"),
-
-        new AptXOption("-XListDeclarations",    "opt.XListDeclarations"),
-
-        new AptXOption("-XPrintAptRounds",      "opt.XPrintAptRounds"),
-
-        new AptXOption("-XPrintFactoryInfo",    "opt.XPrintFactoryInfo"),
-
-        /*
-         * Option to treat both classes and source files as
-         * declarations that can be given on the command line and
-         * processed as the result of an apt round.
-         */
-        new AptXOption("-XclassesAsDecls", "opt.XClassesAsDecls"),
-
-        // new Option("-moreinfo",                                      "opt.moreinfo") {
-        new HiddenOption("-moreinfo") {
-            boolean process(String option) {
-                Type.moreInfo = true;
-                return super.process(option);
-            }
-        },
-
-        // treat warnings as errors
-        new HiddenOption("-Werror"),
-
-        // use complex inference from context in the position of a method call argument
-        new HiddenOption("-complexinference"),
-
-        // prompt after each error
-        // new Option("-prompt",                                        "opt.prompt"),
-        new HiddenOption("-prompt"),
-
-        // dump stack on error
-        new HiddenOption("-doe"),
-
-        // display warnings for generic unchecked and unsafe operations
-        new HiddenOption("-warnunchecked") {
-            boolean process(String option) {
-                options.put("-Xlint:unchecked", option);
-                return false;
-            }
-        },
-
-        new HiddenOption("-Xswitchcheck") {
-            boolean process(String option) {
-                options.put("-Xlint:switchcheck", option);
-                return false;
-            }
-        },
-
-        // generate trace output for subtyping operations
-        new HiddenOption("-debugsubtyping"),
-
-        new XOption("-Xmaxerrs",        "opt.arg.number",       "opt.maxerrs"),
-        new XOption("-Xmaxwarns",       "opt.arg.number",       "opt.maxwarns"),
-        new XOption("-Xstdout",         "opt.arg.file",         "opt.Xstdout") {
-            boolean process(String option, String arg) {
-                try {
-                    out = new PrintWriter(new FileWriter(arg), true);
-                } catch (java.io.IOException e) {
-                    error("err.error.writing.file", arg, e);
-                    return true;
-                }
-                return super.process(option, arg);
-            }
-        },
-
-        new XOption("-Xprint",                                  "opt.print"),
-
-        new XOption("-XprintRounds",                            "opt.printRounds"),
-
-        new XOption("-XprintProcessorInfo",                     "opt.printProcessorInfo"),
-
-
-        /* -O is a no-op, accepted for backward compatibility. */
-        new HiddenOption("-O"),
-
-        /* -Xjcov produces tables to support the code coverage tool jcov. */
-        new HiddenOption("-Xjcov"),
-
-        /* This is a back door to the compiler's option table.
-         * -Dx=y sets the option x to the value y.
-         * -Dx sets the option x to the value x.
-         */
-        new HiddenOption("-XD") {
-            String s;
-            boolean matches(String s) {
-                this.s = s;
-                return s.startsWith(name);
-            }
-            boolean process(String option) {
-                s = s.substring(name.length());
-                int eq = s.indexOf('=');
-                String key = (eq < 0) ? s : s.substring(0, eq);
-                String value = (eq < 0) ? s : s.substring(eq+1);
-                options.put(key, value);
-                return false;
-            }
-        },
-
-        new HiddenOption("sourcefile") {
-                String s;
-                boolean matches(String s) {
-                    this.s = s;
-                    return s.endsWith(".java") ||
-                        (options.get("-XclassesAsDecls") != null);
-                }
-                boolean process(String option) {
-                    if (s.endsWith(".java")) {
-                        if (!sourceFileNames.contains(s))
-                            sourceFileNames.add(s);
-                    } else if (options.get("-XclassesAsDecls") != null) {
-                        classFileNames.add(s);
-                    }
-                    return false;
-                }
-            },
-    };
-
-    /**
-     * Construct a compiler instance.
-     */
-    public Main(String name) {
-        this(name, new PrintWriter(System.err, true));
-    }
-
-    /**
-     * Construct a compiler instance.
-     */
-    public Main(String name, PrintWriter out) {
-        this.ownName = name;
-        this.out = out;
-    }
-
-    /** A table of all options that's passed to the JavaCompiler constructor.  */
-    private Options options = null;
-
-    /** The list of source files to process
-     */
-    java.util.List<String> sourceFileNames = new java.util.LinkedList<String>();
-
-    /** The list of class files to process
-     */
-    java.util.List<String> classFileNames = new java.util.LinkedList<String>();
-
-    /** List of top level names of generated source files from most recent apt round.
-     */
-    java.util.Set<String> genSourceFileNames = new java.util.LinkedHashSet<String>();
-
-    /** List of names of generated class files from most recent apt round.
-     */
-    java.util.Set<String> genClassFileNames  = new java.util.LinkedHashSet<String>();
-
-    /**
-     * List of all the generated source file names across all apt rounds.
-     */
-    java.util.Set<String> aggregateGenSourceFileNames = new java.util.LinkedHashSet<String>();
-
-    /**
-     * List of all the generated class file names across all apt rounds.
-     */
-    java.util.Set<String> aggregateGenClassFileNames  = new java.util.LinkedHashSet<String>();
-
-    /**
-     * List of all the generated file names across all apt rounds.
-     */
-    java.util.Set<java.io.File> aggregateGenFiles = new java.util.LinkedHashSet<java.io.File>();
-
-    /**
-     * Set of all factories that have provided a processor on some apt round.
-     */
-    java.util.Set<Class<? extends AnnotationProcessorFactory> > productiveFactories  =
-        new java.util.LinkedHashSet<Class<? extends AnnotationProcessorFactory> >();
-
-
-
-    /** Print a string that explains usage.
-     */
-    void help() {
-        Bark.printRawLines(out, getLocalizedString("msg.usage.header", ownName));
-        for (int i=0; i < recognizedOptions.length; i++) {
-            recognizedOptions[i].help();
-        }
-        Bark.printRawLines(out, getLocalizedString("msg.usage.footer"));
-        out.println();
-    }
-
-    /** Print a string that explains usage for X options.
-     */
-    void xhelp() {
-        for (int i=0; i<recognizedOptions.length; i++) {
-            recognizedOptions[i].xhelp();
-        }
-        out.println();
-        Bark.printRawLines(out, getLocalizedString("msg.usage.nonstandard.footer"));
-    }
-
-    /** Report a usage error.
-     */
-    void error(String key, Object... args) {
-        warning(key, args);
-        help();
-    }
-
-    /** Report a warning.
-     */
-    void warning(String key, Object... args) {
-        Bark.printRawLines(out, ownName + ": "
-                       + getLocalizedString(key, args));
-    }
-
-    /** Process command line arguments: store all command line options
-     *  in `options' table and return all source filenames.
-     *  @param args    The array of command line arguments.
-     */
-    protected java.util.List<String> processArgs(String[] flags) {
-        int ac = 0;
-        while (ac < flags.length) {
-            String flag = flags[ac];
-            ac++;
-
-            int j;
-            for (j=0; j < recognizedOptions.length; j++)
-                if (recognizedOptions[j].matches(flag))
-                    break;
-
-            if (j == recognizedOptions.length) {
-                error("err.invalid.flag", flag);
-                return null;
-            }
-
-            Option option = recognizedOptions[j];
-            if (option.hasArg()) {
-                if (ac == flags.length) {
-                    error("err.req.arg", flag);
-                    return null;
-                }
-                String operand = flags[ac];
-                ac++;
-                if (option.process(flag, operand))
-                    return null;
-            } else {
-                if (option.process(flag))
-                    return null;
-            }
-        }
-
-        String sourceString = options.get("-source");
-        Source source = (sourceString != null)
-            ? Source.lookup(sourceString)
-            : Source.JDK1_5; // JDK 5 is the latest supported source version
-        String targetString = options.get("-target");
-        Target target = (targetString != null)
-            ? Target.lookup(targetString)
-            : Target.JDK1_5; // JDK 5 is the latest supported source version
-        // We don't check source/target consistency for CLDC, as J2ME
-        // profiles are not aligned with J2SE targets; moreover, a
-        // single CLDC target may have many profiles.  In addition,
-        // this is needed for the continued functioning of the JSR14
-        // prototype.
-        if (Character.isDigit(target.name.charAt(0)) &&
-            target.compareTo(source.requiredTarget()) < 0) {
-            if (targetString != null) {
-                if (sourceString == null) {
-                    warning("warn.target.default.source.conflict",
-                            targetString,
-                            source.requiredTarget().name);
-                } else {
-                    warning("warn.source.target.conflict",
-                            sourceString,
-                            source.requiredTarget().name);
-                }
-                return null;
-            } else {
-                options.put("-target", source.requiredTarget().name);
-            }
-        }
-        return sourceFileNames;
-    }
-
-    /** Programmatic interface for main function.
-     * @param args    The command line parameters.
-     */
-    public int compile(String[] args, AnnotationProcessorFactory factory) {
-        int returnCode = 0;
-        providedFactory = factory;
-
-        Context context = new Context();
-        JavacFileManager.preRegister(context);
-        options = Options.instance(context);
-        Bark bark;
-
-        /*
-         * Process the command line options to create the intial
-         * options data.  This processing is at least partially reused
-         * by any recursive apt calls.
-         */
-
-        // For testing: assume all arguments in forcedOpts are
-        // prefixed to command line arguments.
-        processArgs(forcedOpts);
-
-        /*
-         * A run of apt only gets passed the most recently generated
-         * files; the initial run of apt gets passed the files from
-         * the command line.
-         */
-
-        java.util.List<String> origFilenames;
-        try {
-            // assign args the result of parse to capture results of
-            // '@file' expansion
-            origFilenames = processArgs((args=CommandLine.parse(args)));
-
-            if (options.get("suppress-tool-api-removal-message") == null) {
-                Bark.printRawLines(out, getLocalizedString("misc.Deprecation"));
-            }
-
-            if (origFilenames == null) {
-                return EXIT_CMDERR;
-            } else if (origFilenames.size() == 0) {
-                // it is allowed to compile nothing if just asking for help
-                if (options.get("-help") != null ||
-                    options.get("-X") != null)
-                    return EXIT_OK;
-            }
-        } catch (java.io.FileNotFoundException e) {
-            Bark.printRawLines(out, ownName + ": " +
-                           getLocalizedString("err.file.not.found",
-                                              e.getMessage()));
-            return EXIT_SYSERR;
-        } catch (IOException ex) {
-            ioMessage(ex);
-            return EXIT_SYSERR;
-        } catch (OutOfMemoryError ex) {
-            resourceMessage(ex);
-            return EXIT_SYSERR;
-        } catch (StackOverflowError ex) {
-            resourceMessage(ex);
-            return EXIT_SYSERR;
-        } catch (FatalError ex) {
-            feMessage(ex);
-            return EXIT_SYSERR;
-        } catch (sun.misc.ServiceConfigurationError sce) {
-            sceMessage(sce);
-            return EXIT_ABNORMAL;
-        } catch (Throwable ex) {
-            bugMessage(ex);
-            return EXIT_ABNORMAL;
-        }
-
-
-        boolean firstRound = true;
-        boolean needSourcePath = false;
-        boolean needClassPath  = false;
-        boolean classesAsDecls = options.get("-XclassesAsDecls") != null;
-
-        /*
-         * Create augumented classpath and sourcepath values.
-         *
-         * If any of the prior apt rounds generated any new source
-         * files, the n'th apt round (and any javac invocation) has the
-         * source destination path ("-s path") as the last element of
-         * the "-sourcepath" to the n'th call.
-         *
-         * If any of the prior apt rounds generated any new class files,
-         * the n'th apt round (and any javac invocation) has the class
-         * destination path ("-d path") as the last element of the
-         * "-classpath" to the n'th call.
-         */
-        String augmentedSourcePath = "";
-        String augmentedClassPath = "";
-        String baseClassPath = "";
-
-        try {
-            /*
-             * Record original options for future annotation processor
-             * invocations.
-             */
-            origOptions = new HashMap<String, String>(options.size());
-            for(String s: options.keySet()) {
-                String value;
-                if (s.equals(value = options.get(s)))
-                    origOptions.put(s, (String)null);
-                else
-                    origOptions.put(s, value);
-            }
-            origOptions = Collections.unmodifiableMap(origOptions);
-
-            JavacFileManager fm = (JavacFileManager) context.get(JavaFileManager.class);
-            {
-                // Note: it might be necessary to check for an empty
-                // component ("") of the source path or class path
-
-                String sourceDest = options.get("-s");
-                if (fm.hasLocation(StandardLocation.SOURCE_PATH)) {
-                    for(File f: fm.getLocation(StandardLocation.SOURCE_PATH))
-                        augmentedSourcePath += (f + File.pathSeparator);
-                    augmentedSourcePath += (sourceDest == null)?".":sourceDest;
-                } else {
-                    augmentedSourcePath = ".";
-
-                    if (sourceDest != null)
-                        augmentedSourcePath += (File.pathSeparator + sourceDest);
-                }
-
-                String classDest = options.get("-d");
-                if (fm.hasLocation(StandardLocation.CLASS_PATH)) {
-                    for(File f: fm.getLocation(StandardLocation.CLASS_PATH))
-                        baseClassPath += (f + File.pathSeparator);
-                    // put baseClassPath into map to handle any
-                    // value needed for the classloader
-                    options.put("-classpath", baseClassPath);
-
-                    augmentedClassPath = baseClassPath + ((classDest == null)?".":classDest);
-                } else {
-                    baseClassPath = ".";
-                    if (classDest != null)
-                        augmentedClassPath = baseClassPath + (File.pathSeparator + classDest);
-                }
-                assert options.get("-classpath") != null;
-            }
-
-            /*
-             * Create base and augmented class loaders
-             */
-            ClassLoader augmentedAptCL = null;
-            {
-            /*
-             * Use a url class loader to look for classes on the
-             * user-specified class path. Prepend computed bootclass
-             * path, which includes extdirs, to the URLClassLoader apt
-             * uses.
-             */
-                String aptclasspath = "";
-                String bcp = "";
-                Iterable<? extends File> bootclasspath = fm.getLocation(StandardLocation.PLATFORM_CLASS_PATH);
-
-                if (bootclasspath != null) {
-                    for(File f: bootclasspath)
-                        bcp += (f + File.pathSeparator);
-                }
-
-                // If the factory path is set, use that path
-                if (providedFactory == null)
-                    aptclasspath = options.get("-factorypath");
-                if (aptclasspath == null)
-                    aptclasspath = options.get("-classpath");
-
-                assert aptclasspath != null;
-                aptclasspath = (bcp + aptclasspath);
-                aptCL = new URLClassLoader(pathToURLs(aptclasspath));
-
-                if (providedFactory == null &&
-                    options.get("-factorypath") != null) // same CL even if new class files written
-                    augmentedAptCL = aptCL;
-                else {
-                    // Create class loader in case new class files are
-                    // written
-                    augmentedAptCL = new URLClassLoader(pathToURLs(augmentedClassPath.
-                                                                   substring(baseClassPath.length())),
-                                                        aptCL);
-                }
-            }
-
-            int round = 0; // For -XPrintAptRounds
-            do {
-                round++;
-
-                Context newContext = new Context();
-                Options newOptions = Options.instance(newContext); // creates a new context
-                newOptions.putAll(options);
-
-                // populate with old options... don't bother reparsing command line, etc.
-
-                // if genSource files, must add destination to source path
-                if (genSourceFileNames.size() > 0 && !firstRound) {
-                    newOptions.put("-sourcepath", augmentedSourcePath);
-                    needSourcePath = true;
-                }
-                aggregateGenSourceFileNames.addAll(genSourceFileNames);
-                sourceFileNames.addAll(genSourceFileNames);
-                genSourceFileNames.clear();
-
-                // Don't really need to track this; just have to add -d
-                // "foo" to class path if any class files are generated
-                if (genClassFileNames.size() > 0) {
-                    newOptions.put("-classpath", augmentedClassPath);
-                    aptCL = augmentedAptCL;
-                    needClassPath = true;
-                }
-                aggregateGenClassFileNames.addAll(genClassFileNames);
-                classFileNames.addAll(genClassFileNames);
-                genClassFileNames.clear();
-
-                options = newOptions;
-
-                if (options.get("-XPrintAptRounds") != null) {
-                    out.println("apt Round : " + round);
-                    out.println("filenames: " + sourceFileNames);
-                    if (classesAsDecls)
-                        out.println("classnames: " + classFileNames);
-                    out.println("options: " + options);
-                }
-
-                returnCode = compile(args, newContext);
-                firstRound = false;
-
-                // Check for reported errors before continuing
-                bark = Bark.instance(newContext);
-            } while(((genSourceFileNames.size() != 0 ) ||
-                     (classesAsDecls && genClassFileNames.size() != 0)) &&
-                    bark.nerrors == 0);
-        } catch (UsageMessageNeededException umne) {
-            help();
-            return EXIT_CMDERR; // will cause usage message to be printed
-        }
-
-        /*
-         * Do not compile if a processor has reported an error or if
-         * there are no source files to process.  A more sophisticated
-         * test would also fail for syntax errors caught by javac.
-         */
-        if (options.get("-nocompile") == null &&
-            options.get("-print")     == null &&
-            bark.nerrors == 0 &&
-            (origFilenames.size() > 0 || aggregateGenSourceFileNames.size() > 0 )) {
-            /*
-             * Need to create new argument string for calling javac:
-             * 1. apt specific arguments (e.g. -factory) must be stripped out
-             * 2. proper settings for sourcepath and classpath must be used
-             * 3. generated class names must be added
-             * 4. class file names as declarations must be removed
-             */
-
-            int newArgsLength = args.length +
-                (needSourcePath?1:0) +
-                (needClassPath?1:0) +
-                aggregateGenSourceFileNames.size();
-
-            // Null out apt-specific options and don't copy over into
-            // newArgs. This loop should be a lot faster; the options
-            // array should be replaced with a better data structure
-            // which includes a map from strings to options.
-            //
-            // If treating classes as declarations, must strip out
-            // class names from the javac argument list
-            argLoop:
-            for(int i = 0; i < args.length; i++) {
-                int matchPosition = -1;
-
-                // "-A" by itself is recognized by apt but not javac
-                if (args[i] != null && args[i].equals("-A")) {
-                    newArgsLength--;
-                    args[i] = null;
-                    continue argLoop;
-                } else {
-                    optionLoop:
-                    for(int j = 0; j < recognizedOptions.length; j++) {
-                        if (args[i] != null && recognizedOptions[j].matches(args[i])) {
-                            matchPosition = j;
-                            break optionLoop;
-                        }
-                    }
-
-                    if (matchPosition != -1) {
-                        Option op = recognizedOptions[matchPosition];
-                        if (op.aptOnly) {
-                            newArgsLength--;
-                            args[i] = null;
-                            if (op.hasArg()) {
-                                newArgsLength--;
-                                args[i+1] = null;
-                            }
-                        } else {
-                            if (op.hasArg()) { // skip over next string
-                                i++;
-                                continue argLoop;
-                            }
-
-                            if ((options.get("-XclassesAsDecls") != null) &&
-                                (matchPosition == (recognizedOptions.length-1)) ){
-                                // Remove class file names from
-                                // consideration by javac.
-                                if (! args[i].endsWith(".java")) {
-                                    newArgsLength--;
-                                    args[i] = null;
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-
-            String newArgs[] = new String[newArgsLength];
-
-            int j = 0;
-            for(int i=0; i < args.length; i++) {
-                if (args[i] != null)
-                    newArgs[j++] = args[i];
-            }
-
-            if (needClassPath)
-                newArgs[j++] = "-XD-classpath=" + augmentedClassPath;
-
-            if (needSourcePath) {
-                newArgs[j++] = "-XD-sourcepath=" + augmentedSourcePath;
-
-                for(String s: aggregateGenSourceFileNames)
-                    newArgs[j++] = s;
-            }
-
-            returnCode = com.sun.tools.javac.Main.compile(newArgs);
-        }
-
-        return returnCode;
-    }
-
-    /** Programmatic interface for main function.
-     * @param args    The command line parameters.
-     */
-    int compile(String[] args, Context context) {
-        boolean assertionsEnabled = false;
-        assert assertionsEnabled = true;
-        if (!assertionsEnabled) {
-            // Bark.printLines(out, "fatal error: assertions must be enabled when running javac");
-            // return EXIT_ABNORMAL;
-        }
-        int exitCode = EXIT_OK;
-
-        AptJavaCompiler comp = null;
-        try {
-            context.put(Bark.outKey, out);
-
-            comp = AptJavaCompiler.instance(context);
-            if (comp == null)
-                return EXIT_SYSERR;
-
-            java.util.List<String> nameList = new java.util.LinkedList<String>();
-            nameList.addAll(sourceFileNames);
-            if (options.get("-XclassesAsDecls") != null)
-                nameList.addAll(classFileNames);
-
-            List<Symbol.ClassSymbol> cs
-                = comp.compile(List.from(nameList.toArray(new String[0])),
-                               origOptions,
-                               aptCL,
-                               providedFactory,
-                               productiveFactories,
-                               aggregateGenFiles);
-
-            /*
-             * If there aren't new source files, we shouldn't bother
-             *  running javac if there were errors.
-             *
-             * If there are new files, we should try running javac in
-             * case there were typing errors.
-             *
-             */
-
-            if (comp.errorCount() != 0 ||
-                options.get("-Werror") != null && comp.warningCount() != 0)
-                return EXIT_ERROR;
-        } catch (IOException ex) {
-            ioMessage(ex);
-            return EXIT_SYSERR;
-        } catch (OutOfMemoryError ex) {
-            resourceMessage(ex);
-            return EXIT_SYSERR;
-        } catch (StackOverflowError ex) {
-            resourceMessage(ex);
-            return EXIT_SYSERR;
-        } catch (FatalError ex) {
-            feMessage(ex);
-            return EXIT_SYSERR;
-        } catch (UsageMessageNeededException umne) {
-            help();
-            return EXIT_CMDERR; // will cause usage message to be printed
-        } catch (AnnotationProcessingError ex) {
-            apMessage(ex);
-            return EXIT_ABNORMAL;
-        } catch (sun.misc.ServiceConfigurationError sce) {
-            sceMessage(sce);
-            return EXIT_ABNORMAL;
-        } catch (Throwable ex) {
-            bugMessage(ex);
-            return EXIT_ABNORMAL;
-        } finally {
-            if (comp != null) {
-                comp.close();
-                genSourceFileNames.addAll(comp.getSourceFileNames());
-                genClassFileNames.addAll(comp.getClassFileNames());
-            }
-            sourceFileNames = new java.util.LinkedList<String>();
-            classFileNames  = new java.util.LinkedList<String>();
-        }
-        return exitCode;
-    }
-
-    /** Print a message reporting an internal error.
-     */
-    void bugMessage(Throwable ex) {
-        Bark.printRawLines(out, getLocalizedString("msg.bug",
-                                               AptJavaCompiler.version()));
-        ex.printStackTrace(out);
-    }
-
-    /** Print a message reporting an fatal error.
-     */
-    void apMessage(AnnotationProcessingError ex) {
-        Bark.printRawLines(out, getLocalizedString("misc.Problem"));
-        ex.getCause().printStackTrace(out);
-    }
-
-    /** Print a message about sun.misc.Service problem.
-     */
-    void sceMessage(sun.misc.ServiceConfigurationError ex) {
-        Bark.printRawLines(out, getLocalizedString("misc.SunMiscService"));
-        ex.printStackTrace(out);
-    }
-
-    /** Print a message reporting an fatal error.
-     */
-    void feMessage(Throwable ex) {
-        Bark.printRawLines(out, ex.toString());
-    }
-
-    /** Print a message reporting an input/output error.
-     */
-    void ioMessage(Throwable ex) {
-        Bark.printRawLines(out, getLocalizedString("msg.io"));
-        ex.printStackTrace(out);
-    }
-
-    /** Print a message reporting an out-of-resources error.
-     */
-    void resourceMessage(Throwable ex) {
-        Bark.printRawLines(out, getLocalizedString("msg.resource"));
-        ex.printStackTrace(out);
-    }
-
-    /* ************************************************************************
-     * Internationalization
-     *************************************************************************/
-
-    /** Find a localized string in the resource bundle.
-     *  @param key     The key for the localized string.
-     */
-    private static String getLocalizedString(String key, Object... args) {
-        return getText(key, args);
-    }
-
-    private static final String javacRB =
-        "com.sun.tools.javac.resources.javac";
-
-    private static final String aptRB =
-        "com.sun.tools.apt.resources.apt";
-
-    private static ResourceBundle messageRBjavac;
-    private static ResourceBundle messageRBapt;
-
-    /** Initialize ResourceBundle.
-     */
-    private static void initResource() {
-        try {
-            messageRBapt   = ResourceBundle.getBundle(aptRB);
-            messageRBjavac = ResourceBundle.getBundle(javacRB);
-        } catch (MissingResourceException e) {
-            Error x = new FatalError("Fatal Error: Resource for apt or javac is missing");
-            x.initCause(e);
-            throw x;
-        }
-    }
-
-    /** Get and format message string from resource.
-     */
-    private static String getText(String key, Object... _args) {
-        String[] args = new String[_args.length];
-        for (int i=0; i<_args.length; i++) {
-            args[i] = "" + _args[i];
-        }
-        if (messageRBapt == null || messageRBjavac == null )
-            initResource();
-        try {
-            return MessageFormat.format(messageRBapt.getString("apt." + key),
-                                        (Object[]) args);
-        } catch (MissingResourceException e) {
-            try {
-                return MessageFormat.format(messageRBjavac.getString("javac." + key),
-                                            (Object[]) args);
-            } catch (MissingResourceException f) {
-                String msg = "apt or javac message file broken: key={0} "
-                    + "arguments={1}, {2}";
-                return MessageFormat.format(msg, (Object[]) args);
-            }
-        }
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/AptEnv.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror;
-
-
-import com.sun.tools.apt.mirror.declaration.DeclarationMaker;
-import com.sun.tools.apt.mirror.type.TypeMaker;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.CompletionFailure;
-import com.sun.tools.javac.comp.Attr;
-import com.sun.tools.javac.comp.Enter;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.Names;
-
-
-/**
- * The environment for a run of apt.
- */
-@SuppressWarnings("deprecation")
-public class AptEnv {
-
-    public Names names;                 // javac's name table
-    public Symtab symtab;               // javac's predefined symbols
-    public Types jctypes;               // javac's type utilities
-    public Enter enter;                 // javac's enter phase
-    public Attr attr;                   // javac's attr phase (to evaluate
-                                        //   constant initializers)
-    public TypeMaker typeMaker;         // apt's internal type utilities
-    public DeclarationMaker declMaker;  // apt's internal declaration utilities
-
-
-    private static final Context.Key<AptEnv> aptEnvKey =
-            new Context.Key<AptEnv>();
-
-    public static AptEnv instance(Context context) {
-        AptEnv instance = context.get(aptEnvKey);
-        if (instance == null) {
-            instance = new AptEnv(context);
-        }
-        return instance;
-    }
-
-    private AptEnv(Context context) {
-        context.put(aptEnvKey, this);
-
-        names = Names.instance(context);
-        symtab = Symtab.instance(context);
-        jctypes = Types.instance(context);
-        enter = Enter.instance(context);
-        attr = Attr.instance(context);
-        typeMaker = TypeMaker.instance(context);
-        declMaker = DeclarationMaker.instance(context);
-    }
-
-
-    /**
-     * Does a symbol have a given flag?  Forces symbol completion.
-     */
-    public static boolean hasFlag(Symbol sym, long flag) {
-        return (getFlags(sym) & flag) != 0;
-    }
-
-    /**
-     * Returns a symbol's flags.  Forces completion.
-     */
-    public static long getFlags(Symbol sym) {
-        complete(sym);
-        return sym.flags();
-    }
-
-    /**
-     * Completes a symbol, ignoring completion failures.
-     */
-    private static void complete(Symbol sym) {
-        while (true) {
-            try {
-                sym.complete();
-                return;
-            } catch (CompletionFailure e) {
-                // Should never see two in a row, but loop just to be sure.
-            }
-        }
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/apt/AnnotationProcessorEnvironmentImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.apt;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.*;
-import com.sun.mirror.apt.*;
-import com.sun.tools.apt.mirror.apt.*;
-import com.sun.tools.apt.mirror.declaration.DeclarationMaker;
-import com.sun.tools.apt.mirror.util.*;
-import com.sun.tools.apt.util.Bark;
-import com.sun.tools.javac.util.Context;
-
-import com.sun.tools.apt.mirror.apt.FilerImpl;
-import com.sun.tools.apt.mirror.apt.MessagerImpl;
-import com.sun.tools.apt.mirror.apt.RoundStateImpl;
-import com.sun.tools.apt.mirror.apt.RoundCompleteEventImpl;
-
-import com.sun.tools.javac.util.Context;
-
-import java.util.*;
-import static com.sun.mirror.util.DeclarationVisitors.*;
-
-/*
- * Annotation Processor Environment implementation.
- */
-@SuppressWarnings("deprecation")
-public class AnnotationProcessorEnvironmentImpl implements AnnotationProcessorEnvironment {
-
-    Collection<TypeDeclaration> spectypedecls;
-    Collection<TypeDeclaration> typedecls;
-    Map<String, String> origOptions;
-    DeclarationMaker declMaker;
-    Declarations declUtils;
-    Types typeUtils;
-    Messager messager;
-    FilerImpl filer;
-    Bark bark;
-    Set<RoundCompleteListener> roundCompleteListeners;
-
-    public AnnotationProcessorEnvironmentImpl(Collection<TypeDeclaration> spectypedecls,
-                                              Collection<TypeDeclaration> typedecls,
-                                              Map<String, String> origOptions,
-                                              Context context) {
-        // Safer to copy collections before applying unmodifiable
-        // wrapper.
-        this.spectypedecls = Collections.unmodifiableCollection(spectypedecls);
-        this.typedecls = Collections.unmodifiableCollection(typedecls);
-        this.origOptions = Collections.unmodifiableMap(origOptions);
-
-        declMaker = DeclarationMaker.instance(context);
-        declUtils = DeclarationsImpl.instance(context);
-        typeUtils = TypesImpl.instance(context);
-        messager = MessagerImpl.instance(context);
-        filer = FilerImpl.instance(context);
-        bark = Bark.instance(context);
-        roundCompleteListeners = new LinkedHashSet<RoundCompleteListener>();
-    }
-
-    public Map<String,String> getOptions() {
-        return origOptions;
-    }
-
-    public Messager getMessager() {
-        return messager;
-    }
-
-    public Filer getFiler() {
-        return filer;
-    }
-
-    public Collection<TypeDeclaration> getSpecifiedTypeDeclarations() {
-        return spectypedecls;
-    }
-
-    public PackageDeclaration getPackage(String name) {
-        return declMaker.getPackageDeclaration(name);
-    }
-
-    public TypeDeclaration getTypeDeclaration(String name) {
-        return declMaker.getTypeDeclaration(name);
-    }
-
-    public Collection<TypeDeclaration> getTypeDeclarations() {
-        return typedecls;
-    }
-
-    public Collection<Declaration> getDeclarationsAnnotatedWith(
-                                                AnnotationTypeDeclaration a) {
-        /*
-         * create collection of Declarations annotated with a given
-         * annotation.
-         */
-
-        CollectingAP proc = new CollectingAP(this, a);
-        proc.process();
-        return proc.decls;
-    }
-
-    private static class CollectingAP implements AnnotationProcessor {
-        AnnotationProcessorEnvironment env;
-        Collection<Declaration> decls;
-        AnnotationTypeDeclaration atd;
-        CollectingAP(AnnotationProcessorEnvironment env,
-                     AnnotationTypeDeclaration atd) {
-            this.env = env;
-            this.atd = atd;
-            decls = new HashSet<Declaration>();
-        }
-
-        private class CollectingVisitor extends SimpleDeclarationVisitor {
-            public void visitDeclaration(Declaration d) {
-                for(AnnotationMirror am: d.getAnnotationMirrors()) {
-                    if (am.getAnnotationType().getDeclaration().equals(CollectingAP.this.atd))
-                        CollectingAP.this.decls.add(d);
-                }
-            }
-        }
-
-        public void process() {
-            for(TypeDeclaration d: env.getSpecifiedTypeDeclarations())
-                d.accept(getSourceOrderDeclarationScanner(new CollectingVisitor(),
-                                                          NO_OP));
-        }
-    }
-
-    public Declarations getDeclarationUtils() {
-        return declUtils;
-    }
-
-    public Types getTypeUtils() {
-        return typeUtils;
-    }
-
-    public void addListener(AnnotationProcessorListener listener) {
-        if (listener == null)
-            throw new NullPointerException();
-        else {
-            if (listener instanceof RoundCompleteListener)
-                roundCompleteListeners.add((RoundCompleteListener)listener);
-        }
-    }
-
-    public void removeListener(AnnotationProcessorListener listener) {
-        if (listener == null)
-            throw new NullPointerException();
-        else
-            roundCompleteListeners.remove(listener);
-    }
-
-    public void roundComplete() {
-        RoundState roundState  = new RoundStateImpl(bark.nerrors > 0,
-                                                    filer.getSourceFileNames().size() > 0,
-                                                    filer.getClassFileNames().size() > 0,
-                                                    origOptions);
-        RoundCompleteEvent roundCompleteEvent = new RoundCompleteEventImpl(this, roundState);
-
-        filer.roundOver();
-        for(RoundCompleteListener rcl: roundCompleteListeners)
-            rcl.roundComplete(roundCompleteEvent);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/apt/FilerImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,354 +0,0 @@
-/*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.apt;
-
-
-import java.io.*;
-import java.util.Collection;
-import java.util.EnumMap;
-import java.util.HashSet;
-import java.util.Set;
-
-import com.sun.mirror.apt.Filer;
-import com.sun.tools.apt.mirror.declaration.DeclarationMaker;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.Options;
-import com.sun.tools.javac.util.Position;
-import com.sun.tools.apt.util.Bark;
-
-import static com.sun.mirror.apt.Filer.Location.*;
-
-
-/**
- * Implementation of Filer.
- */
-@SuppressWarnings("deprecation")
-public class FilerImpl implements Filer {
-    /*
-     * The Filer class must maintain a number of constraints.  First,
-     * multiple attempts to open the same path within the same
-     * invocation of apt results in an IOException being thrown.  For
-     * example, trying to open the same source file twice:
-     *
-     * createSourceFile("foo.Bar")
-     * ...
-     * createSourceFile("foo.Bar")
-     *
-     * is disallowed as is opening a text file that happens to have
-     * the same name as a source file:
-     *
-     * createSourceFile("foo.Bar")
-     * ...
-     * createTextFile(SOURCE_TREE, "foo", new File("Bar"), null)
-     *
-     * Additionally, creating a source file that corresponds to an
-     * already created class file (or vice versa) generates at least a
-     * warning.  This is an error if -XclassesAsDecls is being used
-     * since you can't create the same type twice.  However, if the
-     * Filer is used to create a text file named *.java that happens
-     * to correspond to an existing class file, a warning is *not*
-     * generated.  Similarly, a warning is not generated for a binary
-     * file named *.class and an existing source file.
-     *
-     * The reason for this difference is that source files and class
-     * files are registered with apt and can get passed on as
-     * declarations to the next round of processing.  Files that are
-     * just named *.java and *.class are not processed in that manner;
-     * although having extra source files and class files on the
-     * source path and class path can alter the behavior of the tool
-     * and any final compile.
-     */
-
-    private enum FileKind {
-        SOURCE {
-            void register(File file, String name, FilerImpl that) throws IOException {
-                // Check for corresponding class file
-                if (that.filesCreated.contains(new File(that.locations.get(CLASS_TREE),
-                                                        that.nameToPath(name, ".class")))) {
-
-                    that.bark.aptWarning("CorrespondingClassFile", name);
-                    if (that.opts.get("-XclassesAsDecls") != null)
-                        throw new IOException();
-                }
-                that.sourceFileNames.add(file.getPath());
-            }
-        },
-
-        CLASS  {
-            void register(File file, String name, FilerImpl that) throws IOException {
-                if (that.filesCreated.contains(new File(that.locations.get(SOURCE_TREE),
-                                                        that.nameToPath(name, ".java")))) {
-                    that.bark.aptWarning("CorrespondingSourceFile", name);
-                    if (that.opts.get("-XclassesAsDecls") != null)
-                        throw new IOException();
-                }
-                // Track the binary name instead of the filesystem location
-                that.classFileNames.add(name);
-            }
-        },
-
-        OTHER  {
-            // Nothing special to do
-            void register(File file, String name, FilerImpl that) throws IOException {}
-        };
-
-        abstract void register(File file, String name, FilerImpl that) throws IOException;
-    }
-
-    private final Options opts;
-    private final DeclarationMaker declMaker;
-    private final com.sun.tools.apt.main.AptJavaCompiler comp;
-
-    // Platform's default encoding
-    private final static String DEFAULT_ENCODING =
-            new OutputStreamWriter(new ByteArrayOutputStream()).getEncoding();
-
-    private String encoding;    // name of charset used for source files
-
-    private final EnumMap<Location, File> locations;    // where new files go
-
-
-    private static final Context.Key<FilerImpl> filerKey =
-            new Context.Key<FilerImpl>();
-
-    // Set of files opened.
-    private Collection<Flushable> wc;
-
-    private Bark bark;
-
-    // All created files.
-    private final Set<File> filesCreated;
-
-    // Names of newly created source files
-    private HashSet<String> sourceFileNames = new HashSet<String>();
-
-    // Names of newly created class files
-    private HashSet<String> classFileNames  = new HashSet<String>();
-
-    private boolean roundOver;
-
-    public static FilerImpl instance(Context context) {
-        FilerImpl instance = context.get(filerKey);
-        if (instance == null) {
-            instance = new FilerImpl(context);
-        }
-        return instance;
-    }
-
-    // flush all output streams;
-    public void flush() {
-        for(Flushable opendedFile: wc) {
-            try {
-                opendedFile.flush();
-                if (opendedFile instanceof FileOutputStream) {
-                    try {
-                        ((FileOutputStream) opendedFile).getFD().sync() ;
-                    } catch (java.io.SyncFailedException sfe) {}
-                }
-            } catch (IOException e) { }
-        }
-    }
-
-    private FilerImpl(Context context) {
-        context.put(filerKey, this);
-        opts = Options.instance(context);
-        declMaker = DeclarationMaker.instance(context);
-        bark = Bark.instance(context);
-        comp = com.sun.tools.apt.main.AptJavaCompiler.instance(context);
-        roundOver = false;
-        this.filesCreated = comp.getAggregateGenFiles();
-
-        // Encoding
-        encoding = opts.get("-encoding");
-        if (encoding == null) {
-            encoding = DEFAULT_ENCODING;
-        }
-
-        wc = new HashSet<Flushable>();
-
-        // Locations
-        locations = new EnumMap<Location, File>(Location.class);
-        String s = opts.get("-s");      // location for new source files
-        String d = opts.get("-d");      // location for new class files
-        locations.put(SOURCE_TREE, new File(s != null ? s : "."));
-        locations.put(CLASS_TREE,  new File(d != null ? d : "."));
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public PrintWriter createSourceFile(String name) throws IOException {
-        String pathname = nameToPath(name, ".java");
-        File file = new File(locations.get(SOURCE_TREE),
-                             pathname);
-        PrintWriter pw = getPrintWriter(file, encoding, name, FileKind.SOURCE);
-        return pw;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public OutputStream createClassFile(String name) throws IOException {
-        String pathname = nameToPath(name, ".class");
-        File file = new File(locations.get(CLASS_TREE),
-                             pathname);
-        OutputStream os = getOutputStream(file, name, FileKind.CLASS);
-        return os;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public PrintWriter createTextFile(Location loc,
-                                      String pkg,
-                                      File relPath,
-                                      String charsetName) throws IOException {
-        File file = (pkg.length() == 0)
-                        ? relPath
-                        : new File(nameToPath(pkg), relPath.getPath());
-        if (charsetName == null) {
-            charsetName = encoding;
-        }
-        return getPrintWriter(loc, file.getPath(), charsetName, null, FileKind.OTHER);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public OutputStream createBinaryFile(Location loc,
-                                         String pkg,
-                                         File relPath) throws IOException {
-        File file = (pkg.length() == 0)
-                        ? relPath
-                        : new File(nameToPath(pkg), relPath.getPath());
-        return getOutputStream(loc, file.getPath(), null, FileKind.OTHER);
-    }
-
-
-    /**
-     * Converts the canonical name of a top-level type or package to a
-     * pathname.  Suffix is ".java" or ".class" or "".
-     */
-    private String nameToPath(String name, String suffix) throws IOException {
-        if (!DeclarationMaker.isJavaIdentifier(name.replace('.', '_'))) {
-            bark.aptWarning("IllegalFileName", name);
-            throw new IOException();
-        }
-        return name.replace('.', File.separatorChar) + suffix;
-    }
-
-    private String nameToPath(String name) throws IOException {
-        return nameToPath(name, "");
-    }
-
-    /**
-     * Returns a writer for a text file given its location, its
-     * pathname relative to that location, and its encoding.
-     */
-    private PrintWriter getPrintWriter(Location loc, String pathname,
-                                       String encoding, String name, FileKind kind) throws IOException {
-        File file = new File(locations.get(loc), pathname);
-        return getPrintWriter(file, encoding, name, kind);
-    }
-
-    /**
-     * Returns a writer for a text file given its encoding.
-     */
-    private PrintWriter getPrintWriter(File file,
-                                       String encoding, String name, FileKind kind) throws IOException {
-        prepareFile(file, name, kind);
-        PrintWriter pw =
-            new PrintWriter(
-                    new BufferedWriter(
-                         new OutputStreamWriter(new FileOutputStream(file),
-                                                encoding)));
-        wc.add(pw);
-        return pw;
-    }
-
-    /**
-     * Returns an output stream for a binary file given its location
-     * and its pathname relative to that location.
-     */
-    private OutputStream getOutputStream(Location loc, String pathname, String name, FileKind kind)
-                                                        throws IOException {
-        File file = new File(locations.get(loc), pathname);
-        return getOutputStream(file, name, kind);
-    }
-
-    private OutputStream getOutputStream(File file, String name, FileKind kind) throws IOException {
-        prepareFile(file, name, kind);
-        OutputStream os = new FileOutputStream(file);
-        wc.add(os);
-        return os;
-
-    }
-
-    public Set<String> getSourceFileNames() {
-        return sourceFileNames;
-    }
-
-    public Set<String> getClassFileNames() {
-        return classFileNames;
-    }
-
-    public void roundOver() {
-        roundOver = true;
-    }
-
-    /**
-     * Checks that the file has not already been created during this
-     * invocation.  If not, creates intermediate directories, and
-     * deletes the file if it already exists.
-     */
-    private void prepareFile(File file, String name, FileKind kind) throws IOException {
-        if (roundOver) {
-            bark.aptWarning("NoNewFilesAfterRound", file.toString());
-            throw new IOException();
-        }
-
-        if (filesCreated.contains(file)) {
-            bark.aptWarning("FileReopening", file.toString());
-            throw new IOException();
-        } else {
-            if (file.exists()) {
-                file.delete();
-            } else {
-                File parent = file.getParentFile();
-                if (parent != null && !parent.exists()) {
-                    if(!parent.mkdirs()) {
-                        bark.aptWarning("BadParentDirectory", file.toString());
-                        throw new IOException();
-                    }
-                }
-            }
-
-            kind.register(file, name, this);
-            filesCreated.add(file);
-        }
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/apt/MessagerImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.apt;
-
-import javax.tools.JavaFileObject;
-import com.sun.mirror.apt.Messager;
-import com.sun.tools.apt.mirror.util.SourcePositionImpl;
-import com.sun.mirror.util.SourcePosition;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.Name;
-import com.sun.tools.javac.util.Position;
-import com.sun.tools.apt.util.Bark;
-
-
-/**
- * Implementation of Messager.
- */
-@SuppressWarnings("deprecation")
-public class MessagerImpl implements Messager {
-    private final Bark bark;
-
-    private static final Context.Key<MessagerImpl> messagerKey =
-            new Context.Key<MessagerImpl>();
-
-    public static MessagerImpl instance(Context context) {
-        MessagerImpl instance = context.get(messagerKey);
-        if (instance == null) {
-            instance = new MessagerImpl(context);
-        }
-        return instance;
-    }
-
-    private MessagerImpl(Context context) {
-        context.put(messagerKey, this);
-        bark = Bark.instance(context);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public void printError(String msg) {
-        bark.aptError("Messager", msg);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void printError(SourcePosition pos, String msg) {
-        if (pos instanceof SourcePositionImpl) {
-            SourcePositionImpl posImpl = (SourcePositionImpl) pos;
-            JavaFileObject prev = bark.useSource(posImpl.getSource());
-            bark.aptError(posImpl.getJavacPosition(), "Messager", msg);
-            bark.useSource(prev);
-        } else
-            printError(msg);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void printWarning(String msg) {
-        bark.aptWarning("Messager", msg);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void printWarning(SourcePosition pos, String msg) {
-        if (pos instanceof SourcePositionImpl) {
-            SourcePositionImpl posImpl = (SourcePositionImpl) pos;
-            JavaFileObject prev = bark.useSource(posImpl.getSource());
-            bark.aptWarning(posImpl.getJavacPosition(), "Messager", msg);
-            bark.useSource(prev);
-        } else
-            printWarning(msg);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void printNotice(String msg) {
-        bark.aptNote("Messager", msg);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void printNotice(SourcePosition pos, String msg) {
-        if (pos instanceof SourcePositionImpl) {
-            SourcePositionImpl posImpl = (SourcePositionImpl) pos;
-            JavaFileObject prev = bark.useSource(posImpl.getSource());
-            bark.aptNote(posImpl.getJavacPosition(), "Messager", msg);
-            bark.useSource(prev);
-        } else
-            printNotice(msg);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/apt/RoundCompleteEventImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.apt;
-
-import com.sun.mirror.apt.AnnotationProcessorEnvironment;
-import com.sun.mirror.apt.RoundCompleteEvent;
-import com.sun.mirror.apt.RoundState;
-
-@SuppressWarnings("deprecation")
-public class RoundCompleteEventImpl extends RoundCompleteEvent {
-    private static final long serialVersionUID = 7067621446720784300L;
-
-    public RoundCompleteEventImpl(AnnotationProcessorEnvironment source,
-                                  RoundState rs) {
-        super(source, rs);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/apt/RoundStateImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.apt;
-
-import com.sun.mirror.apt.RoundState;
-import java.util.Map;
-
-@SuppressWarnings("deprecation")
-public class RoundStateImpl implements RoundState {
-    private final boolean finalRound;
-    private final boolean errorRaised;
-    private final boolean sourceFilesCreated;
-    private final boolean classFilesCreated;
-
-    public RoundStateImpl(boolean errorRaised,
-                          boolean sourceFilesCreated,
-                          boolean classFilesCreated,
-                          Map<String,String> options) {
-        /*
-         * In the default mode of operation, this round is the final
-         * round if an error was raised OR there were no new source
-         * files generated.  If classes are being treated as
-         * declarations, this is the final round if an error was
-         * raised OR neither new source files nor new class files were
-         * generated.
-         */
-        this.finalRound =
-            errorRaised ||
-            (!sourceFilesCreated &&
-            !(classFilesCreated && options.keySet().contains("-XclassesAsDecls")) );
-        this.errorRaised = errorRaised;
-        this.sourceFilesCreated = sourceFilesCreated;
-        this.classFilesCreated = classFilesCreated;
-    }
-
-    public boolean finalRound() {
-        return finalRound;
-    }
-
-    public boolean errorRaised() {
-        return errorRaised;
-    }
-
-    public boolean sourceFilesCreated() {
-        return sourceFilesCreated;
-    }
-
-    public boolean classFilesCreated() {
-        return classFilesCreated;
-    }
-
-    public String toString() {
-        return
-            "[final round: " +  finalRound +
-            ", error raised: " +  errorRaised +
-            ", source files created: " + sourceFilesCreated +
-            ", class files created: " + classFilesCreated + "]";
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationMirrorImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.AnnotationType;
-import com.sun.mirror.util.SourcePosition;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Attribute;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.util.Name;
-import com.sun.tools.javac.util.Pair;
-
-
-/**
- * Implementation of AnnotationMirror
- */
-@SuppressWarnings("deprecation")
-public class AnnotationMirrorImpl implements AnnotationMirror {
-
-    protected final AptEnv env;
-    protected final Attribute.Compound anno;
-    protected final Declaration decl;
-
-
-    AnnotationMirrorImpl(AptEnv env, Attribute.Compound anno, Declaration decl) {
-        this.env = env;
-        this.anno = anno;
-        this.decl = decl;
-    }
-
-
-    /**
-     * Returns a string representation of this annotation.
-     * String is of one of the forms:
-     *     @com.example.foo(name1=val1, name2=val2)
-     *     @com.example.foo(val)
-     *     @com.example.foo
-     * Omit parens for marker annotations, and omit "value=" when allowed.
-     */
-    public String toString() {
-        StringBuilder sb = new StringBuilder("@");
-        Constants.Formatter fmtr = Constants.getFormatter(sb);
-
-        fmtr.append(anno.type.tsym);
-
-        int len = anno.values.length();
-        if (len > 0) {          // omit parens for marker annotations
-            sb.append('(');
-            boolean first = true;
-            for (Pair<MethodSymbol, Attribute> val : anno.values) {
-                if (!first) {
-                    sb.append(", ");
-                }
-                first = false;
-
-                Name name = val.fst.name;
-                if (len > 1 || name != env.names.value) {
-                    fmtr.append(name);
-                    sb.append('=');
-                }
-                sb.append(new AnnotationValueImpl(env, val.snd, this));
-            }
-            sb.append(')');
-        }
-        return fmtr.toString();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public AnnotationType getAnnotationType() {
-        return (AnnotationType) env.typeMaker.getType(anno.type);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Map<AnnotationTypeElementDeclaration, AnnotationValue>
-                                                        getElementValues() {
-        Map<AnnotationTypeElementDeclaration, AnnotationValue> res =
-            new LinkedHashMap<AnnotationTypeElementDeclaration,
-                                                   AnnotationValue>(); // whew!
-        for (Pair<MethodSymbol, Attribute> val : anno.values) {
-            res.put(getElement(val.fst),
-                    new AnnotationValueImpl(env, val.snd, this));
-        }
-        return res;
-    }
-
-    public SourcePosition getPosition() {
-        // Return position of the declaration on which this annotation
-        // appears.
-        return (decl == null) ? null : decl.getPosition();
-
-    }
-
-    public Declaration getDeclaration() {
-        return this.decl;
-    }
-
-    /**
-     * Returns the annotation type element for a symbol.
-     */
-    private AnnotationTypeElementDeclaration getElement(MethodSymbol m) {
-        return (AnnotationTypeElementDeclaration)
-                    env.declMaker.getExecutableDeclaration(m);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationProxyMaker.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,355 +0,0 @@
-/*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.lang.annotation.*;
-import java.lang.reflect.Array;
-import java.lang.reflect.Method;
-import java.util.*;
-import sun.reflect.annotation.*;
-
-import com.sun.mirror.type.TypeMirror;
-import com.sun.mirror.type.MirroredTypeException;
-import com.sun.mirror.type.MirroredTypesException;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.util.Name;
-import com.sun.tools.javac.util.Pair;
-
-
-/**
- * A generator of dynamic proxy implementations of
- * java.lang.annotation.Annotation.
- *
- * <p> The "dynamic proxy return form" of an attribute element value is
- * the form used by sun.reflect.annotation.AnnotationInvocationHandler.
- */
-@SuppressWarnings("deprecation")
-class AnnotationProxyMaker {
-
-    private final AptEnv env;
-    private final Attribute.Compound attrs;
-    private final Class<? extends Annotation> annoType;
-
-
-    private AnnotationProxyMaker(AptEnv env,
-                                 Attribute.Compound attrs,
-                                 Class<? extends Annotation> annoType) {
-        this.env = env;
-        this.attrs = attrs;
-        this.annoType = annoType;
-    }
-
-
-    /**
-     * Returns a dynamic proxy for an annotation mirror.
-     */
-    public static <A extends Annotation> A generateAnnotation(
-            AptEnv env, Attribute.Compound attrs, Class<A> annoType) {
-        AnnotationProxyMaker apm = new AnnotationProxyMaker(env, attrs, annoType);
-        return annoType.cast(apm.generateAnnotation());
-    }
-
-
-    /**
-     * Returns a dynamic proxy for an annotation mirror.
-     */
-    private Annotation generateAnnotation() {
-        return AnnotationParser.annotationForMap(annoType,
-                                                 getAllReflectedValues());
-    }
-
-    /**
-     * Returns a map from element names to their values in "dynamic
-     * proxy return form".  Includes all elements, whether explicit or
-     * defaulted.
-     */
-    private Map<String, Object> getAllReflectedValues() {
-        Map<String, Object> res = new LinkedHashMap<String, Object>();
-
-        for (Map.Entry<MethodSymbol, Attribute> entry :
-                                                  getAllValues().entrySet()) {
-            MethodSymbol meth = entry.getKey();
-            Object value = generateValue(meth, entry.getValue());
-            if (value != null) {
-                res.put(meth.name.toString(), value);
-            } else {
-                // Ignore this element.  May lead to
-                // IncompleteAnnotationException somewhere down the line.
-            }
-        }
-        return res;
-    }
-
-    /**
-     * Returns a map from element symbols to their values.
-     * Includes all elements, whether explicit or defaulted.
-     */
-    private Map<MethodSymbol, Attribute> getAllValues() {
-        Map<MethodSymbol, Attribute> res =
-            new LinkedHashMap<MethodSymbol, Attribute>();
-
-        // First find the default values.
-        ClassSymbol sym = (ClassSymbol) attrs.type.tsym;
-        for (Scope.Entry e = sym.members().elems; e != null; e = e.sibling) {
-            if (e.sym.kind == Kinds.MTH) {
-                MethodSymbol m = (MethodSymbol) e.sym;
-                Attribute def = m.defaultValue;
-                if (def != null) {
-                    res.put(m, def);
-                }
-            }
-        }
-        // Next find the explicit values, possibly overriding defaults.
-        for (Pair<MethodSymbol, Attribute> p : attrs.values) {
-            res.put(p.fst, p.snd);
-        }
-        return res;
-    }
-
-    /**
-     * Converts an element value to its "dynamic proxy return form".
-     * Returns an exception proxy on some errors, but may return null if
-     * a useful exception cannot or should not be generated at this point.
-     */
-    private Object generateValue(MethodSymbol meth, Attribute attr) {
-        ValueVisitor vv = new ValueVisitor(meth);
-        return vv.getValue(attr);
-    }
-
-
-    private class ValueVisitor implements Attribute.Visitor {
-
-        private MethodSymbol meth;      // annotation element being visited
-        private Class<?> runtimeType;   // runtime type of annotation element
-        private Object value;           // value in "dynamic proxy return form"
-
-        ValueVisitor(MethodSymbol meth) {
-            this.meth = meth;
-        }
-
-        Object getValue(Attribute attr) {
-            Method method;              // runtime method of annotation element
-            try {
-                method = annoType.getMethod(meth.name.toString());
-            } catch (NoSuchMethodException e) {
-                return null;
-            }
-            runtimeType = method.getReturnType();
-            attr.accept(this);
-            if (!(value instanceof ExceptionProxy) &&
-                !AnnotationType.invocationHandlerReturnType(runtimeType)
-                                                        .isInstance(value)) {
-                typeMismatch(method, attr);
-            }
-            return value;
-        }
-
-
-        public void visitConstant(Attribute.Constant c) {
-            value = Constants.decodeConstant(c.value, c.type);
-        }
-
-        public void visitClass(Attribute.Class c) {
-            value = new MirroredTypeExceptionProxy(
-                                env.typeMaker.getType(c.type));
-        }
-
-        public void visitArray(Attribute.Array a) {
-            Type elemtype = env.jctypes.elemtype(a.type);
-
-            if (elemtype.tsym == env.symtab.classType.tsym) {   // Class[]
-                // Construct a proxy for a MirroredTypesException
-                ArrayList<TypeMirror> elems = new ArrayList<TypeMirror>();
-                for (int i = 0; i < a.values.length; i++) {
-                    Type elem = ((Attribute.Class) a.values[i]).type;
-                    elems.add(env.typeMaker.getType(elem));
-                }
-                value = new MirroredTypesExceptionProxy(elems);
-
-            } else {
-                int len = a.values.length;
-                Class<?> runtimeTypeSaved = runtimeType;
-                runtimeType = runtimeType.getComponentType();
-                try {
-                    Object res = Array.newInstance(runtimeType, len);
-                    for (int i = 0; i < len; i++) {
-                        a.values[i].accept(this);
-                        if (value == null || value instanceof ExceptionProxy) {
-                            return;
-                        }
-                        try {
-                            Array.set(res, i, value);
-                        } catch (IllegalArgumentException e) {
-                            value = null;       // indicates a type mismatch
-                            return;
-                        }
-                    }
-                    value = res;
-                } finally {
-                    runtimeType = runtimeTypeSaved;
-                }
-            }
-        }
-
-        @SuppressWarnings({"unchecked", "rawtypes"})
-        public void visitEnum(Attribute.Enum e) {
-            if (runtimeType.isEnum()) {
-                String constName = e.value.toString();
-                try {
-                    value = Enum.valueOf((Class)runtimeType, constName);
-                } catch (IllegalArgumentException ex) {
-                    value = new EnumConstantNotPresentExceptionProxy(
-                                                        (Class<Enum<?>>)runtimeType, constName);
-                }
-            } else {
-                value = null;   // indicates a type mismatch
-            }
-        }
-
-        public void visitCompound(Attribute.Compound c) {
-            try {
-                Class<? extends Annotation> nested =
-                    runtimeType.asSubclass(Annotation.class);
-                value = generateAnnotation(env, c, nested);
-            } catch (ClassCastException ex) {
-                value = null;   // indicates a type mismatch
-            }
-        }
-
-        public void visitError(Attribute.Error e) {
-            value = null;       // indicates a type mismatch
-        }
-
-
-        /**
-         * Sets "value" to an ExceptionProxy indicating a type mismatch.
-         */
-        private void typeMismatch(Method method, final Attribute attr) {
-            class AnnotationTypeMismatchExceptionProxy extends ExceptionProxy {
-                private static final long serialVersionUID = 8473323277815075163L;
-                transient final Method method;
-                AnnotationTypeMismatchExceptionProxy(Method method) {
-                    this.method = method;
-                }
-                public String toString() {
-                    return "<error>";   // eg:  @Anno(value=<error>)
-                }
-                protected RuntimeException generateException() {
-                    return new AnnotationTypeMismatchException(method,
-                                attr.type.toString());
-                }
-            }
-            value = new AnnotationTypeMismatchExceptionProxy(method);
-        }
-    }
-
-
-    /**
-     * ExceptionProxy for MirroredTypeException.
-     * The toString, hashCode, and equals methods foward to the underlying
-     * type.
-     */
-    private static final class MirroredTypeExceptionProxy extends ExceptionProxy {
-        private static final long serialVersionUID = 6662035281599933545L;
-
-        private MirroredTypeException ex;
-
-        MirroredTypeExceptionProxy(TypeMirror t) {
-            // It would be safer if we could construct the exception in
-            // generateException(), but there would be no way to do
-            // that properly following deserialization.
-            ex = new MirroredTypeException(t);
-        }
-
-        public String toString() {
-            return ex.getQualifiedName();
-        }
-
-        public int hashCode() {
-            TypeMirror t = ex.getTypeMirror();
-            return (t != null)
-                    ? t.hashCode()
-                    : ex.getQualifiedName().hashCode();
-        }
-
-        public boolean equals(Object obj) {
-            TypeMirror t = ex.getTypeMirror();
-            return t != null &&
-                   obj instanceof MirroredTypeExceptionProxy &&
-                   t.equals(
-                        ((MirroredTypeExceptionProxy) obj).ex.getTypeMirror());
-        }
-
-        protected RuntimeException generateException() {
-            return (RuntimeException) ex.fillInStackTrace();
-        }
-    }
-
-
-    /**
-     * ExceptionProxy for MirroredTypesException.
-     * The toString, hashCode, and equals methods foward to the underlying
-     * types.
-     */
-    private static final class MirroredTypesExceptionProxy extends ExceptionProxy {
-        private static final long serialVersionUID = -6670822532616693951L;
-
-        private MirroredTypesException ex;
-
-        MirroredTypesExceptionProxy(Collection<TypeMirror> ts) {
-            // It would be safer if we could construct the exception in
-            // generateException(), but there would be no way to do
-            // that properly following deserialization.
-            ex = new MirroredTypesException(ts);
-        }
-
-        public String toString() {
-            return ex.getQualifiedNames().toString();
-        }
-
-        public int hashCode() {
-            Collection<TypeMirror> ts = ex.getTypeMirrors();
-            return (ts != null)
-                    ? ts.hashCode()
-                    : ex.getQualifiedNames().hashCode();
-        }
-
-        public boolean equals(Object obj) {
-            Collection<TypeMirror> ts = ex.getTypeMirrors();
-            return ts != null &&
-                   obj instanceof MirroredTypesExceptionProxy &&
-                   ts.equals(
-                      ((MirroredTypesExceptionProxy) obj).ex.getTypeMirrors());
-        }
-
-        protected RuntimeException generateException() {
-            return (RuntimeException) ex.fillInStackTrace();
-        }
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationTypeDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.util.Collection;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.DeclarationVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Symbol.*;
-
-
-/**
- * Implementation of AnnotationTypeDeclaration
- */
-@SuppressWarnings("deprecation")
-public class AnnotationTypeDeclarationImpl extends InterfaceDeclarationImpl
-                                           implements AnnotationTypeDeclaration
-{
-    AnnotationTypeDeclarationImpl(AptEnv env, ClassSymbol sym) {
-        super(env, sym);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<AnnotationTypeElementDeclaration> getMethods() {
-        return identityFilter.filter(super.getMethods(),
-                                     AnnotationTypeElementDeclaration.class);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitAnnotationTypeDeclaration(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationTypeElementDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.DeclarationVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Symbol.MethodSymbol;
-
-
-/**
- * Implementation of AnnotationTypeElementDeclaration
- */
-@SuppressWarnings("deprecation")
-public class AnnotationTypeElementDeclarationImpl extends MethodDeclarationImpl
-                                  implements AnnotationTypeElementDeclaration {
-
-    AnnotationTypeElementDeclarationImpl(AptEnv env, MethodSymbol sym) {
-        super(env, sym);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public AnnotationTypeDeclaration getDeclaringType() {
-        return (AnnotationTypeDeclaration) super.getDeclaringType();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public AnnotationValue getDefaultValue() {
-        return (sym.defaultValue == null)
-               ? null
-               : new AnnotationValueImpl(env, sym.defaultValue, null);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitAnnotationTypeElementDeclaration(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/AnnotationValueImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.util.Collection;
-import java.util.ArrayList;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.SourcePosition;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Attribute;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.code.TypeTags;
-
-
-/**
- * Implementation of AnnotationValue
- */
-@SuppressWarnings("deprecation")
-public class AnnotationValueImpl implements AnnotationValue {
-
-    protected final AptEnv env;
-    protected final Attribute attr;
-    protected final AnnotationMirrorImpl annotation;
-
-    AnnotationValueImpl(AptEnv env, Attribute attr, AnnotationMirrorImpl annotation) {
-        this.env = env;
-        this.attr = attr;
-        this.annotation = annotation;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        Constants.Formatter fmtr = Constants.getFormatter(sb);
-
-        fmtr.append(getValue());
-        return fmtr.toString();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Object getValue() {
-        ValueVisitor vv = new ValueVisitor();
-        attr.accept(vv);
-        return vv.value;
-    }
-
-
-    public SourcePosition getPosition() {
-        // Imprecise implementation; just return position of enclosing
-        // annotation.
-        return (annotation == null) ? null : annotation.getPosition();
-    }
-
-    private class ValueVisitor implements Attribute.Visitor {
-
-        public Object value;
-
-        public void visitConstant(Attribute.Constant c) {
-            value = Constants.decodeConstant(c.value, c.type);
-        }
-
-        public void visitClass(Attribute.Class c) {
-            value = env.typeMaker.getType(
-                        env.jctypes.erasure(c.type));
-        }
-
-        public void visitEnum(Attribute.Enum e) {
-            value = env.declMaker.getFieldDeclaration(e.value);
-        }
-
-        public void visitCompound(Attribute.Compound c) {
-            value = new AnnotationMirrorImpl(env, c,
-                                             (annotation == null) ?
-                                             null :
-                                             annotation.getDeclaration());
-        }
-
-        public void visitArray(Attribute.Array a) {
-            ArrayList<AnnotationValue> vals =
-                new ArrayList<AnnotationValue>(a.values.length);
-            for (Attribute elem : a.values) {
-                vals.add(new AnnotationValueImpl(env, elem, annotation));
-            }
-            value = vals;
-        }
-
-        public void visitError(Attribute.Error e) {
-            value = "<error>";  // javac will already have logged an error msg
-        }
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/ClassDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.lang.annotation.Annotation;
-import java.lang.annotation.Inherited;
-import java.util.ArrayList;
-import java.util.Collection;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.ClassType;
-import com.sun.mirror.util.DeclarationVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.*;
-
-
-/**
- * Implementation of ClassDeclaration
- */
-@SuppressWarnings("deprecation")
-public class ClassDeclarationImpl extends TypeDeclarationImpl
-                                  implements ClassDeclaration {
-
-    ClassDeclarationImpl(AptEnv env, ClassSymbol sym) {
-        super(env, sym);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     * Overridden here to handle @Inherited.
-     */
-    public <A extends Annotation> A getAnnotation(Class<A> annoType) {
-
-        boolean inherited = annoType.isAnnotationPresent(Inherited.class);
-        for (Type t = sym.type;
-             t.tsym != env.symtab.objectType.tsym && !t.isErroneous();
-             t = env.jctypes.supertype(t)) {
-
-            A result = getAnnotation(annoType, t.tsym);
-            if (result != null || !inherited) {
-                return result;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public ClassType getSuperclass() {
-        //  java.lang.Object has no superclass
-        if (sym == env.symtab.objectType.tsym) {
-            return null;
-        }
-        Type t = env.jctypes.supertype(sym.type);
-        return (ClassType) env.typeMaker.getType(t);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<ConstructorDeclaration> getConstructors() {
-        ArrayList<ConstructorDeclaration> res =
-            new ArrayList<ConstructorDeclaration>();
-        for (Symbol s : getMembers(true)) {
-            if (s.isConstructor()) {
-                MethodSymbol m = (MethodSymbol) s;
-                res.add((ConstructorDeclaration)
-                        env.declMaker.getExecutableDeclaration(m));
-            }
-        }
-        return res;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<MethodDeclaration> getMethods() {
-        return identityFilter.filter(super.getMethods(),
-                                     MethodDeclaration.class);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitClassDeclaration(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/Constants.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,294 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.util.Collection;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.TypeMirror;
-import com.sun.tools.apt.mirror.type.TypeMirrorImpl;
-import com.sun.tools.javac.code.Type;
-
-import static com.sun.tools.javac.code.TypeTags.*;
-
-
-/**
- * Utility class for operating on constant expressions.
- */
-@SuppressWarnings("deprecation")
-class Constants {
-
-    /**
-     * Converts a constant in javac's internal representation (in which
-     * boolean, char, byte, short, and int are each represented by an Integer)
-     * into standard representation.  Other values (including null) are
-     * returned unchanged.
-     */
-    static Object decodeConstant(Object value, Type type) {
-        if (value instanceof Integer) {
-            int i = ((Integer) value).intValue();
-            switch (type.tag) {
-            case BOOLEAN:  return Boolean.valueOf(i != 0);
-            case CHAR:     return Character.valueOf((char) i);
-            case BYTE:     return Byte.valueOf((byte) i);
-            case SHORT:    return Short.valueOf((short) i);
-            }
-        }
-        return value;
-    }
-
-    /**
-     * Returns a formatter for generating the text of constant
-     * expressions.  Equivalent to
-     * <tt>getFormatter(new StringBuilder())</tt>.
-     */
-    static Formatter getFormatter() {
-        return new Formatter(new StringBuilder());
-    }
-
-    /**
-     * Returns a formatter for generating the text of constant
-     * expressions.  Also generates the text of constant
-     * "pseudo-expressions" for annotations and array-valued
-     * annotation elements.
-     *
-     * @param buf  where the expression is written
-     */
-    static Formatter getFormatter(StringBuilder buf) {
-        return new Formatter(buf);
-    }
-
-
-    /**
-     * Utility class used to generate the text of constant
-     * expressions.  Also generates the text of constant
-     * "pseudo-expressions" for annotations and array-valued
-     * annotation elements.
-     */
-    static class Formatter {
-
-        private StringBuilder buf;      // where the output goes
-
-        private Formatter(StringBuilder buf) {
-            this.buf = buf;
-        }
-
-
-        public String toString() {
-            return buf.toString();
-        }
-
-        /**
-         * Appends a constant whose type is not statically known
-         * by dispatching to the appropriate overloaded append method.
-         */
-        void append(Object val) {
-            if (val instanceof String) {
-                append((String) val);
-            } else if (val instanceof Character) {
-                append((Character) val);
-            } else if (val instanceof Boolean) {
-                append((Boolean) val);
-            } else if (val instanceof Byte) {
-                append((Byte) val);
-            } else if (val instanceof Short) {
-                append((Short) val);
-            } else if (val instanceof Integer) {
-                append((Integer) val);
-            } else if (val instanceof Long) {
-                append((Long) val);
-            } else if (val instanceof Float) {
-                append((Float) val);
-            } else if (val instanceof Double) {
-                append((Double) val);
-            } else if (val instanceof TypeMirror) {
-                append((TypeMirrorImpl) val);
-            } else if (val instanceof EnumConstantDeclaration) {
-                append((EnumConstantDeclarationImpl) val);
-            } else if (val instanceof AnnotationMirror) {
-                append((AnnotationMirrorImpl) val);
-            } else if (val instanceof Collection<?>) {
-                append((Collection<?>) val);
-            } else {
-                appendUnquoted(val.toString());
-            }
-        }
-
-        /**
-         * Appends a string, escaped (as needed) and quoted.
-         */
-        void append(String val) {
-            buf.append('"');
-            appendUnquoted(val);
-            buf.append('"');
-        }
-
-        /**
-         * Appends a Character, escaped (as needed) and quoted.
-         */
-        void append(Character val) {
-            buf.append('\'');
-            appendUnquoted(val.charValue());
-            buf.append('\'');
-        }
-
-        void append(Boolean val) {
-            buf.append(val);
-        }
-
-        void append(Byte val) {
-            buf.append(String.format("0x%02x", val));
-        }
-
-        void append(Short val) {
-            buf.append(val);
-        }
-
-        void append(Integer val) {
-            buf.append(val);
-        }
-
-        void append(Long val) {
-            buf.append(val).append('L');
-        }
-
-        void append(Float val) {
-            if (val.isNaN()) {
-                buf.append("0.0f/0.0f");
-            } else if (val.isInfinite()) {
-                if (val.floatValue() < 0) {
-                    buf.append('-');
-                }
-                buf.append("1.0f/0.0f");
-            } else {
-                buf.append(val).append('f');
-            }
-        }
-
-        void append(Double val) {
-            if (val.isNaN()) {
-                buf.append("0.0/0.0");
-            } else if (val.isInfinite()) {
-                if (val.doubleValue() < 0) {
-                    buf.append('-');
-                }
-                buf.append("1.0/0.0");
-            } else {
-                buf.append(val);
-            }
-        }
-
-        /**
-         * Appends the class literal corresponding to a type.  Should
-         * only be invoked for types that have an associated literal.
-         * e.g:  "java.lang.String.class"
-         *       "boolean.class"
-         *       "int[].class"
-         */
-        void append(TypeMirrorImpl t) {
-            appendUnquoted(t.type.toString());
-            buf.append(".class");
-        }
-
-        /**
-         * Appends the fully qualified name of an enum constant.
-         * e.g:  "java.math.RoundingMode.UP"
-         */
-        void append(EnumConstantDeclarationImpl e) {
-            appendUnquoted(e.sym.enclClass() + "." + e);
-        }
-
-        /**
-         * Appends the text of an annotation pseudo-expression.
-         * e.g:  "@pkg.Format(linesep='\n')"
-         */
-        void append(AnnotationMirrorImpl anno) {
-            appendUnquoted(anno.toString());
-        }
-
-        /**
-         * Appends the elements of a collection, enclosed within braces
-         * and separated by ", ".  Useful for array-valued annotation
-         * elements.
-         */
-        void append(Collection<?> vals) {
-            buf.append('{');
-            boolean first = true;
-            for (Object val : vals) {
-                if (first) {
-                    first = false;
-                } else {
-                    buf.append(", ");
-                }
-                append(((AnnotationValue) val).getValue());
-            }
-            buf.append('}');
-        }
-
-
-        /**
-         * For each char of a string, append using appendUnquoted(char).
-         */
-        private void appendUnquoted(String s) {
-            for (char c : s.toCharArray()) {
-                appendUnquoted(c);
-            }
-        }
-
-        /**
-         * Appends a char (unquoted), using escapes for those that are not
-         * printable ASCII.  We don't know what is actually printable in
-         * the locale in which this result will be used, so ASCII is our
-         * best guess as to the least common denominator.
-         */
-        private void appendUnquoted(char c) {
-            switch (c) {
-            case '\b': buf.append("\\b");  break;
-            case '\t': buf.append("\\t");  break;
-            case '\n': buf.append("\\n");  break;
-            case '\f': buf.append("\\f");  break;
-            case '\r': buf.append("\\r");  break;
-            case '\"': buf.append("\\\""); break;
-            case '\'': buf.append("\\\'"); break;
-            case '\\': buf.append("\\\\"); break;
-            default:
-                if (isPrintableAscii(c)) {
-                    buf.append(c);
-                } else {
-                    buf.append(String.format("\\u%04x", (int) c));
-                }
-            }
-        }
-
-        /**
-         * Is c a printable ASCII character?
-         */
-        private static boolean isPrintableAscii(char c) {
-            return c >= ' ' && c <= '~';
-        }
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/ConstructorDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.DeclarationVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Flags;
-import com.sun.tools.javac.code.Symbol.MethodSymbol;
-
-
-/**
- * Implementation of ConstructorDeclaration
- */
-@SuppressWarnings("deprecation")
-public class ConstructorDeclarationImpl extends ExecutableDeclarationImpl
-                                        implements ConstructorDeclaration {
-
-    ConstructorDeclarationImpl(AptEnv env, MethodSymbol sym) {
-        super(env, sym);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     * Returns the simple name of the declaring class.
-     */
-    public String getSimpleName() {
-        return sym.enclClass().name.toString();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitConstructorDeclaration(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/DeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,254 +0,0 @@
-/*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.Collection;
-import java.util.EnumSet;
-import javax.tools.JavaFileObject;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.*;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.apt.mirror.util.SourcePositionImpl;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.comp.AttrContext;
-import com.sun.tools.javac.comp.Env;
-import com.sun.tools.javac.tree.*;
-import com.sun.tools.javac.util.Name;
-import com.sun.tools.javac.util.Position;
-
-import static com.sun.mirror.declaration.Modifier.*;
-import static com.sun.tools.javac.code.Kinds.*;
-
-
-/**
- * Implementation of Declaration
- */
-@SuppressWarnings("deprecation")
-public abstract class DeclarationImpl implements Declaration {
-
-    protected final AptEnv env;
-    public final Symbol sym;
-
-    protected static final DeclarationFilter identityFilter =
-            new DeclarationFilter();
-
-
-    /**
-     * "sym" should be completed before this constructor is called.
-     */
-    protected DeclarationImpl(AptEnv env, Symbol sym) {
-        this.env = env;
-        this.sym = sym;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     * <p> ParameterDeclarationImpl overrides this implementation.
-     */
-    public boolean equals(Object obj) {
-        if (obj instanceof DeclarationImpl) {
-            DeclarationImpl that = (DeclarationImpl) obj;
-            return sym == that.sym && env == that.env;
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     * <p> ParameterDeclarationImpl overrides this implementation.
-     */
-    public int hashCode() {
-        return sym.hashCode() + env.hashCode();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public String getDocComment() {
-        // Our doc comment is contained in a map in our toplevel,
-        // indexed by our tree.  Find our enter environment, which gives
-        // us our toplevel.  It also gives us a tree that contains our
-        // tree:  walk it to find our tree.  This is painful.
-        Env<AttrContext> enterEnv = getEnterEnv();
-        if (enterEnv == null)
-            return null;
-        JCTree tree = TreeInfo.declarationFor(sym, enterEnv.tree);
-        return enterEnv.toplevel.docComments.get(tree);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<AnnotationMirror> getAnnotationMirrors() {
-        Collection<AnnotationMirror> res =
-            new ArrayList<AnnotationMirror>();
-        for (Attribute.Compound a : sym.getAnnotationMirrors()) {
-            res.add(env.declMaker.getAnnotationMirror(a, this));
-        }
-        return res;
-    }
-
-    /**
-     * {@inheritDoc}
-     * Overridden by ClassDeclarationImpl to handle @Inherited.
-     */
-    public <A extends Annotation> A getAnnotation(Class<A> annoType) {
-        return getAnnotation(annoType, sym);
-    }
-
-    protected <A extends Annotation> A getAnnotation(Class<A> annoType,
-                                                     Symbol annotated) {
-        if (!annoType.isAnnotation()) {
-            throw new IllegalArgumentException(
-                                "Not an annotation type: " + annoType);
-        }
-        String name = annoType.getName();
-        for (Attribute.Compound attr : annotated.getAnnotationMirrors()) {
-            if (name.equals(attr.type.tsym.flatName().toString())) {
-                return AnnotationProxyMaker.generateAnnotation(env, attr,
-                                                               annoType);
-            }
-        }
-        return null;
-    }
-
-    // Cache for modifiers.
-    private EnumSet<Modifier> modifiers = null;
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<Modifier> getModifiers() {
-        if (modifiers == null) {
-            modifiers = EnumSet.noneOf(Modifier.class);
-            long flags = AptEnv.getFlags(sym);
-
-            if (0 != (flags & Flags.PUBLIC))       modifiers.add(PUBLIC);
-            if (0 != (flags & Flags.PROTECTED))    modifiers.add(PROTECTED);
-            if (0 != (flags & Flags.PRIVATE))      modifiers.add(PRIVATE);
-            if (0 != (flags & Flags.ABSTRACT))     modifiers.add(ABSTRACT);
-            if (0 != (flags & Flags.STATIC))       modifiers.add(STATIC);
-            if (0 != (flags & Flags.FINAL))        modifiers.add(FINAL);
-            if (0 != (flags & Flags.TRANSIENT))    modifiers.add(TRANSIENT);
-            if (0 != (flags & Flags.VOLATILE))     modifiers.add(VOLATILE);
-            if (0 != (flags & Flags.SYNCHRONIZED)) modifiers.add(SYNCHRONIZED);
-            if (0 != (flags & Flags.NATIVE))       modifiers.add(NATIVE);
-            if (0 != (flags & Flags.STRICTFP))     modifiers.add(STRICTFP);
-        }
-        return modifiers;
-    }
-
-    /**
-     * {@inheritDoc}
-     * Overridden in some subclasses.
-     */
-    public String getSimpleName() {
-        return sym.name.toString();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public SourcePosition getPosition() {
-        // Find the toplevel.  From there use a tree-walking utility
-        // that finds the tree for our symbol, and with it the position.
-        Env<AttrContext> enterEnv = getEnterEnv();
-        if (enterEnv == null)
-            return null;
-        JCTree.JCCompilationUnit toplevel = enterEnv.toplevel;
-        JavaFileObject sourcefile = toplevel.sourcefile;
-        if (sourcefile == null)
-            return null;
-        int pos = TreeInfo.positionFor(sym, toplevel);
-
-        return new SourcePositionImpl(sourcefile, pos, toplevel.lineMap);
-    }
-
-    /**
-     * Applies a visitor to this declaration.
-     *
-     * @param v the visitor operating on this declaration
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitDeclaration(this);
-    }
-
-
-    private Collection<Symbol> members = null;  // cache for getMembers()
-
-    /**
-     * Returns the symbols of type or package members (and constructors)
-     * that are not synthetic or otherwise unwanted.
-     * Caches the result if "cache" is true.
-     */
-    protected Collection<Symbol> getMembers(boolean cache) {
-        if (members != null) {
-            return members;
-        }
-        LinkedList<Symbol> res = new LinkedList<Symbol>();
-        for (Scope.Entry e = sym.members().elems; e != null; e = e.sibling) {
-            if (e.sym != null && !unwanted(e.sym)) {
-                res.addFirst(e.sym);
-            }
-        }
-        return cache ? (members = res) : res;
-    }
-
-    /**
-     * Tests whether this is a symbol that should never be seen by clients,
-     * such as a synthetic class.
-     * Note that a class synthesized by the compiler may not be flagged as
-     * synthetic:  see bugid 4959932.
-     */
-    private static boolean unwanted(Symbol s) {
-        return AptEnv.hasFlag(s, Flags.SYNTHETIC) ||
-               (s.kind == TYP &&
-                !DeclarationMaker.isJavaIdentifier(s.name.toString()));
-    }
-
-    /**
-     * Returns this declaration's enter environment, or null if it
-     * has none.
-     */
-    private Env<AttrContext> getEnterEnv() {
-        // Get enclosing class of sym, or sym itself if it is a class
-        // or package.
-        TypeSymbol ts = (sym.kind != PCK)
-                        ? sym.enclClass()
-                        : (PackageSymbol) sym;
-        return (ts != null)
-                ? env.enter.getEnv(ts)
-                : null;
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/DeclarationMaker.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +0,0 @@
-/*
- * Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.sun.mirror.declaration.*;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.Name;
-import com.sun.tools.javac.main.JavaCompiler;
-
-/**
- * Utilities for constructing and caching declarations.
- */
-@SuppressWarnings("deprecation")
-public class DeclarationMaker {
-
-    private AptEnv env;
-    private Context context;
-    private JavaCompiler javacompiler;
-    private static final Context.Key<DeclarationMaker> declarationMakerKey =
-            new Context.Key<DeclarationMaker>();
-
-    public static DeclarationMaker instance(Context context) {
-        DeclarationMaker instance = context.get(declarationMakerKey);
-        if (instance == null) {
-            instance = new DeclarationMaker(context);
-        }
-        return instance;
-    }
-
-    private DeclarationMaker(Context context) {
-        context.put(declarationMakerKey, this);
-        env = AptEnv.instance(context);
-        this.context = context;
-        this.javacompiler = JavaCompiler.instance(context);
-    }
-
-
-
-    // Cache of package declarations
-    private Map<PackageSymbol, PackageDeclaration> packageDecls =
-            new HashMap<PackageSymbol, PackageDeclaration>();
-
-    /**
-     * Returns the package declaration for a package symbol.
-     */
-    public PackageDeclaration getPackageDeclaration(PackageSymbol p) {
-        PackageDeclaration res = packageDecls.get(p);
-        if (res == null) {
-            res = new PackageDeclarationImpl(env, p);
-            packageDecls.put(p, res);
-        }
-        return res;
-    }
-
-    /**
-     * Returns the package declaration for the package with the given name.
-     * Name is fully-qualified, or "" for the unnamed package.
-     * Returns null if package declaration not found.
-     */
-    public PackageDeclaration getPackageDeclaration(String name) {
-        PackageSymbol p = null;
-        if (name.equals("") )
-            p = env.symtab.unnamedPackage;
-        else {
-            if (!isJavaName(name))
-                return null;
-            Symbol s = nameToSymbol(name, false);
-            if (s instanceof PackageSymbol) {
-                p = (PackageSymbol) s;
-                if (!p.exists())
-                    return null;
-            } else
-                return null;
-        }
-        return getPackageDeclaration(p);
-    }
-
-    // Cache of type declarations
-    private Map<ClassSymbol, TypeDeclaration> typeDecls =
-            new HashMap<ClassSymbol, TypeDeclaration>();
-
-    /**
-     * Returns the type declaration for a class symbol.
-     * Forces completion, and returns null on error.
-     */
-    public TypeDeclaration getTypeDeclaration(ClassSymbol c) {
-        long flags = AptEnv.getFlags(c);        // forces symbol completion
-        if (c.kind == Kinds.ERR) {
-            return null;
-        }
-        TypeDeclaration res = typeDecls.get(c);
-        if (res == null) {
-            if ((flags & Flags.ANNOTATION) != 0) {
-                res = new AnnotationTypeDeclarationImpl(env, c);
-            } else if ((flags & Flags.INTERFACE) != 0) {
-                res = new InterfaceDeclarationImpl(env, c);
-            } else if ((flags & Flags.ENUM) != 0) {
-                res = new EnumDeclarationImpl(env, c);
-            } else {
-                res = new ClassDeclarationImpl(env, c);
-            }
-            typeDecls.put(c, res);
-        }
-        return res;
-    }
-
-    /**
-     * Returns the type declaration for the type with the given canonical name.
-     * Returns null if type declaration not found.
-     */
-    public TypeDeclaration getTypeDeclaration(String name) {
-        if (!isJavaName(name))
-            return null;
-        Symbol s = nameToSymbol(name, true);
-        if (s instanceof ClassSymbol) {
-            ClassSymbol c = (ClassSymbol) s;
-            return getTypeDeclaration(c);
-        } else
-            return null;
-    }
-
-    /**
-     * Returns a symbol given the type's or packages's canonical name,
-     * or null if the name isn't found.
-     */
-    private Symbol nameToSymbol(String name, boolean classCache) {
-        Symbol s = null;
-        Name nameName = env.names.fromString(name);
-        if (classCache)
-            s = env.symtab.classes.get(nameName);
-        else
-            s = env.symtab.packages.get(nameName);
-
-        if (s != null && s.exists())
-            return s;
-
-        s = javacompiler.resolveIdent(name);
-        if (s.kind == Kinds.ERR  )
-            return null;
-
-        if (s.kind == Kinds.PCK)
-            s.complete();
-
-        return s;
-    }
-
-    // Cache of method and constructor declarations
-    private Map<MethodSymbol, ExecutableDeclaration> executableDecls =
-            new HashMap<MethodSymbol, ExecutableDeclaration>();
-
-    /**
-     * Returns the method or constructor declaration for a method symbol.
-     */
-    ExecutableDeclaration getExecutableDeclaration(MethodSymbol m) {
-        ExecutableDeclaration res = executableDecls.get(m);
-        if (res == null) {
-            if (m.isConstructor()) {
-                res = new ConstructorDeclarationImpl(env, m);
-            } else if (isAnnotationTypeElement(m)) {
-                res = new AnnotationTypeElementDeclarationImpl(env, m);
-            } else {
-                res = new MethodDeclarationImpl(env, m);
-            }
-            executableDecls.put(m, res);
-        }
-        return res;
-    }
-
-    // Cache of field declarations
-    private Map<VarSymbol, FieldDeclaration> fieldDecls =
-            new HashMap<VarSymbol, FieldDeclaration>();
-
-    /**
-     * Returns the field declaration for a var symbol.
-     */
-    FieldDeclaration getFieldDeclaration(VarSymbol v) {
-        FieldDeclaration res = fieldDecls.get(v);
-        if (res == null) {
-            if (hasFlag(v, Flags.ENUM)) {
-                res = new EnumConstantDeclarationImpl(env, v);
-            } else {
-                res = new FieldDeclarationImpl(env, v);
-            }
-            fieldDecls.put(v, res);
-        }
-        return res;
-    }
-
-    /**
-     * Returns a parameter declaration.
-     */
-    ParameterDeclaration getParameterDeclaration(VarSymbol v) {
-        return new ParameterDeclarationImpl(env, v);
-    }
-
-    /**
-     * Returns a type parameter declaration.
-     */
-    public TypeParameterDeclaration getTypeParameterDeclaration(TypeSymbol t) {
-        return new TypeParameterDeclarationImpl(env, t);
-    }
-
-    /**
-     * Returns an annotation.
-     */
-    AnnotationMirror getAnnotationMirror(Attribute.Compound a, Declaration decl) {
-        return new AnnotationMirrorImpl(env, a, decl);
-    }
-
-
-    /**
-     * Is a string a valid Java identifier?
-     */
-    public static boolean isJavaIdentifier(String id) {
-        return javax.lang.model.SourceVersion.isIdentifier(id);
-    }
-
-    public static boolean isJavaName(String name) {
-        for(String id: name.split("\\.")) {
-            if (! isJavaIdentifier(id))
-                return false;
-        }
-        return true;
-    }
-
-    /**
-     * Is a method an annotation type element?
-     * It is if it's declared in an annotation type.
-     */
-    private static boolean isAnnotationTypeElement(MethodSymbol m) {
-        return hasFlag(m.enclClass(), Flags.ANNOTATION);
-    }
-
-    /**
-     * Does a symbol have a given flag?
-     */
-    private static boolean hasFlag(Symbol s, long flag) {
-        return AptEnv.hasFlag(s, flag);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/EnumConstantDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.DeclarationVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Symbol.VarSymbol;
-
-
-/**
- * Implementation of EnumConstantDeclaration
- */
-@SuppressWarnings("deprecation")
-public class EnumConstantDeclarationImpl extends FieldDeclarationImpl
-                                         implements EnumConstantDeclaration {
-
-    EnumConstantDeclarationImpl(AptEnv env, VarSymbol sym) {
-        super(env, sym);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public EnumDeclaration getDeclaringType() {
-        return (EnumDeclaration) super.getDeclaringType();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitEnumConstantDeclaration(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/EnumDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.util.Collection;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.*;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Symbol.*;
-
-
-/**
- * Implementation of EnumDeclaration
- */
-@SuppressWarnings("deprecation")
-public class EnumDeclarationImpl extends ClassDeclarationImpl
-                                 implements EnumDeclaration {
-
-    EnumDeclarationImpl(AptEnv env, ClassSymbol sym) {
-        super(env, sym);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<EnumConstantDeclaration> getEnumConstants() {
-        return identityFilter.filter(getFields(),
-                                     EnumConstantDeclaration.class);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitEnumDeclaration(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/ExecutableDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.util.Collection;
-import java.util.ArrayList;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.ReferenceType;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.*;
-
-
-/**
- * Implementation of ExecutableDeclaration
- */
-@SuppressWarnings("deprecation")
-public abstract class ExecutableDeclarationImpl extends MemberDeclarationImpl
-                                             implements ExecutableDeclaration {
-    public MethodSymbol sym;
-
-    protected ExecutableDeclarationImpl(AptEnv env, MethodSymbol sym) {
-        super(env, sym);
-        this.sym = sym;
-    }
-
-
-    /**
-     * Returns type parameters (if any), method name, and signature
-     * (value parameter types).
-     */
-    public String toString() {
-        return sym.toString();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public boolean isVarArgs() {
-        return AptEnv.hasFlag(sym, Flags.VARARGS);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<ParameterDeclaration> getParameters() {
-        Collection<ParameterDeclaration> res =
-            new ArrayList<ParameterDeclaration>();
-        for (VarSymbol param : sym.params())
-            res.add(env.declMaker.getParameterDeclaration(param));
-        return res;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<ReferenceType> getThrownTypes() {
-        ArrayList<ReferenceType> res = new ArrayList<ReferenceType>();
-        for (Type t : sym.type.getThrownTypes()) {
-            res.add((ReferenceType) env.typeMaker.getType(t));
-        }
-        return res;
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/FieldDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.util.Collection;
-import java.util.ArrayList;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.TypeMirror;
-import com.sun.mirror.util.DeclarationVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.code.TypeTags;
-
-
-/**
- * Implementation of FieldDeclaration
- */
-@SuppressWarnings("deprecation")
-class FieldDeclarationImpl extends MemberDeclarationImpl
-                                  implements FieldDeclaration {
-
-    protected VarSymbol sym;
-
-    FieldDeclarationImpl(AptEnv env, VarSymbol sym) {
-        super(env, sym);
-        this.sym = sym;
-    }
-
-
-    /**
-     * Returns the field's name.
-     */
-    public String toString() {
-        return getSimpleName();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public TypeMirror getType() {
-        return env.typeMaker.getType(sym.type);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Object getConstantValue() {
-        Object val = sym.getConstValue();
-        // val may be null, indicating that this is not a constant.
-
-        return Constants.decodeConstant(val, sym.type);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public String getConstantExpression() {
-        Object val = getConstantValue();
-        if (val == null) {
-            return null;
-        }
-        Constants.Formatter fmtr = Constants.getFormatter();
-        fmtr.append(val);
-        return fmtr.toString();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitFieldDeclaration(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/InterfaceDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.DeclarationVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Symbol.*;
-
-
-/**
- * Implementation of InterfaceDeclaration
- */
-@SuppressWarnings("deprecation")
-public class InterfaceDeclarationImpl extends TypeDeclarationImpl
-                                      implements InterfaceDeclaration {
-
-    InterfaceDeclarationImpl(AptEnv env, ClassSymbol sym) {
-        super(env, sym);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitInterfaceDeclaration(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/MemberDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.util.Collection;
-import java.util.ArrayList;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.DeclarationVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Symbol;
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-import com.sun.tools.javac.code.Type;
-
-
-/**
- * Implementation of MemberDeclaration
- */
-@SuppressWarnings("deprecation")
-public abstract class MemberDeclarationImpl extends DeclarationImpl
-                                            implements MemberDeclaration {
-
-    protected MemberDeclarationImpl(AptEnv env, Symbol sym) {
-        super(env, sym);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public TypeDeclaration getDeclaringType() {
-        ClassSymbol c = getDeclaringClassSymbol();
-        return (c == null)
-            ? null
-            : env.declMaker.getTypeDeclaration(c);
-    }
-
-    /**
-     * {@inheritDoc}
-     * For methods, constructors, and types.
-     */
-    public Collection<TypeParameterDeclaration> getFormalTypeParameters() {
-        ArrayList<TypeParameterDeclaration> res =
-            new ArrayList<TypeParameterDeclaration>();
-        for (Type t : sym.type.getTypeArguments()) {
-            res.add(env.declMaker.getTypeParameterDeclaration(t.tsym));
-        }
-        return res;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitMemberDeclaration(this);
-    }
-
-
-    /**
-     * Returns the ClassSymbol of the declaring type,
-     * or null if this is a top-level type.
-     */
-    private ClassSymbol getDeclaringClassSymbol() {
-        return sym.owner.enclClass();
-    }
-
-    /**
-     * Returns the formal type parameters of a type, member or constructor
-     * as an angle-bracketed string.  Each parameter consists of the simple
-     * type variable name and any bounds (with no implicit "extends Object"
-     * clause added).  Type names are qualified.
-     * Returns "" if there are no type parameters.
-     */
-    protected static String typeParamsToString(AptEnv env, Symbol sym) {
-        if (sym.type.getTypeArguments().isEmpty()) {
-            return "";
-        }
-        StringBuilder s = new StringBuilder();
-        for (Type t : sym.type.getTypeArguments()) {
-            Type.TypeVar tv = (Type.TypeVar) t;
-            s.append(s.length() == 0 ? "<" : ", ")
-             .append(TypeParameterDeclarationImpl.toString(env, tv));
-        }
-        s.append(">");
-        return s.toString();
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/MethodDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.DeclarationVisitor;
-import com.sun.mirror.type.TypeMirror;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Symbol.MethodSymbol;
-
-
-/**
- * Implementation of MethodDeclaration
- */
-@SuppressWarnings("deprecation")
-public class MethodDeclarationImpl extends ExecutableDeclarationImpl
-                                   implements MethodDeclaration {
-
-    MethodDeclarationImpl(AptEnv env, MethodSymbol sym) {
-        super(env, sym);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public TypeMirror getReturnType() {
-        return env.typeMaker.getType(sym.type.getReturnType());
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitMethodDeclaration(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/PackageDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.*;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.*;
-
-
-/**
- * Implementation of PackageDeclaration.
- */
-@SuppressWarnings("deprecation")
-public class PackageDeclarationImpl extends DeclarationImpl
-                                    implements PackageDeclaration {
-
-    private PackageSymbol sym;
-
-
-    public PackageDeclarationImpl(AptEnv env, PackageSymbol sym) {
-        super(env, sym);
-        this.sym = sym;
-    }
-
-
-    /**
-     * Returns the qualified name.
-     */
-    public String toString() {
-        return getQualifiedName();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public String getQualifiedName() {
-        return sym.getQualifiedName().toString();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<ClassDeclaration> getClasses() {
-        return identityFilter.filter(getAllTypes(),
-                                     ClassDeclaration.class);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<EnumDeclaration> getEnums() {
-        return identityFilter.filter(getAllTypes(),
-                                     EnumDeclaration.class);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<InterfaceDeclaration> getInterfaces() {
-        return identityFilter.filter(getAllTypes(),
-                                     InterfaceDeclaration.class);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<AnnotationTypeDeclaration> getAnnotationTypes() {
-        return identityFilter.filter(getAllTypes(),
-                                     AnnotationTypeDeclaration.class);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitPackageDeclaration(this);
-    }
-
-
-    // Cache of all top-level type declarations in this package.
-    private Collection<TypeDeclaration> allTypes = null;
-
-    /**
-     * Caches and returns all top-level type declarations in this package.
-     * Omits synthetic types.
-     */
-    private Collection<TypeDeclaration> getAllTypes() {
-        if (allTypes != null) {
-            return allTypes;
-        }
-        allTypes = new ArrayList<TypeDeclaration>();
-        for (Symbol s : getMembers(false)) {
-            allTypes.add(env.declMaker.getTypeDeclaration((ClassSymbol) s));
-        }
-        return allTypes;
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/ParameterDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.util.Collection;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.TypeMirror;
-import com.sun.mirror.util.DeclarationVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.VarSymbol;
-
-
-/**
- * Implementation of ParameterDeclaration
- */
-@SuppressWarnings("deprecation")
-public class ParameterDeclarationImpl extends DeclarationImpl
-                                      implements ParameterDeclaration
-{
-    protected VarSymbol sym;
-
-
-    ParameterDeclarationImpl(AptEnv env, VarSymbol sym) {
-        super(env, sym);
-        this.sym = sym;
-    }
-
-
-    /**
-     * Returns the simple name of the parameter.
-     */
-    public String toString() {
-        return getType() + " " + sym.name;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public boolean equals(Object obj) {
-        // Neither ParameterDeclarationImpl objects nor their symbols
-        // are cached by the current implementation, so check symbol
-        // owners and names.
-
-        if (obj instanceof ParameterDeclarationImpl) {
-            ParameterDeclarationImpl that = (ParameterDeclarationImpl) obj;
-            return sym.owner == that.sym.owner &&
-                   sym.name == that.sym.name &&
-                   env == that.env;
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public int hashCode() {
-        return sym.owner.hashCode() + sym.name.hashCode() + env.hashCode();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public TypeMirror getType() {
-        return env.typeMaker.getType(sym.type);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitParameterDeclaration(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/TypeDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.util.Collection;
-import java.util.ArrayList;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.DeclarationVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.util.Name;
-
-/**
- * Implementation of TypeDeclaration
- */
-@SuppressWarnings("deprecation")
-public class TypeDeclarationImpl extends MemberDeclarationImpl
-                                 implements TypeDeclaration {
-
-    public ClassSymbol sym;
-
-
-    /**
-     * "sym" should be completed before this constructor is called.
-     */
-     protected TypeDeclarationImpl(AptEnv env, ClassSymbol sym) {
-        super(env, sym);
-        this.sym = sym;
-    }
-
-
-    /**
-     * Returns the type's name, with any type parameters (including those
-     * of outer classes).  Type names are qualified.
-     */
-    public String toString() {
-        return toString(env, sym);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public PackageDeclaration getPackage() {
-        return env.declMaker.getPackageDeclaration(sym.packge());
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public String getQualifiedName() {
-        return sym.toString();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<InterfaceType> getSuperinterfaces() {
-        return env.typeMaker.getTypes(env.jctypes.interfaces(sym.type),
-                                      InterfaceType.class);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<FieldDeclaration> getFields() {
-        ArrayList<FieldDeclaration> res = new ArrayList<FieldDeclaration>();
-        for (Symbol s : getMembers(true)) {
-            if (s.kind == Kinds.VAR) {
-                res.add(env.declMaker.getFieldDeclaration((VarSymbol) s));
-            }
-        }
-        return res;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<? extends MethodDeclaration> getMethods() {
-        ArrayList<MethodDeclaration> res = new ArrayList<MethodDeclaration>();
-        for (Symbol s : getMembers(true)) {
-            if (s.kind == Kinds.MTH && !s.isConstructor() &&
-                !env.names.clinit.equals(s.name) ) { // screen out static initializers
-                MethodSymbol m = (MethodSymbol) s;
-                res.add((MethodDeclaration)
-                        env.declMaker.getExecutableDeclaration(m));
-            }
-        }
-        return res;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<TypeDeclaration> getNestedTypes() {
-        ArrayList<TypeDeclaration> res = new ArrayList<TypeDeclaration>();
-        for (Symbol s : getMembers(true)) {
-            if (s.kind == Kinds.TYP) {
-                res.add(env.declMaker.getTypeDeclaration((ClassSymbol) s));
-            }
-        }
-        return res;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitTypeDeclaration(this);
-    }
-
-
-    /**
-     * Returns a type's name, with any type parameters (including those
-     * of outer classes).  Type names are qualified.
-     */
-    static String toString(AptEnv env, ClassSymbol c) {
-        StringBuilder sb = new StringBuilder();
-        if (c.isInner()) {
-            // c is an inner class, so include type params of outer.
-            ClassSymbol enclosing = c.owner.enclClass();
-            sb.append(toString(env, enclosing))
-              .append('.')
-              .append(c.name);
-        } else {
-            sb.append(c);
-        }
-        sb.append(typeParamsToString(env, c));
-        return sb.toString();
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/declaration/TypeParameterDeclarationImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.declaration;
-
-
-import java.util.Collection;
-import java.util.ArrayList;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.ReferenceType;
-import com.sun.mirror.util.DeclarationVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.*;
-
-
-/**
- * Implementation of TypeParameterDeclaration
- */
-@SuppressWarnings("deprecation")
-public class TypeParameterDeclarationImpl extends DeclarationImpl
-                                          implements TypeParameterDeclaration
-{
-    protected TypeSymbol sym;
-
-
-    TypeParameterDeclarationImpl(AptEnv env, TypeSymbol sym) {
-        super(env, sym);
-        this.sym = sym;
-    }
-
-
-    /**
-     * Returns the type parameter's name along with any "extends" clause.
-     * Class names are qualified.  No implicit "extends Object" is added.
-     */
-    public String toString() {
-        return toString(env, (Type.TypeVar) sym.type);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<ReferenceType> getBounds() {
-        ArrayList<ReferenceType> res = new ArrayList<ReferenceType>();
-        for (Type t : env.jctypes.getBounds((Type.TypeVar) sym.type)) {
-            res.add((ReferenceType) env.typeMaker.getType(t));
-        }
-        return res;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Declaration getOwner() {
-        Symbol owner = sym.owner;
-        return ((owner.kind & Kinds.TYP) != 0)
-               ? env.declMaker.getTypeDeclaration((ClassSymbol) owner)
-               : env.declMaker.getExecutableDeclaration((MethodSymbol) owner);
-    }
-
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(DeclarationVisitor v) {
-        v.visitTypeParameterDeclaration(this);
-    }
-
-
-    /**
-     * Returns the type parameter's name along with any "extends" clause.
-     * See {@link #toString()} for details.
-     */
-    static String toString(AptEnv env, Type.TypeVar tv) {
-        StringBuilder s = new StringBuilder();
-        s.append(tv);
-        boolean first = true;
-        for (Type bound : getExtendsBounds(env, tv)) {
-            s.append(first ? " extends " : " & ");
-            s.append(env.typeMaker.typeToString(bound));
-            first = false;
-        }
-        return s.toString();
-    }
-
-    /**
-     * Returns the bounds of a type variable, eliding java.lang.Object
-     * if it appears alone.
-     */
-    private static Iterable<Type> getExtendsBounds(AptEnv env,
-                                                   Type.TypeVar tv) {
-        return (tv.getUpperBound().tsym == env.symtab.objectType.tsym)
-               ? com.sun.tools.javac.util.List.<Type>nil()
-               : env.jctypes.getBounds(tv);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/type/AnnotationTypeImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.type;
-
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.TypeVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Type;
-
-
-/**
- * Implementation of AnnotationType
- */
-@SuppressWarnings("deprecation")
-public class AnnotationTypeImpl extends InterfaceTypeImpl
-                                implements AnnotationType {
-
-    AnnotationTypeImpl(AptEnv env, Type.ClassType type) {
-        super(env, type);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public AnnotationTypeDeclaration getDeclaration() {
-        return (AnnotationTypeDeclaration) super.getDeclaration();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(TypeVisitor v) {
-        v.visitAnnotationType(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/type/ArrayTypeImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.type;
-
-
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.TypeVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Type;
-
-
-/**
- * Implementation of ArrayType
- */
-@SuppressWarnings("deprecation")
-public class ArrayTypeImpl extends TypeMirrorImpl implements ArrayType {
-
-    protected Type.ArrayType type;
-
-
-    ArrayTypeImpl(AptEnv env, Type.ArrayType type) {
-        super(env, type);
-        this.type = type;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public TypeMirror getComponentType() {
-        return env.typeMaker.getType(type.elemtype);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(TypeVisitor v) {
-        v.visitArrayType(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/type/ClassTypeImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.type;
-
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.TypeVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Type;
-
-
-/**
- * Implementation of ClassType
- */
-@SuppressWarnings("deprecation")
-public class ClassTypeImpl extends DeclaredTypeImpl implements ClassType {
-
-    ClassTypeImpl(AptEnv env, Type.ClassType type) {
-        super(env, type);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public ClassDeclaration getDeclaration() {
-        return (ClassDeclaration) super.getDeclaration();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public ClassType getSuperclass() {
-        //  java.lang.Object has no superclass
-        if (type.tsym == env.symtab.objectType.tsym) {
-            return null;
-        }
-        Type sup = env.jctypes.supertype(type);
-        return (ClassType) env.typeMaker.getType(sup);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(TypeVisitor v) {
-        v.visitClassType(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/type/DeclaredTypeImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.type;
-
-
-import java.util.Collection;
-
-import com.sun.mirror.declaration.TypeDeclaration;
-import com.sun.mirror.type.*;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-
-
-/**
- * Implementation of DeclaredType
- */
-@SuppressWarnings("deprecation")
-abstract class DeclaredTypeImpl extends TypeMirrorImpl
-                                implements DeclaredType {
-
-    protected Type.ClassType type;
-
-
-    protected DeclaredTypeImpl(AptEnv env, Type.ClassType type) {
-        super(env, type);
-        this.type = type;
-    }
-
-
-    /**
-     * Returns a string representation of this declared type.
-     * This includes the type's name and any actual type arguments.
-     * Type names are qualified.
-     */
-    public String toString() {
-        return toString(env, type);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public TypeDeclaration getDeclaration() {
-        return env.declMaker.getTypeDeclaration((ClassSymbol) type.tsym);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public DeclaredType getContainingType() {
-        if (type.getEnclosingType().tag == TypeTags.CLASS) {
-            // This is the type of an inner class.
-            return (DeclaredType) env.typeMaker.getType(type.getEnclosingType());
-        }
-        ClassSymbol enclosing = type.tsym.owner.enclClass();
-        if (enclosing != null) {
-            // Nested but not inner.  Return the raw type of the enclosing
-            // class or interface.
-            // See java.lang.reflect.ParameterizedType.getOwnerType().
-            return (DeclaredType) env.typeMaker.getType(
-                                        env.jctypes.erasure(enclosing.type));
-        }
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<TypeMirror> getActualTypeArguments() {
-        return env.typeMaker.getTypes(type.getTypeArguments());
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<InterfaceType> getSuperinterfaces() {
-        return env.typeMaker.getTypes(env.jctypes.interfaces(type),
-                                      InterfaceType.class);
-    }
-
-
-    /**
-     * Returns a string representation of this declared type.
-     * See {@link #toString()} for details.
-     */
-    static String toString(AptEnv env, Type.ClassType c) {
-        return c.toString();
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/type/EnumTypeImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.type;
-
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.TypeVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Type;
-
-
-/**
- * Implementation of EnumType
- */
-@SuppressWarnings("deprecation")
-public class EnumTypeImpl extends ClassTypeImpl implements EnumType {
-
-    EnumTypeImpl(AptEnv env, Type.ClassType type) {
-        super(env, type);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public EnumDeclaration getDeclaration() {
-        return (EnumDeclaration) super.getDeclaration();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(TypeVisitor v) {
-        v.visitEnumType(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/type/InterfaceTypeImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.type;
-
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.TypeVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Type;
-
-
-/**
- * Implementation of InterfaceType
- */
-@SuppressWarnings("deprecation")
-public class InterfaceTypeImpl extends DeclaredTypeImpl
-                               implements InterfaceType {
-
-    InterfaceTypeImpl(AptEnv env, Type.ClassType type) {
-        super(env, type);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public InterfaceDeclaration getDeclaration() {
-        return (InterfaceDeclaration) super.getDeclaration();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(TypeVisitor v) {
-        v.visitInterfaceType(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/type/PrimitiveTypeImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.type;
-
-
-
-import com.sun.mirror.type.PrimitiveType;
-import com.sun.mirror.util.TypeVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Type;
-
-import static com.sun.mirror.type.PrimitiveType.Kind.*;
-
-
-/**
- * Implementation of PrimitiveType.
- */
-@SuppressWarnings("deprecation")
-class PrimitiveTypeImpl extends TypeMirrorImpl implements PrimitiveType {
-
-    private final Kind kind;    // the kind of primitive
-
-
-    PrimitiveTypeImpl(AptEnv env, Kind kind) {
-        super(env, getType(env, kind));
-        this.kind = kind;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public Kind getKind() {
-        return kind;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(TypeVisitor v) {
-        v.visitPrimitiveType(this);
-    }
-
-
-    /**
-     * Returns the javac type corresponding to a kind of primitive type.
-     */
-    private static Type getType(AptEnv env, Kind kind) {
-        switch (kind) {
-        case BOOLEAN:   return env.symtab.booleanType;
-        case BYTE:      return env.symtab.byteType;
-        case SHORT:     return env.symtab.shortType;
-        case INT:       return env.symtab.intType;
-        case LONG:      return env.symtab.longType;
-        case CHAR:      return env.symtab.charType;
-        case FLOAT:     return env.symtab.floatType;
-        case DOUBLE:    return env.symtab.doubleType;
-        default:        throw new AssertionError();
-        }
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/type/TypeMaker.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.type;
-
-
-import java.util.Collection;
-import java.util.ArrayList;
-
-import com.sun.mirror.type.*;
-import com.sun.mirror.type.PrimitiveType.Kind;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.util.Context;
-
-import static com.sun.tools.javac.code.TypeTags.*;
-
-
-/**
- * Utilities for constructing type objects.
- */
-@SuppressWarnings("deprecation")
-public class TypeMaker {
-
-    private final AptEnv env;
-    private final VoidType voidType;
-    private PrimitiveType[] primTypes = new PrimitiveType[VOID];
-                                                // VOID is past all prim types
-
-
-    private static final Context.Key<TypeMaker> typeMakerKey =
-            new Context.Key<TypeMaker>();
-
-    public static TypeMaker instance(Context context) {
-        TypeMaker instance = context.get(typeMakerKey);
-        if (instance == null) {
-            instance = new TypeMaker(context);
-        }
-        return instance;
-    }
-
-    private TypeMaker(Context context) {
-        context.put(typeMakerKey, this);
-        env = AptEnv.instance(context);
-
-        voidType = new VoidTypeImpl(env);
-        primTypes[BOOLEAN] = new PrimitiveTypeImpl(env, Kind.BOOLEAN);
-        primTypes[BYTE]    = new PrimitiveTypeImpl(env, Kind.BYTE);
-        primTypes[SHORT]   = new PrimitiveTypeImpl(env, Kind.SHORT);
-        primTypes[INT]     = new PrimitiveTypeImpl(env, Kind.INT);
-        primTypes[LONG]    = new PrimitiveTypeImpl(env, Kind.LONG);
-        primTypes[CHAR]    = new PrimitiveTypeImpl(env, Kind.CHAR);
-        primTypes[FLOAT]   = new PrimitiveTypeImpl(env, Kind.FLOAT);
-        primTypes[DOUBLE]  = new PrimitiveTypeImpl(env, Kind.DOUBLE);
-    }
-
-
-    /**
-     * Returns the TypeMirror corresponding to a javac Type object.
-     */
-    public TypeMirror getType(Type t) {
-        if (t.isPrimitive()) {
-            return primTypes[t.tag];
-        }
-        switch (t.tag) {
-        case ERROR:     // fall through
-        case CLASS:     return getDeclaredType((Type.ClassType) t);
-        case WILDCARD:  return new WildcardTypeImpl(env, (Type.WildcardType) t);
-        case TYPEVAR:   return new TypeVariableImpl(env, (Type.TypeVar) t);
-        case ARRAY:     return new ArrayTypeImpl(env, (Type.ArrayType) t);
-        case VOID:      return voidType;
-        default:        throw new AssertionError();
-        }
-    }
-
-    /**
-     * Returns the declared type corresponding to a given ClassType.
-     */
-    public DeclaredType getDeclaredType(Type.ClassType t) {
-        return
-            hasFlag(t.tsym, Flags.ANNOTATION) ? new AnnotationTypeImpl(env, t) :
-            hasFlag(t.tsym, Flags.INTERFACE)  ? new InterfaceTypeImpl(env, t) :
-            hasFlag(t.tsym, Flags.ENUM)       ? new EnumTypeImpl(env, t) :
-                                                new ClassTypeImpl(env, t);
-    }
-
-    /**
-     * Returns a collection of types corresponding to a list of javac Type
-     * objects.
-     */
-    public Collection<TypeMirror> getTypes(Iterable<Type> types) {
-        return getTypes(types, TypeMirror.class);
-    }
-
-    /**
-     * Returns a collection of types corresponding to a list of javac Type
-     * objects.  The element type of the result is specified explicitly.
-     */
-    public <T extends TypeMirror> Collection<T> getTypes(Iterable<Type> types,
-                                                         Class<T> resType) {
-        ArrayList<T> res = new ArrayList<T>();
-        for (Type t : types) {
-            TypeMirror mir = getType(t);
-            if (resType.isInstance(mir)) {
-                res.add(resType.cast(mir));
-            }
-        }
-        return res;
-    }
-
-    /**
-     * Returns the string representation of a type.
-     * Bounds of type variables are not included; bounds of wildcard types are.
-     * Type names are qualified.
-     */
-    public String typeToString(Type t) {
-        switch (t.tag) {
-        case ARRAY:
-            return typeToString(env.jctypes.elemtype(t)) + "[]";
-        case CLASS:
-            Type.ClassType c = (Type.ClassType) t;
-            return DeclaredTypeImpl.toString(env, c);
-        case WILDCARD:
-            Type.WildcardType a = (Type.WildcardType) t;
-            return WildcardTypeImpl.toString(env, a);
-        default:
-            return t.tsym.toString();
-        }
-    }
-
-
-    /**
-     * Does a symbol have a given flag?
-     */
-    private static boolean hasFlag(Symbol s, long flag) {
-        return AptEnv.hasFlag(s, flag);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/type/TypeMirrorImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.type;
-
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.*;
-
-
-/**
- * Implementation of TypeMirror
- */
-@SuppressWarnings("deprecation")
-public abstract class TypeMirrorImpl implements TypeMirror {
-
-    protected final AptEnv env;
-    public final Type type;
-
-
-    protected TypeMirrorImpl(AptEnv env, Type type) {
-        this.env = env;
-        this.type = type;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public String toString() {
-        return type.toString();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public boolean equals(Object obj) {
-        if (obj instanceof TypeMirrorImpl) {
-            TypeMirrorImpl that = (TypeMirrorImpl) obj;
-            return env.jctypes.isSameType(this.type, that.type);
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public int hashCode() {
-        return Types.hashCode(type);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/type/TypeVariableImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.type;
-
-
-import java.util.Collection;
-import java.util.ArrayList;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.TypeVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.Symbol.TypeSymbol;
-import com.sun.tools.javac.code.Type;
-
-
-/**
- * Implementation of TypeVariable
- */
-@SuppressWarnings("deprecation")
-public class TypeVariableImpl extends TypeMirrorImpl implements TypeVariable {
-
-    protected Type.TypeVar type;
-
-
-    TypeVariableImpl(AptEnv env, Type.TypeVar type) {
-        super(env, type);
-        this.type = type;
-    }
-
-
-    /**
-     * Returns the simple name of this type variable.  Bounds are
-     * not included.
-     */
-    public String toString() {
-        return type.tsym.name.toString();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public TypeParameterDeclaration getDeclaration() {
-        TypeSymbol sym = type.tsym;
-        return env.declMaker.getTypeParameterDeclaration(sym);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(TypeVisitor v) {
-        v.visitTypeVariable(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/type/VoidTypeImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.type;
-
-
-import com.sun.mirror.type.VoidType;
-import com.sun.mirror.util.TypeVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-
-
-/**
- * Implementation of VoidType.
- */
-@SuppressWarnings("deprecation")
-class VoidTypeImpl extends TypeMirrorImpl implements VoidType {
-
-    VoidTypeImpl(AptEnv env) {
-        super(env, env.symtab.voidType);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(TypeVisitor v) {
-        v.visitVoidType(this);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/type/WildcardTypeImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.type;
-
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.TypeVisitor;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.*;
-
-
-/**
- * Implementation of WildcardType
- */
-@SuppressWarnings("deprecation")
-public class WildcardTypeImpl extends TypeMirrorImpl implements WildcardType {
-
-    protected Type.WildcardType type;
-
-    WildcardTypeImpl(AptEnv env, Type.WildcardType type) {
-        super(env, type);
-        this.type = type;
-    }
-
-
-    /**
-     * Returns the string form of a wildcard type, consisting of "?"
-     * and any "extends" or "super" clause.
-     * Delimiting brackets are not included.  Class names are qualified.
-     */
-    public String toString() {
-        return toString(env, type);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<ReferenceType> getUpperBounds() {
-        return type.isSuperBound()
-                ? Collections.<ReferenceType>emptyList()
-                : typeToCollection(type.type);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Collection<ReferenceType> getLowerBounds() {
-        return type.isExtendsBound()
-                ? Collections.<ReferenceType>emptyList()
-                : typeToCollection(type.type);
-    }
-
-    /**
-     * Gets the ReferenceType for a javac Type object, and returns
-     * it in a singleton collection.  If type is null, returns an empty
-     * collection.
-     */
-    private Collection<ReferenceType> typeToCollection(Type type) {
-        ArrayList<ReferenceType> res = new ArrayList<ReferenceType>(1);
-        if (type != null) {
-            res.add((ReferenceType) env.typeMaker.getType(type));
-        }
-        return res;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void accept(TypeVisitor v) {
-        v.visitWildcardType(this);
-    }
-
-
-    /**
-     * Returns the string form of a wildcard type, consisting of "?"
-     * and any "extends" or "super" clause.
-     * See {@link #toString()} for details.
-     */
-    static String toString(AptEnv env, Type.WildcardType wildThing) {
-        return wildThing.toString();
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/util/DeclarationsImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.util;
-
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.Declarations;
-import com.sun.tools.apt.mirror.declaration.DeclarationImpl;
-import com.sun.tools.apt.mirror.declaration.MethodDeclarationImpl;
-import com.sun.tools.apt.mirror.util.DeclarationsImpl;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.util.Context;
-
-import static com.sun.tools.javac.code.Kinds.*;
-
-
-/**
- * Implementation of Declarations utility methods for annotation processors
- */
-@SuppressWarnings("deprecation")
-public class DeclarationsImpl implements Declarations {
-
-    private final AptEnv env;
-
-
-    private static final Context.Key<Declarations> declarationsKey =
-            new Context.Key<Declarations>();
-
-    public static Declarations instance(Context context) {
-        Declarations instance = context.get(declarationsKey);
-        if (instance == null) {
-            instance = new DeclarationsImpl(context);
-        }
-        return instance;
-    }
-
-    private DeclarationsImpl(Context context) {
-        context.put(declarationsKey, this);
-        env = AptEnv.instance(context);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     * See sections 8.3 and 8.4.6 of
-     * <cite>The Java&trade; Language Specification</cite>
-     */
-    public boolean hides(MemberDeclaration sub, MemberDeclaration sup) {
-        Symbol hider = ((DeclarationImpl) sub).sym;
-        Symbol hidee = ((DeclarationImpl) sup).sym;
-
-        // Fields only hide fields; methods only methods; types only types.
-        // Names must match.  Nothing hides itself (just try it).
-        if (hider == hidee ||
-                hider.kind != hidee.kind ||
-                hider.name != hidee.name) {
-            return false;
-        }
-
-        // Only static methods can hide other methods.
-        // Methods only hide methods with matching signatures.
-        if (hider.kind == MTH) {
-            if ((hider.flags() & Flags.STATIC) == 0 ||
-                        !env.jctypes.isSubSignature(hider.type, hidee.type)) {
-                return false;
-            }
-        }
-
-        // Hider must be in a subclass of hidee's class.
-        // Note that if M1 hides M2, and M2 hides M3, and M3 is accessible
-        // in M1's class, then M1 and M2 both hide M3.
-        ClassSymbol hiderClass = hider.owner.enclClass();
-        ClassSymbol hideeClass = hidee.owner.enclClass();
-        if (hiderClass == null || hideeClass == null ||
-                !hiderClass.isSubClass(hideeClass, env.jctypes)) {
-            return false;
-        }
-
-        // Hidee must be accessible in hider's class.
-        // The method isInheritedIn is poorly named:  it checks only access.
-        return hidee.isInheritedIn(hiderClass, env.jctypes);
-    }
-
-    /**
-     * {@inheritDoc}
-     * See section 8.4.6.1 of
-     * <cite>The Java&trade; Language Specification</cite>
-     */
-    public boolean overrides(MethodDeclaration sub, MethodDeclaration sup) {
-        MethodSymbol overrider = ((MethodDeclarationImpl) sub).sym;
-        MethodSymbol overridee = ((MethodDeclarationImpl) sup).sym;
-        ClassSymbol origin = (ClassSymbol) overrider.owner;
-
-        return overrider.name == overridee.name &&
-
-               // not reflexive as per JLS
-               overrider != overridee &&
-
-               // we don't care if overridee is static, though that wouldn't
-               // compile
-               !overrider.isStatic() &&
-
-               // overrider, whose declaring type is the origin, must be
-               // in a subtype of overridee's type
-               env.jctypes.asSuper(origin.type, overridee.owner) != null &&
-
-               // check access and signatures; don't check return types
-               overrider.overrides(overridee, origin, env.jctypes, false);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/util/SourcePositionImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.util;
-
-
-import java.io.File;
-import javax.tools.JavaFileObject;
-
-import com.sun.mirror.util.SourcePosition;
-import com.sun.tools.javac.util.Position;
-
-
-/**
- * Implementation of SourcePosition
- */
-@SuppressWarnings("deprecation")
-public class SourcePositionImpl implements SourcePosition {
-
-    private JavaFileObject sourcefile;
-    private int pos;            // file position, in javac's internal format
-    private Position.LineMap linemap;
-
-
-    public SourcePositionImpl(JavaFileObject sourcefile, int pos, Position.LineMap linemap) {
-        this.sourcefile = sourcefile;
-        this.pos = pos;
-        this.linemap = linemap;
-        assert sourcefile != null;
-        assert linemap != null;
-    }
-
-    public int getJavacPosition() {
-        return pos;
-    }
-
-    public JavaFileObject getSource() {
-        return sourcefile;
-    }
-
-    /**
-     * Returns a string representation of this position in the
-     * form "sourcefile:line", or "sourcefile" if no line number is available.
-     */
-    public String toString() {
-        int ln = line();
-        return (ln == Position.NOPOS)
-                ? sourcefile.getName()
-                : sourcefile.getName() + ":" + ln;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public File file() {
-        return new File(sourcefile.toUri());
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public int line() {
-        return linemap.getLineNumber(pos);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public int column() {
-        return linemap.getColumnNumber(pos);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/mirror/util/TypesImpl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,229 +0,0 @@
-/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.mirror.util;
-
-
-import java.util.Collection;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.Types;
-import com.sun.tools.apt.mirror.AptEnv;
-import com.sun.tools.apt.mirror.declaration.*;
-import com.sun.tools.apt.mirror.type.TypeMirrorImpl;
-import com.sun.tools.javac.code.BoundKind;
-import com.sun.tools.javac.code.Type;
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.ListBuffer;
-
-
-/**
- * Implementation of Types utility methods for annotation processors
- */
-@SuppressWarnings("deprecation")
-public class TypesImpl implements Types {
-
-    private final AptEnv env;
-
-
-    private static final Context.Key<Types> typesKey =
-            new Context.Key<Types>();
-
-    public static Types instance(Context context) {
-        Types instance = context.get(typesKey);
-        if (instance == null) {
-            instance = new TypesImpl(context);
-        }
-        return instance;
-    }
-
-    private TypesImpl(Context context) {
-        context.put(typesKey, this);
-        env = AptEnv.instance(context);
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public boolean isSubtype(TypeMirror t1, TypeMirror t2) {
-        return env.jctypes.isSubtype(((TypeMirrorImpl) t1).type,
-                                     ((TypeMirrorImpl) t2).type);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public boolean isAssignable(TypeMirror t1, TypeMirror t2) {
-        return env.jctypes.isAssignable(((TypeMirrorImpl) t1).type,
-                                        ((TypeMirrorImpl) t2).type);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public TypeMirror getErasure(TypeMirror t) {
-        return env.typeMaker.getType(
-                env.jctypes.erasure(((TypeMirrorImpl) t).type));
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public PrimitiveType getPrimitiveType(PrimitiveType.Kind kind) {
-        Type prim = null;
-        switch (kind) {
-        case BOOLEAN:   prim = env.symtab.booleanType;  break;
-        case BYTE:      prim = env.symtab.byteType;     break;
-        case SHORT:     prim = env.symtab.shortType;    break;
-        case INT:       prim = env.symtab.intType;      break;
-        case LONG:      prim = env.symtab.longType;     break;
-        case CHAR:      prim = env.symtab.charType;     break;
-        case FLOAT:     prim = env.symtab.floatType;    break;
-        case DOUBLE:    prim = env.symtab.doubleType;   break;
-        default:        assert false;
-        }
-        return (PrimitiveType) env.typeMaker.getType(prim);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public VoidType getVoidType() {
-        return (VoidType) env.typeMaker.getType(env.symtab.voidType);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public ArrayType getArrayType(TypeMirror componentType) {
-        if (componentType instanceof VoidType) {
-            throw new IllegalArgumentException("void");
-        }
-        return (ArrayType) env.typeMaker.getType(
-                new Type.ArrayType(((TypeMirrorImpl) componentType).type,
-                                   env.symtab.arrayClass));
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public TypeVariable getTypeVariable(TypeParameterDeclaration tparam) {
-        return (TypeVariable) env.typeMaker.getType(
-                                ((DeclarationImpl) tparam).sym.type);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public WildcardType getWildcardType(Collection<ReferenceType> upperBounds,
-                                        Collection<ReferenceType> lowerBounds) {
-        BoundKind kind;
-        Type bound;
-        int uppers  = upperBounds.size();
-        int downers = lowerBounds.size();
-
-        if (uppers + downers > 1) {
-            throw new IllegalArgumentException("Multiple bounds not allowed");
-
-        } else if (uppers + downers == 0) {
-            kind = BoundKind.UNBOUND;
-            bound = env.symtab.objectType;
-
-        } else if (uppers == 1) {
-            assert downers == 0;
-            kind = BoundKind.EXTENDS;
-            bound = ((TypeMirrorImpl) upperBounds.iterator().next()).type;
-
-        } else {
-            assert uppers == 0 && downers == 1;
-            kind = BoundKind.SUPER;
-            bound = ((TypeMirrorImpl) lowerBounds.iterator().next()).type;
-        }
-
-        if (bound instanceof Type.WildcardType)
-            throw new IllegalArgumentException(bound.toString());
-
-        return (WildcardType) env.typeMaker.getType(
-                new Type.WildcardType(bound, kind, env.symtab.boundClass));
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public DeclaredType getDeclaredType(TypeDeclaration decl,
-                                        TypeMirror... typeArgs) {
-        ClassSymbol sym = ((TypeDeclarationImpl) decl).sym;
-
-        if (typeArgs.length == 0)
-            return (DeclaredType) env.typeMaker.getType(
-                                        env.jctypes.erasure(sym.type));
-        if (sym.type.getEnclosingType().isParameterized())
-            throw new IllegalArgumentException(decl.toString());
-
-        return getDeclaredType(sym.type.getEnclosingType(), sym, typeArgs);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public DeclaredType getDeclaredType(DeclaredType containing,
-                                        TypeDeclaration decl,
-                                        TypeMirror... typeArgs) {
-        if (containing == null)
-            return getDeclaredType(decl, typeArgs);
-
-        ClassSymbol sym = ((TypeDeclarationImpl) decl).sym;
-        Type outer = ((TypeMirrorImpl) containing).type;
-
-        if (outer.tsym != sym.owner.enclClass())
-            throw new IllegalArgumentException(containing.toString());
-        if (!outer.isParameterized())
-            return getDeclaredType(decl, typeArgs);
-
-        return getDeclaredType(outer, sym, typeArgs);
-    }
-
-    private DeclaredType getDeclaredType(Type outer,
-                                         ClassSymbol sym,
-                                         TypeMirror... typeArgs) {
-        if (typeArgs.length != sym.type.getTypeArguments().length())
-            throw new IllegalArgumentException(
-                                "Incorrect number of type arguments");
-
-        ListBuffer<Type> targs = new ListBuffer<Type>();
-        for (TypeMirror t : typeArgs) {
-            if (!(t instanceof ReferenceType || t instanceof WildcardType))
-                throw new IllegalArgumentException(t.toString());
-            targs.append(((TypeMirrorImpl) t).type);
-        }
-        //### Need a way to check that type args match formals.
-
-        return (DeclaredType) env.typeMaker.getType(
-                new Type.ClassType(outer, targs.toList(), sym));
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/apt/resources/apt.properties	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,184 +0,0 @@
-#
-# Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-apt.msg.usage.header=\
-Usage: {0} <apt and javac options> <source files>\n\
-where apt options include:
-
-apt.msg.usage.footer=\
-See javac -help for information on javac options.
-
-apt.msg.usage.nonstandard.footer=\
-These options are non-standard and subject to change without notice, \nas is the format of their output.
-
-apt.msg.bug=\
-An exception has occurred in apt ({0}). \
-Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport)  \
-after checking the Bug Parade for duplicates. \
-Include your program and the following diagnostic in your report.  Thank you.
-
-## apt options
-
-apt.opt.A=\
-    Options to pass to annotation processors
-apt.opt.arg.class=\
-    <class>
-apt.opt.arg.directory=\
-    Specify where to place processor and javac generated class files
-apt.opt.classpath=\
-    Specify where to find user class files and annotation processor factories
-apt.opt.d=\
-    Specify where to place processor and javac generated class files
-apt.opt.factory=\
-    Name of AnnotationProcessorFactory to use; bypasses default discovery process
-apt.opt.factorypath=\
-    Specify where to find annotation processor factories
-apt.opt.s=\
-    Specify where to place processor generated source files
-apt.opt.help=\
-    Print a synopsis of standard options; use javac -help for more options
-apt.opt.print=\
-    Print out textual representation of specified types
-apt.opt.nocompile=\
-    Do not compile source files to class files
-apt.opt.proc.flag=\
-    [key[=value]]
-apt.opt.version=\
-    Version information
-apt.opt.XListAnnotationTypes=\
-    List found annotation types
-apt.opt.XListDeclarations=\
-    List specified and included declarations
-apt.opt.XPrintAptRounds=\
-    Print information about initial and recursive apt rounds
-apt.opt.XPrintFactoryInfo=\
-    Print information about which annotations a factory is asked to process
-apt.opt.XClassesAsDecls=\
-    Treat both class and source files as declarations to process
-
-##
-## errors
-##
-
-## All errors which do not refer to a particular line in the source code are
-## preceded by this string.
-
-apt.err.error=\
-    error:\u0020
-
-apt.err.unsupported.source.version=\
-    Source release {0} is not supported; use release 5 or earlier
-
-apt.err.unsupported.target.version=\
-    Target release {0} is not supported; use release 5 or earlier
-
-apt.err.BadDeclaration=\
-    Bad declaration created for annotation type {0}
-
-apt.err.CantFindClass=\
-    Could not find class file for {0}
-
-apt.err.DeclarationCreation=\
-    Could not create declaration for annotation type {0}
-
-# Print an error from the Messager
-apt.err.Messager=\
-    {0}
-
-##
-## miscellaneous strings
-##
-
-apt.misc.Deprecation=\
-    \nwarning:\u0020The apt tool and its associated API are planned to be\n\
-    removed in the next major JDK release.  These features have been\n\
-    superseded by javac and the standardized annotation processing API,\n\
-    javax.annotation.processing and javax.lang.model.  Users are\n\
-    recommended to migrate to the annotation processing features of\n\
-    javac; see the javac man page for more information.\n
-
-apt.misc.Problem=\
-    Problem encountered during annotation processing; \nsee stacktrace below for more information.
-
-apt.misc.SunMiscService=\
-    Error finding annotation processor factories; \ncheck META-INF/services information.
-
-# Print a notice from the Messager
-apt.note.Messager=\
-    {0}
-
-##
-## warnings
-##
-
-## All warning messages are preceded by the following string.
-apt.warn.warning=\
-    warning:\u0020
-
-apt.warn.AnnotationsWithoutProcessors=\
-    Annotation types without processors: {0}
-
-apt.warn.BadFactory=\
-    Bad annotation processor factory: {0} 
-
-apt.warn.BadParentDirectory=\
-    Failed to create some parent directory of {0} 
-
-apt.warn.FactoryCantInstantiate=\
-    Could not instantiate an instance of factory ''{0}''.
-
-apt.warn.FactoryWrongType=\
-    Specified factory, ''{0}'', is not an AnnotationProcessorFactory.
-
-apt.warn.FactoryNotFound=\
-    Specified AnnotationProcessorFactory, ''{0}'', not found on search path.
-
-apt.warn.FileReopening=\
-    Attempt to create ''{0}'' multiple times
-
-apt.warn.IllegalFileName=\
-    Cannot create file for illegal name ''{0}''.
-
-apt.warn.MalformedSupportedString=\
-    Malformed string for annotation support, ''{0}'', returned by factory.
-
-apt.warn.NoNewFilesAfterRound=\
-    Cannot create file ''{0}'' after a round has ended.
-
-# Print a warning from the Messager
-apt.warn.Messager=\
-    {0}
-
-apt.warn.NoAnnotationProcessors=\
-    No annotation processors found but annotations present.
-
-apt.warn.NullProcessor=\
-    Factory {0} returned null for an annotation processor.
-
-apt.warn.CorrespondingClassFile=\
-    A class file corresponding to source file ''{0}'' has already been created.
-
-apt.warn.CorrespondingSourceFile=\
-    A source file corresponding to class file ''{0}'' has already been created.
--- a/langtools/src/share/classes/com/sun/tools/apt/resources/apt_ja.properties	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-#
-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-apt.msg.usage.header=\u4F7F\u7528\u65B9\u6CD5: {0} <apt and javac options> <source files>\n\u6B21\u306Eapt\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059:
-
-apt.msg.usage.footer=javac\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u3064\u3044\u3066\u306F\u3001javac -help\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-
-apt.msg.usage.nonstandard.footer=\u3053\u308C\u3089\u306F\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3042\u308A\u3001\u8868\u793A\u5F62\u5F0F\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\n\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002
-
-apt.msg.bug=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3067\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F({0})\u3002Bug Parade\u306B\u540C\u3058\u30D0\u30B0\u304C\u767B\u9332\u3055\u308C\u3066\u3044\u306A\u3044\u3053\u3068\u3092\u3054\u78BA\u8A8D\u306E\u4E0A\u3001Java Developer Connection(http://java.sun.com/webapps/bugreport)\u3067\u30D0\u30B0\u306E\u767B\u9332\u3092\u304A\u9858\u3044\u3044\u305F\u3057\u307E\u3059\u3002\u30EC\u30DD\u30FC\u30C8\u306B\u306F\u3001\u305D\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u3068\u4E0B\u8A18\u306E\u8A3A\u65AD\u5185\u5BB9\u3092\u542B\u3081\u3066\u304F\u3060\u3055\u3044\u3002\u3054\u5354\u529B\u3042\u308A\u304C\u3068\u3046\u3054\u3056\u3044\u307E\u3059\u3002
-
-## apt options
-
-apt.opt.A=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u306B\u6E21\u3055\u308C\u308B\u30AA\u30D7\u30B7\u30E7\u30F3
-apt.opt.arg.class=<class>
-apt.opt.arg.directory=\u30D7\u30ED\u30BB\u30C3\u30B5\u304A\u3088\u3073javac\u304C\u751F\u6210\u3057\u305F\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u304F\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B
-apt.opt.classpath=\u30E6\u30FC\u30B6\u30FC\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304A\u3088\u3073\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u30FB\u30D5\u30A1\u30AF\u30C8\u30EA\u3092\u691C\u7D22\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B
-apt.opt.d=\u30D7\u30ED\u30BB\u30C3\u30B5\u304A\u3088\u3073javac\u304C\u751F\u6210\u3057\u305F\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u304F\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B
-apt.opt.factory=\u4F7F\u7528\u3059\u308BAnnotationProcessorFactory\u306E\u540D\u524D\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u691C\u51FA\u51E6\u7406\u3092\u30D0\u30A4\u30D1\u30B9
-apt.opt.factorypath=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u30FB\u30D5\u30A1\u30AF\u30C8\u30EA\u306E\u691C\u7D22\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B
-apt.opt.s=\u30D7\u30ED\u30BB\u30C3\u30B5\u304C\u751F\u6210\u3057\u305F\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u304F\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B
-apt.opt.help=\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u6982\u8981\u3092\u51FA\u529B\u3059\u308B\u3002\u8A73\u7D30\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u3064\u3044\u3066\u306Fjavac -help\u3092\u53C2\u7167
-apt.opt.print=\u6307\u5B9A\u3057\u305F\u578B\u306E\u30C6\u30AD\u30B9\u30C8\u8868\u793A\u3092\u51FA\u529B\u3059\u308B
-apt.opt.nocompile=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306B\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u306A\u3044
-apt.opt.proc.flag=[key[=value]]
-apt.opt.version=\u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831
-apt.opt.XListAnnotationTypes=\u898B\u3064\u304B\u3063\u305F\u6CE8\u91C8\u578B\u3092\u30EA\u30B9\u30C8\u3059\u308B
-apt.opt.XListDeclarations=\u6307\u5B9A\u3055\u308C\u305F\u5BA3\u8A00\u304A\u3088\u3073\u30A4\u30F3\u30AF\u30EB\u30FC\u30C9\u3055\u308C\u305F\u5BA3\u8A00\u3092\u30EA\u30B9\u30C8\u3059\u308B
-apt.opt.XPrintAptRounds=\u521D\u671F\u304A\u3088\u3073\u518D\u5E30apt\u5F80\u5FA9\u306B\u3064\u3044\u3066\u306E\u60C5\u5831\u3092\u5370\u5237\u3059\u308B
-apt.opt.XPrintFactoryInfo=\u30D5\u30A1\u30AF\u30C8\u30EA\u304C\u51E6\u7406\u3092\u4F9D\u983C\u3055\u308C\u308B\u6CE8\u91C8\u306B\u3064\u3044\u3066\u306E\u60C5\u5831\u3092\u5370\u5237\u3059\u308B
-apt.opt.XClassesAsDecls=\u30AF\u30E9\u30B9\u3068\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u4E21\u65B9\u3068\u3082\u51E6\u7406\u3059\u308B\u5BA3\u8A00\u3068\u3057\u3066\u51E6\u7406
-
-##
-## errors
-##
-
-## All errors which do not refer to a particular line in the source code are
-## preceded by this string.
-
-apt.err.error=\u30A8\u30E9\u30FC:\u0020
-
-apt.err.unsupported.source.version=\u30BD\u30FC\u30B9\u30FB\u30EA\u30EA\u30FC\u30B9{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30EA\u30EA\u30FC\u30B95\u4EE5\u524D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044
-
-apt.err.unsupported.target.version=\u30BF\u30FC\u30B2\u30C3\u30C8\u30FB\u30EA\u30EA\u30FC\u30B9{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30EA\u30EA\u30FC\u30B95\u4EE5\u524D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044
-
-apt.err.BadDeclaration=\u6CE8\u91C8\u578B{0}\u7528\u306B\u4F5C\u6210\u3055\u308C\u305F\u7121\u52B9\u306A\u5BA3\u8A00\u3067\u3059
-
-apt.err.CantFindClass={0}\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
-
-apt.err.DeclarationCreation=\u6CE8\u91C8\u578B{0}\u7528\u306B\u5BA3\u8A00\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
-
-# Print an error from the Messager
-apt.err.Messager={0}
-
-##
-## miscellaneous strings
-##
-
-apt.misc.Deprecation=\n\u8B66\u544A: apt\u30C4\u30FC\u30EB\u3068\u30C4\u30FC\u30EB\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u305FAPI\u306F\u3001\u6B21\u56DE\u306EJDK\n\u30E1\u30B8\u30E3\u30FC\u30FB\u30EA\u30EA\u30FC\u30B9\u3067\u524A\u9664\u3055\u308C\u308B\u4E88\u5B9A\u3067\u3059\u3002\u3053\u308C\u3089\u306E\u6A5F\u80FD\u306Fjavac\u304A\u3088\u3073\n\u6A19\u6E96\u5316\u3055\u308C\u305F\u6CE8\u91C8\u51E6\u7406API\u306Ejavax.annotation.processing\u304A\u3088\u3073javax.lang.model\n\u306B\u3088\u3063\u3066\u7F6E\u304D\u63DB\u3048\u3089\u308C\u307E\u3057\u305F\u3002\u30E6\u30FC\u30B6\u30FC\u306Fjavac\u306E\u6CE8\u91C8\u51E6\u7406\u6A5F\u80FD\u306B\n\u79FB\u884C\u3059\u308B\u3053\u3068\u3092\u304A\u85A6\u3081\u3057\u307E\u3059\u3002\n\u8A73\u7D30\u306F\u3001javac man\u30DA\u30FC\u30B8\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n
-
-apt.misc.Problem=\u6CE8\u91C8\u51E6\u7406\u4E2D\u306B\u554F\u984C\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002\n\u8A73\u7D30\u306F\u3001\u4E0B\u8A18\u306E\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-
-apt.misc.SunMiscService=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u30FB\u30D5\u30A1\u30AF\u30C8\u30EA\u306E\u691C\u7D22\u30A8\u30E9\u30FC\u3067\u3059\u3002\nMETA-INF/services\u5185\u306E\u60C5\u5831\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-
-# Print a notice from the Messager
-apt.note.Messager={0}
-
-##
-## warnings
-##
-
-## All warning messages are preceded by the following string.
-apt.warn.warning=\u8B66\u544A:
-
-apt.warn.AnnotationsWithoutProcessors=\u30D7\u30ED\u30BB\u30C3\u30B5\u306A\u3057\u306E\u6CE8\u91C8\u578B\u3067\u3059: {0}
-
-apt.warn.BadFactory=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u30FB\u30D5\u30A1\u30AF\u30C8\u30EA\u304C\u7121\u52B9\u3067\u3059: {0} 
-
-apt.warn.BadParentDirectory={0}\u306E\u3044\u304F\u3064\u304B\u306E\u89AA\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F 
-
-apt.warn.FactoryCantInstantiate=\u30D5\u30A1\u30AF\u30C8\u30EA''{0}''\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002
-
-apt.warn.FactoryWrongType=\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30AF\u30C8\u30EA''{0}''\u306FAnnotationProcessorFactory\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
-
-apt.warn.FactoryNotFound=\u6307\u5B9A\u3057\u305FAnnotationProcessorFactory ''{0}''\u306F\u691C\u7D22\u30D1\u30B9\u3067\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002
-
-apt.warn.FileReopening=''{0}''\u3092\u8907\u6570\u56DE\u4F5C\u6210\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307E\u3059
-
-apt.warn.IllegalFileName=\u7121\u52B9\u306A\u540D\u524D''{0}''\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002
-
-apt.warn.MalformedSupportedString=\u30D5\u30A1\u30AF\u30C8\u30EA\u304C\u8FD4\u3057\u305F\u6CE8\u91C8\u30B5\u30DD\u30FC\u30C8''{0}''\u306E\u6587\u5B57\u5217\u304C\u4E0D\u6B63\u3067\u3059\u3002
-
-apt.warn.NoNewFilesAfterRound=\u5F80\u5FA9\u306E\u7D42\u4E86\u5F8C\u306B\u30D5\u30A1\u30A4\u30EB''{0}''\u3092\u4F5C\u6210\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
-
-# Print a warning from the Messager
-apt.warn.Messager={0}
-
-apt.warn.NoAnnotationProcessors=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u306F\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u304C\u3001\u6CE8\u91C8\u306F\u5B58\u5728\u3057\u307E\u3059\u3002
-
-apt.warn.NullProcessor=\u30D5\u30A1\u30AF\u30C8\u30EA{0}\u304C\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u306Bnull\u3092\u8FD4\u3057\u307E\u3057\u305F\u3002
-
-apt.warn.CorrespondingClassFile=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB''{0}''\u306B\u5BFE\u5FDC\u3059\u308B\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u3059\u3002
-
-apt.warn.CorrespondingSourceFile=\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB''{0}''\u306B\u5BFE\u5FDC\u3059\u308B\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u3059\u3002
--- a/langtools/src/share/classes/com/sun/tools/apt/resources/apt_zh_CN.properties	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-#
-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-apt.msg.usage.header=\u7528\u6CD5: {0} <apt and javac options> <source files>\n\u5176\u4E2D, apt \u9009\u9879\u5305\u62EC:
-
-apt.msg.usage.footer=\u6709\u5173 javac \u9009\u9879\u7684\u4FE1\u606F, \u8BF7\u53C2\u9605 javac -help\u3002
-
-apt.msg.usage.nonstandard.footer=\u8FD9\u4E9B\u9009\u9879\u53CA\u5176\u8F93\u51FA\u683C\u5F0F\u90FD\u4E0D\u662F\u6807\u51C6\u7684, \n\u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002
-
-apt.msg.bug=apt ({0}) \u4E2D\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF\u3002 \u5982\u679C\u5728 Bug Parade \u4E2D\u6CA1\u6709\u627E\u5230\u8BE5\u9519\u8BEF, \u8BF7\u5728 Java Developer Connection (http://java.sun.com/webapps/bugreport) \u4E2D\u5EFA\u7ACB Bug\u3002\u8BF7\u5728\u62A5\u544A\u4E2D\u9644\u4E0A\u60A8\u7684\u7A0B\u5E8F\u548C\u4EE5\u4E0B\u8BCA\u65AD\u4FE1\u606F\u3002\u8C22\u8C22\u3002
-
-## apt options
-
-apt.opt.A=\u4F20\u9012\u7ED9\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u7684\u9009\u9879
-apt.opt.arg.class=<\u7C7B>
-apt.opt.arg.directory=\u6307\u5B9A\u653E\u7F6E\u5904\u7406\u7A0B\u5E8F\u548C javac \u751F\u6210\u7684\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E
-apt.opt.classpath=\u6307\u5B9A\u67E5\u627E\u7528\u6237\u7C7B\u6587\u4EF6\u548C\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u5DE5\u5382\u7684\u4F4D\u7F6E
-apt.opt.d=\u6307\u5B9A\u653E\u7F6E\u5904\u7406\u7A0B\u5E8F\u548C javac \u751F\u6210\u7684\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E
-apt.opt.factory=\u8981\u4F7F\u7528\u7684 AnnotationProcessorFactory \u7684\u540D\u79F0; \u7ED5\u8FC7\u9ED8\u8BA4\u7684\u641C\u7D22\u8FDB\u7A0B
-apt.opt.factorypath=\u6307\u5B9A\u67E5\u627E\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u5DE5\u5382\u7684\u4F4D\u7F6E
-apt.opt.s=\u6307\u5B9A\u653E\u7F6E\u5904\u7406\u7A0B\u5E8F\u751F\u6210\u7684\u6E90\u6587\u4EF6\u7684\u4F4D\u7F6E
-apt.opt.help=\u8F93\u51FA\u6807\u51C6\u9009\u9879\u7684\u63D0\u8981; \u4F7F\u7528 javac -help \u53EF\u4EE5\u5F97\u5230\u66F4\u591A\u9009\u9879
-apt.opt.print=\u8F93\u51FA\u6307\u5B9A\u7C7B\u578B\u7684\u6587\u672C\u8868\u793A
-apt.opt.nocompile=\u8BF7\u52FF\u5C06\u6E90\u6587\u4EF6\u7F16\u8BD1\u4E3A\u7C7B\u6587\u4EF6
-apt.opt.proc.flag=[\u5173\u952E\u5B57[=\u503C]]
-apt.opt.version=\u7248\u672C\u4FE1\u606F
-apt.opt.XListAnnotationTypes=\u5217\u51FA\u627E\u5230\u7684\u6CE8\u91CA\u7C7B\u578B
-apt.opt.XListDeclarations=\u5217\u51FA\u6307\u5B9A\u548C\u5305\u542B\u7684\u58F0\u660E
-apt.opt.XPrintAptRounds=\u8F93\u51FA\u6709\u5173\u521D\u59CB\u548C\u9012\u5F52 apt \u5FAA\u73AF\u7684\u4FE1\u606F
-apt.opt.XPrintFactoryInfo=\u8F93\u51FA\u6709\u5173\u8BF7\u6C42\u5DE5\u5382\u5904\u7406\u54EA\u4E9B\u6CE8\u91CA\u7684\u4FE1\u606F
-apt.opt.XClassesAsDecls=\u5C06\u7C7B\u6587\u4EF6\u548C\u6E90\u6587\u4EF6\u90FD\u89C6\u4E3A\u8981\u5904\u7406\u7684\u58F0\u660E
-
-##
-## errors
-##
-
-## All errors which do not refer to a particular line in the source code are
-## preceded by this string.
-
-apt.err.error=\u9519\u8BEF:\u0020
-
-apt.err.unsupported.source.version=\u4E0D\u652F\u6301\u6E90\u53D1\u884C\u7248 {0}; \u8BF7\u4F7F\u7528\u53D1\u884C\u7248 5 \u6216\u65E9\u671F\u53D1\u884C\u7248
-
-apt.err.unsupported.target.version=\u4E0D\u652F\u6301\u76EE\u6807\u53D1\u884C\u7248 {0}; \u8BF7\u4F7F\u7528\u53D1\u884C\u7248 5 \u6216\u65E9\u671F\u53D1\u884C\u7248
-
-apt.err.BadDeclaration=\u4E3A\u6CE8\u91CA\u7C7B\u578B{0}\u521B\u5EFA\u7684\u58F0\u660E\u51FA\u73B0\u9519\u8BEF
-
-apt.err.CantFindClass=\u627E\u4E0D\u5230{0}\u7684\u7C7B\u6587\u4EF6
-
-apt.err.DeclarationCreation=\u65E0\u6CD5\u4E3A\u6CE8\u91CA\u7C7B\u578B{0}\u521B\u5EFA\u58F0\u660E
-
-# Print an error from the Messager
-apt.err.Messager={0}
-
-##
-## miscellaneous strings
-##
-
-apt.misc.Deprecation=\n\u8B66\u544A:\u0020\u5DF2\u8BA1\u5212\u5728\u4E0B\u4E00\u4E2A JDK \u4E3B\u53D1\u884C\u7248\u4E2D\n\u5220\u9664 apt \u5DE5\u5177\u53CA\u5176\u5173\u8054\u7684 API\u3002\u8FD9\u4E9B\u529F\u80FD\n\u5DF2\u88AB javac \u548C\u6807\u51C6\u6CE8\u91CA\u5904\u7406 API,\njavax.annotation.processing \u548C javax.lang.model \u53D6\u4EE3\u3002\u5EFA\u8BAE\u7528\u6237\n\u79FB\u690D\u5230 javac \u7684\u6CE8\u91CA\u5904\u7406\u529F\u80FD;\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605 javac \u5E2E\u52A9\u9875\u3002\n
-
-apt.misc.Problem=\u6CE8\u91CA\u5904\u7406\u8FC7\u7A0B\u4E2D\u9047\u5230\u95EE\u9898; \n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u4E0B\u9762\u7684\u5806\u6808\u8DDF\u8E2A\u3002
-
-apt.misc.SunMiscService=\u67E5\u627E\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u5DE5\u5382\u65F6\u51FA\u9519; \n\u8BF7\u67E5\u770B META-INF/\u670D\u52A1\u4FE1\u606F\u3002
-
-# Print a notice from the Messager
-apt.note.Messager={0}
-
-##
-## warnings
-##
-
-## All warning messages are preceded by the following string.
-apt.warn.warning=\u8B66\u544A:\u0020
-
-apt.warn.AnnotationsWithoutProcessors=\u4E0D\u5E26\u5904\u7406\u7A0B\u5E8F\u7684\u6CE8\u91CA\u7C7B\u578B: {0}
-
-apt.warn.BadFactory=\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u5DE5\u5382\u51FA\u73B0\u9519\u8BEF: {0} 
-
-apt.warn.BadParentDirectory=\u65E0\u6CD5\u521B\u5EFA{0}\u7684\u67D0\u4E9B\u7236\u76EE\u5F55 
-
-apt.warn.FactoryCantInstantiate=\u65E0\u6CD5\u5B9E\u4F8B\u5316\u5DE5\u5382 ''{0}'' \u7684\u5B9E\u4F8B\u3002
-
-apt.warn.FactoryWrongType=\u6307\u5B9A\u7684\u5DE5\u5382 ''{0}'' \u4E0D\u662F AnnotationProcessorFactory\u3002
-
-apt.warn.FactoryNotFound=\u5728\u641C\u7D22\u8DEF\u5F84\u4E2D\u627E\u4E0D\u5230\u6307\u5B9A\u7684 AnnotationProcessorFactory ''{0}''\u3002
-
-apt.warn.FileReopening=\u5C1D\u8BD5\u591A\u6B21\u521B\u5EFA ''{0}''
-
-apt.warn.IllegalFileName=\u65E0\u6CD5\u521B\u5EFA\u5E26\u6709\u975E\u6CD5\u540D\u79F0 ''{0}'' \u7684\u6587\u4EF6\u3002
-
-apt.warn.MalformedSupportedString=\u5DE5\u5382\u8FD4\u56DE\u683C\u5F0F\u9519\u8BEF\u7684\u6CE8\u91CA\u652F\u6301\u5B57\u7B26\u4E32 ''{0}''\u3002
-
-apt.warn.NoNewFilesAfterRound=\u5FAA\u73AF\u7ED3\u675F\u540E\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6 ''{0}''\u3002
-
-# Print a warning from the Messager
-apt.warn.Messager={0}
-
-apt.warn.NoAnnotationProcessors=\u627E\u4E0D\u5230\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F, \u4F46\u5B58\u5728\u6CE8\u91CA\u3002
-
-apt.warn.NullProcessor=\u5BF9\u4E8E\u67D0\u4E2A\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F, \u5DE5\u5382{0}\u8FD4\u56DE\u7684\u503C\u4E3A\u7A7A\u503C\u3002
-
-apt.warn.CorrespondingClassFile=\u5DF2\u521B\u5EFA\u4E0E\u6E90\u6587\u4EF6 ''{0}'' \u76F8\u5BF9\u5E94\u7684\u7C7B\u6587\u4EF6\u3002
-
-apt.warn.CorrespondingSourceFile=\u5DF2\u521B\u5EFA\u4E0E\u7C7B\u6587\u4EF6 ''{0}'' \u76F8\u5BF9\u5E94\u7684\u6E90\u6587\u4EF6\u3002
--- a/langtools/src/share/classes/com/sun/tools/apt/util/Bark.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,174 +0,0 @@
-/*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.apt.util;
-
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.JCDiagnostic;
-import com.sun.tools.javac.util.JCDiagnostic.SimpleDiagnosticPosition;
-import com.sun.tools.javac.util.Log;
-import com.sun.tools.javac.util.JavacMessages;
-import com.sun.tools.javac.util.Position;
-
-/** A subtype of Log for use in APT.
- *
- *  <p><b>This is NOT part of any supported API.
- *  If you write code that depends on this, you do so at your own risk.
- *  This code and its internal interfaces are subject to change or
- *  deletion without notice.</b>
- */
-public class Bark extends Log {
-    /** The context key for the bark. */
-    protected static final Context.Key<Bark> barkKey =
-        new Context.Key<Bark>();
-
-    /**
-     * Preregisters factories to create and use a Bark object for use as
-     * both a Log and a Bark.
-     */
-    public static void preRegister(Context context) {
-        context.put(barkKey, new Context.Factory<Bark>() {
-            public Bark make(Context c) {
-                return new Bark(c);
-            }
-        });
-        context.put(Log.logKey, new Context.Factory<Log>() {
-            public Log make(Context c) {
-                return Bark.instance(c);
-            }
-        });
-    }
-
-    /** Get the Bark instance for this context. */
-    public static Bark instance(Context context) {
-        Bark instance = context.get(barkKey);
-        if (instance == null)
-            instance = new Bark(context);
-        return instance;
-    }
-
-    /** Specifies whether or not to ignore any diagnostics that are reported.
-     */
-    private boolean ignoreDiagnostics;
-
-    /**
-     * Factory for APT-specific diagnostics.
-     */
-    private JCDiagnostic.Factory aptDiags;
-
-
-    /**
-     * Creates a Bark.
-     */
-    protected Bark(Context context) {
-        super(context); // will register this object in context with Log.logKey
-        context.put(barkKey, this);
-
-        // register additional resource bundle for APT messages.
-        JavacMessages aptMessages = JavacMessages.instance(context);
-        aptMessages.add("com.sun.tools.apt.resources.apt");
-        aptDiags = new JCDiagnostic.Factory(aptMessages, "apt");
-
-        multipleErrors = true;
-    }
-
-    /**
-     * Sets a flag indicating whether or not to ignore all diagnostics.
-     * When ignored, they are not reported to the output writers, not are they
-     * counted in the various counters.
-     * @param b If true, subsequent diagnostics will be ignored.
-     * @return the previous state of the flag
-     */
-    public boolean setDiagnosticsIgnored(boolean b) {
-        boolean prev = ignoreDiagnostics;
-        ignoreDiagnostics = b;
-        return prev;
-    }
-
-    /**
-     * Report a diagnostic if they are not currently being ignored.
-     */
-    @Override
-    public void report(JCDiagnostic diagnostic) {
-        if (ignoreDiagnostics)
-            return;
-
-        super.report(diagnostic);
-    }
-
-    /** Report an error.
-     *  @param key    The key for the localized error message.
-     *  @param args   Fields of the error message.
-     */
-    public void aptError(String key, Object... args) {
-        aptError(Position.NOPOS, key, args);
-    }
-
-    /** Report an error, unless another error was already reported at same
-     *  source position.
-     *  @param pos    The source position at which to report the error.
-     *  @param key    The key for the localized error message.
-     *  @param args   Fields of the error message.
-     */
-    public void aptError(int pos, String key, Object ... args) {
-        report(aptDiags.error(source, new SimpleDiagnosticPosition(pos), key, args));
-    }
-
-    /** Report a warning, unless suppressed by the  -nowarn option or the
-     *  maximum number of warnings has been reached.
-     *  @param key    The key for the localized warning message.
-     *  @param args   Fields of the warning message.
-     */
-    public void aptWarning(String key, Object... args) {
-        aptWarning(Position.NOPOS, key, args);
-    }
-
-    /** Report a warning, unless suppressed by the  -nowarn option or the
-     *  maximum number of warnings has been reached.
-     *  @param pos    The source position at which to report the warning.
-     *  @param key    The key for the localized warning message.
-     *  @param args   Fields of the warning message.
-     */
-    public void aptWarning(int pos, String key, Object ... args) {
-        report(aptDiags.warning(source, new SimpleDiagnosticPosition(pos), key, args));
-    }
-
-    /** Report a note, unless suppressed by the  -nowarn option.
-     *  @param key    The key for the localized note message.
-     *  @param args   Fields of the note message.
-     */
-    public void aptNote(String key, Object... args) {
-        aptNote(Position.NOPOS, key, args);
-    }
-
-    /** Report a note, unless suppressed by the  -nowarn option.
-     *  @param pos    The source position at which to report the note.
-     *  @param key    The key for the localized note message.
-     *  @param args   Fields of the note message.
-     */
-    public void aptNote(int pos, String key, Object ... args) {
-        report(aptDiags.note(source, new SimpleDiagnosticPosition(pos), key, args));
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java	Wed Feb 22 16:52:50 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -2114,25 +2114,26 @@
      */
     void checkOverrideClashes(DiagnosticPosition pos, Type site, MethodSymbol sym) {
          ClashFilter cf = new ClashFilter(site);
-         //for each method m1 that is a member of 'site'...
-         for (Symbol s1 : types.membersClosure(site, false).getElementsByName(sym.name, cf)) {
-            //...find another method m2 that is overridden (directly or indirectly)
-            //by method 'sym' in 'site'
-            for (Symbol s2 : types.membersClosure(site, false).getElementsByName(sym.name, cf)) {
-                if (s1 == s2 || !sym.overrides(s2, site.tsym, types, false)) continue;
+        //for each method m1 that is overridden (directly or indirectly)
+        //by method 'sym' in 'site'...
+        for (Symbol m1 : types.membersClosure(site, false).getElementsByName(sym.name, cf)) {
+            if (!sym.overrides(m1, site.tsym, types, false)) continue;
+             //...check each method m2 that is a member of 'site'
+             for (Symbol m2 : types.membersClosure(site, false).getElementsByName(sym.name, cf)) {
+                if (m2 == m1) continue;
                 //if (i) the signature of 'sym' is not a subsignature of m1 (seen as
                 //a member of 'site') and (ii) m1 has the same erasure as m2, issue an error
-                if (!types.isSubSignature(sym.type, types.memberType(site, s1), false) &&
-                        types.hasSameArgs(s1.erasure(types), s2.erasure(types))) {
+                if (!types.isSubSignature(sym.type, types.memberType(site, m2), false) &&
+                        types.hasSameArgs(m2.erasure(types), m1.erasure(types))) {
                     sym.flags_field |= CLASH;
-                    String key = s2 == sym ?
+                    String key = m1 == sym ?
                             "name.clash.same.erasure.no.override" :
                             "name.clash.same.erasure.no.override.1";
                     log.error(pos,
                             key,
                             sym, sym.location(),
-                            s1, s1.location(),
-                            s2, s2.location());
+                            m2, m2.location(),
+                            m1, m1.location());
                     return;
                 }
             }
--- a/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java	Tue Feb 21 05:44:29 2012 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java	Wed Feb 22 16:52:50 2012 -0800
@@ -1077,7 +1077,9 @@
                     boolean errors = false;
                     for (String nameStr : classnames) {
                         Symbol sym = resolveBinaryNameOrIdent(nameStr);
-                        if (sym == null || (sym.kind == Kinds.PCK && !processPcks)) {
+                        if (sym == null ||
+                            (sym.kind == Kinds.PCK && !processPcks) ||
+                            sym.kind == Kinds.ABSENT_TYP) {
                             log.error("proc.cant.find.class", nameStr);
                             errors = true;
                             continue;
--- a/langtools/test/tools/apt/Basics/Aggregate.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-public class Aggregate {
-    static {
-        System.out.println("xxyzzy");
-    }
-
-    private Aggregate() {}
-
-    private static double hypot(double Berkeley, double SantaCruz) {
-        return 0.0;
-    }
-
-    public int hashcode() {return 42;}
-    public boolean equals(Aggregate a) {return this == a;}
-
-    public static void main(String[] argv) {
-        System.out.println("Hello World.");
-    }
-}
--- a/langtools/test/tools/apt/Basics/ClassAnnotations.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import annot.*;
-import annot.annot2.*;
-
-@MySimple("value") @MyMarker
-@AnnotMarker @AnnotSimple("foo")
-@AnnotMarker2 @AnnotSimple2("bar")
-public class ClassAnnotations {
-    static double d;
-
-    public void foo() {
-        return;
-    }
-
-    private double bar(int baz) {
-        @AnnotShangri_la
-        int local = 0;
-        return (double) baz;
-    }
-
-    static class NestedClass {
-        protected int field;
-    }
-}
--- a/langtools/test/tools/apt/Basics/FreshnessApf.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-
-import static java.util.Collections.*;
-import static com.sun.mirror.util.DeclarationVisitors.*;
-
-/*
- * Indirect test of whether source or class files are used to provide
- * declaration information.
- */
-public class FreshnessApf implements AnnotationProcessorFactory {
-    // Process any set of annotations
-    private static final Collection<String> supportedAnnotations
-        = unmodifiableCollection(Arrays.asList("*"));
-
-    // No supported options
-    private static final Collection<String> supportedOptions = emptySet();
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedAnnotations;
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public AnnotationProcessor getProcessorFor(
-            Set<AnnotationTypeDeclaration> atds,
-            AnnotationProcessorEnvironment env) {
-        return new FreshnessAp(env);
-    }
-
-    private static class FreshnessAp implements AnnotationProcessor {
-        private final AnnotationProcessorEnvironment env;
-        FreshnessAp(AnnotationProcessorEnvironment env) {
-            this.env = env;
-        }
-
-        public void process() {
-            System.out.println("Testing for freshness.");
-            boolean empty = true;
-            for (TypeDeclaration typeDecl : env.getSpecifiedTypeDeclarations()) {
-                for (FieldDeclaration fieldDecl: typeDecl.getFields() ) {
-                    empty = false;
-                    System.out.println(typeDecl.getQualifiedName() +
-                                       "." + fieldDecl.getSimpleName());
-
-                    // Verify the declaration for the type of the
-                    // field is a class with an annotation.
-                    System.out.println(((DeclaredType) fieldDecl.getType()).getDeclaration().getAnnotationMirrors());
-                    if (((DeclaredType) fieldDecl.getType()).getDeclaration().getAnnotationMirrors().size() == 0)
-                        env.getMessager().printError("Expected an annotation.");
-                }
-            }
-
-            if (empty)
-                env.getMessager().printError("No fields encountered.");
-        }
-    }
-}
--- a/langtools/test/tools/apt/Basics/GenClass.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * A trivial generic class to test the fix for 5018369.
- */
-
-class GenClass<T> {
-}
--- a/langtools/test/tools/apt/Basics/Indirect.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * Class that is used to provide a pointer to another class
- * declaration.
- */
-public class Indirect {
-    Milk skim = null;
-}
--- a/langtools/test/tools/apt/Basics/Lacuna.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-class Lacuna extends Missing {}
--- a/langtools/test/tools/apt/Basics/MethodAnnotations.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import annot.*;
-import annot.annot2.*;
-
-public class MethodAnnotations {
-    static double d;
-
-    @MySimple("value") @MyMarker
-    @AnnotMarker @AnnotSimple("foo")
-    @AnnotMarker2 @AnnotSimple2("bar")
-    public void foo() {
-        return;
-    }
-
-    private double bar(int baz) {
-        @AnnotShangri_la
-        int local = 0;
-        return (double) baz;
-    }
-
-    static class NestedClass {
-        protected int field;
-    }
-}
--- a/langtools/test/tools/apt/Basics/Milk.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import java.lang.annotation.*;
-
-@Fresh
-public class Milk {
-    // Moo.
-}
-
-@Retention(RetentionPolicy.SOURCE)
-@interface Fresh {
-}
--- a/langtools/test/tools/apt/Basics/MisMatch.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-
-/**
- * Class that uses constructs whose language and vm interpretation
- * differ.
- */
-public class MisMatch {
-    static final int constant = 3;
-    static int notConstant = 4;
-    private static strictfp class NestedClass {
-    }
-
-    protected abstract class AbstractNestedClass {
-        /**
-         * Another doc comment.
-         *
-         * This one has multiple lines.
-         */
-        void myMethod() throws RuntimeException , Error {}
-
-        abstract void myAbstractMethod();
-    }
-
-    void VarArgsMethod1(Number... num) {
-        ;
-    }
-
-    void VarArgsMethod2(float f, double d, Number... num) {
-        ;
-    }
-}
-
-@interface Colors {
-}
-
-interface Inter {
-    void interfaceMethod();
-}
-
-enum MyEnum {
-    RED,
-    GREEN,
-    BLUE;
-}
--- a/langtools/test/tools/apt/Basics/Misc.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * Class with miscellaneous structures to exercise printing.
- */
-
-import java.util.Collection;
-
-public final class  Misc<T> implements Marker2, Marker3 {
-    private static final long longConstant = Long.MAX_VALUE;
-
-    private static final String asciispecials = "\t\n\u0007";
-
-    public void covar(Collection<? extends T> s) {return;}
-
-    public void contravar(Collection<? super T> s) {return;}
-
-    public <S> S varUse(int i) {return null;}
-
-    Object o = (new Object() {});       // verify fix for 5019108
-}
-
-interface Marker1 {}
-
-interface Marker2 extends Marker1 {}
-
-interface Marker3 {}
--- a/langtools/test/tools/apt/Basics/MyMarker.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-
-public @interface MyMarker {
-}
--- a/langtools/test/tools/apt/Basics/MySimple.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-
-public @interface MySimple {
-    String value() default "default";
-}
--- a/langtools/test/tools/apt/Basics/NestedClassAnnotations.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import annot.*;
-import annot.annot2.*;
-
-public class NestedClassAnnotations {
-    static double d;
-
-    public void foo() {
-        return;
-    }
-
-    public static void baz() {
-    }
-
-    private double bar(int baz) {
-        @AnnotShangri_la
-        int local = 0;
-        return (double) baz;
-    }
-
-    @MySimple("value") @MyMarker
-    @AnnotMarker @AnnotSimple("foo")
-    @AnnotMarker2 @AnnotSimple2("bar")
-    static class NestedClass {
-        protected int field;
-    }
-}
--- a/langtools/test/tools/apt/Basics/ParameterAnnotations.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import annot.*;
-import annot.annot2.*;
-
-public class ParameterAnnotations {
-    static double d;
-
-    public void foo() {
-        return;
-    }
-
-    private double bar(@MySimple("value") @MyMarker
-                       @AnnotMarker @AnnotSimple("foo")
-                       @AnnotMarker2 @AnnotSimple2("bar")
-                       int baz) {
-        @AnnotShangri_la
-        int local = 0;
-        return (double) baz;
-    }
-
-    static class NestedClass {
-        protected int field;
-    }
-}
--- a/langtools/test/tools/apt/Basics/StaticFieldAnnotations.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import annot.*;
-import annot.annot2.*;
-
-public class StaticFieldAnnotations {
-    @MySimple("value") @MyMarker
-    @AnnotMarker @AnnotSimple("foo")
-    @AnnotMarker2 @AnnotSimple2("bar")
-    static double d;
-
-    public void foo() {
-        return;
-    }
-
-    private double bar(int baz) {
-        @AnnotShangri_la
-        int local = 0;
-        return (double) baz;
-    }
-
-    static class NestedClass {
-        protected int field;
-    }
-}
--- a/langtools/test/tools/apt/Basics/StaticMethodAnnotations.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import annot.*;
-import annot.annot2.*;
-
-public class StaticMethodAnnotations {
-    static double d;
-
-    public void foo() {
-        return;
-    }
-
-    @MySimple("value") @MyMarker
-    @AnnotMarker @AnnotSimple("foo")
-    @AnnotMarker2 @AnnotSimple2("bar")
-    public static void baz() {
-    }
-
-    private double bar(int baz) {
-        @AnnotShangri_la
-        int local = 0;
-        return (double) baz;
-    }
-
-    static class NestedClass {
-        protected int field;
-    }
-}
--- a/langtools/test/tools/apt/Basics/TestGetPackageApf.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-
-import static java.util.Collections.*;
-import static com.sun.mirror.util.DeclarationVisitors.*;
-
-/*
- * This class is used to test getPackage on classes that are
- * not already loaded.
- */
-public class TestGetPackageApf implements AnnotationProcessorFactory {
-    // Process any set of annotations
-    private static final Collection<String> supportedAnnotations
-        = unmodifiableCollection(Arrays.asList("*"));
-
-    // No supported options
-    private static final Collection<String> supportedOptions = emptySet();
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedAnnotations;
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public AnnotationProcessor getProcessorFor(
-            Set<AnnotationTypeDeclaration> atds,
-            AnnotationProcessorEnvironment env) {
-        return new TestGetPackageAp(env);
-    }
-
-    private static class TestGetPackageAp implements AnnotationProcessor {
-        private final AnnotationProcessorEnvironment env;
-        TestGetPackageAp(AnnotationProcessorEnvironment env) {
-            this.env = env;
-        }
-
-        public void process() {
-            boolean failed = false;
-            String packageNames[] = {
-                "", // unnamed package
-                "java.lang.annotation",
-                "java.lang",
-                "java.util",
-                "java.awt.image.renderable",
-                "foo.bar",
-                "foo",
-                "p1",
-                // "p1.p2", // class p1.p2 obscures package p1.p2
-            };
-
-            for(String packageName: packageNames) {
-                PackageDeclaration p = env.getPackage(packageName);
-                if (p == null) {
-                    failed = true;
-                    System.err.println("ERROR: No declaration found for ``" + packageName + "''.");
-                }
-                else if (!packageName.equals(p.getQualifiedName())) {
-                    failed = true;
-                    System.err.println("ERROR: Unexpected package name; expected " + packageName +
-                                       "got " + p.getQualifiedName());
-                }
-            }
-
-            String notPackageNames[] = {
-                "XXYZZY",
-                "java.lang.String",
-                "1",
-                "1.2",
-                "3.14159",
-                "To be or not to be is a tautology",
-                "1+2=3",
-            };
-
-            for(String notPackageName: notPackageNames) {
-                PackageDeclaration p = env.getPackage(notPackageName);
-                if (p != null) {
-                    failed = true;
-                    System.err.println("ERROR: Unexpected declaration: ``" + p + "''.");
-                }
-            }
-
-            if (failed)
-                throw new RuntimeException("Errors found testing getPackage.");
-        }
-    }
-}
--- a/langtools/test/tools/apt/Basics/TestGetTypeDeclarationApf.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,140 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-
-import static java.util.Collections.*;
-import static com.sun.mirror.util.DeclarationVisitors.*;
-
-/*
- * This class is used to test getTypeDeclaration on classes that are
- * not already loaded.
- */
-public class TestGetTypeDeclarationApf implements AnnotationProcessorFactory {
-    // Process any set of annotations
-    private static final Collection<String> supportedAnnotations
-        = unmodifiableCollection(Arrays.asList("*"));
-
-    // No supported options
-    private static final Collection<String> supportedOptions = emptySet();
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedAnnotations;
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public AnnotationProcessor getProcessorFor(
-            Set<AnnotationTypeDeclaration> atds,
-            AnnotationProcessorEnvironment env) {
-        return new TestGetTypeDeclarationAp(env);
-    }
-
-    private static class TestGetTypeDeclarationAp implements AnnotationProcessor {
-        private final AnnotationProcessorEnvironment env;
-        TestGetTypeDeclarationAp(AnnotationProcessorEnvironment env) {
-            this.env = env;
-        }
-
-        public void process() {
-            String classNames[] = {
-                "java.lang.String",             // should be already available
-                "java.lang.Thread.State",       // should be already available
-                "java.util.Collection",
-                "java.util.Map.Entry",
-                "foo.bar.Baz.Xxyzzy.Wombat",
-                "foo.bar.Baz.Xxyzzy",
-                "foo.bar.Baz",
-                "foo.bar.Quux",
-                "foo.bar.Quux.Xxyzzy",
-                "foo.bar.Quux.Xxyzzy.Wombat",
-                "NestedClassAnnotations",
-                "NestedClassAnnotations.NestedClass",
-            };
-
-            for(String className: classNames) {
-                TypeDeclaration t = env.getTypeDeclaration(className);
-                if (t == null)
-                    throw new RuntimeException("No declaration found for " + className);
-                if (! t.getQualifiedName().equals(className))
-                    throw new RuntimeException("Class with wrong name found for " + className);
-            }
-
-            // Test obscuring behavior; i.e. nested class C1 in class
-            // p1 where p1 is member of package p2 should be favored
-            // over class C1 in package p1.p2.
-            String nonuniqueCanonicalNames[] = {
-                "p1.p2.C1",
-            };
-            for(String className: nonuniqueCanonicalNames) {
-                ClassDeclaration c1 = (ClassDeclaration) env.getTypeDeclaration(className);
-                ClassDeclaration c2 = (ClassDeclaration) c1.getDeclaringType();
-                PackageDeclaration p     = env.getPackage("p1");
-
-                if (!p.equals(c1.getPackage())  ||
-                    c2 == null ||
-                    !"C1".equals(c1.getSimpleName())) {
-                    throw new RuntimeException("Bad class declaration");
-                }
-            }
-
-            String notClassNames[] = {
-                "",
-                "XXYZZY",
-                "java",
-                "java.lang",
-                "java.lang.Bogogogous",
-                "1",
-                "1.2",
-                "3.14159",
-                "To be or not to be is a tautology",
-                "1+2=3",
-                "foo+.x",
-                "foo+x",
-                "+",
-                "?",
-                "***",
-                "java.*",
-            };
-
-            for(String notClassName: notClassNames) {
-                Declaration t = env.getTypeDeclaration(notClassName);
-                if (t != null) {
-                    System.err.println("Unexpected declaration:" + t);
-                    throw new RuntimeException("Declaration found for ``" + notClassName + "''.");
-                }
-            }
-
-        }
-    }
-}
--- a/langtools/test/tools/apt/Basics/annot/AnnotMarker.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-package annot;
-
-public @interface AnnotMarker {
-}
--- a/langtools/test/tools/apt/Basics/annot/AnnotShangri_la.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-package annot;
-
-/*
- * This annotation is used by the tests only to annotate local
- * variables; therefore, this annotation should not affect the
- * discovery process and should not appear in the list printed by
- * -XListAnnotationTypes.
- */
-public @interface AnnotShangri_la {
-}
--- a/langtools/test/tools/apt/Basics/annot/AnnotSimple.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-package annot;
-
-public @interface AnnotSimple {
-    String value() default "default";
-}
--- a/langtools/test/tools/apt/Basics/annot/annot2/AnnotMarker2.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-package annot.annot2;
-
-public @interface AnnotMarker2 {
-}
--- a/langtools/test/tools/apt/Basics/annot/annot2/AnnotSimple2.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-package annot.annot2;
-
-public @interface AnnotSimple2 {
-    String value() default "default";
-}
--- a/langtools/test/tools/apt/Basics/apt.sh	Tue Feb 21 05:44:29 2012 -0800
+++ b/langtools/test/tools/apt/Basics/apt.sh	Wed Feb 22 16:52:50 2012 -0800
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,11 +24,10 @@
 #
 
 # @test
-# @bug 4908512 5024825 4957203 4993280 4996963 6174696 6177059
+# @bug 4908512 5024825 4957203 4993280 4996963 6174696 6177059 7041249
 # @run shell ../verifyVariables.sh
-# @build Milk MethodAnnotations NestedClassAnnotations StaticFieldAnnotations StaticMethodAnnotations ParameterAnnotations 
 # @run shell apt.sh
-# @summary test consistency of annotation discovery
+# @summary Make sure apt is removed and doesn't come back
 # @author Joseph D. Darcy
 
 OS=`uname -s`;
@@ -41,136 +40,24 @@
 	;;
 esac
 
-# Construct path to apt executable
-APT="${TESTJAVA}/bin/apt ${TESTTOOLVMOPTS} -XDsuppress-tool-api-removal-message "
-
-printf "%s\n" "-classpath ${TESTCLASSES}"                    > options
-printf "%s\n" "-factorypath ./nullap.jar"                   >> options
-printf "%s\n" "-sourcepath ${TESTSRC} "                     >> options
-printf "%s\n" "-nocompile"                                  >> options
-printf "%s\n" "-XListAnnotationTypes"                       >> options
-
-printf "%s\n" "-classpath ${TESTCLASSES}"                    > options1
-printf "%s\n" "-factorypath ./nullap.jar"                   >> options1
-printf "%s\n" "-sourcepath ${TESTSRC} "                     >> options1
-printf "%s\n" "-nocompile"                                  >> options1
-printf "%s\n" "-XListAnnotationTypes"                       >> options1
-printf "%s\n" "-XclassesAsDecls"                            >> options1
-
+# Verify apt executable does not exist
+if [ -f "${TESTJAVA}/bin/apt" -o -f "${TESTJAVA}/bin/apt.exe" ];then
+    echo "apt executable should not exist."
+    exit 1
+fi
 
 # Construct path to javac executable
 JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} -source 1.5 -sourcepath ${TESTSRC} -classpath ${TESTJAVA}/lib/tools.jar -d . "
-JAR="${TESTJAVA}/bin/jar "
 
-$JAVAC ${TESTSRC}/NullAPF.java \
-${TESTSRC}/FreshnessApf.java  \
-${TESTSRC}/TestGetTypeDeclarationApf.java \
-${TESTSRC}/TestGetPackageApf.java
+$JAVAC ${TESTSRC}/NullAPF.java
 RESULT=$?
 
 case "${RESULT}" in
         0  )
-        ;;
+        echo "Compilation of apt-using source passed improperly."
+        exit 1
+	;;
 
         * )
-        echo "Compilation failed."
-        exit 1
+	;;
 esac
-
-echo "Making services directory and copying services information."
-mkdir -p META-INF/services
-cp ${TESTSRC}/com.sun.mirror.apt.AnnotationProcessorFactory ./META-INF/services
-$JAR cvf0 nullap.jar NullAPF*.class META-INF
-
-ANNOTATION_FILES="${TESTSRC}/ClassAnnotations.java \
-${TESTSRC}/MethodAnnotations.java \
-${TESTSRC}/NestedClassAnnotations.java \
-${TESTSRC}/StaticFieldAnnotations.java \
-${TESTSRC}/StaticMethodAnnotations.java \
-${TESTSRC}/ParameterAnnotations.java"
-
-for i in ${ANNOTATION_FILES}
-do
-	printf "%s\n" "Testing annotations on source file ${i}"
-	${APT} @options ${i} 2> result.txt
-	diff ${DIFFOPTS} ${TESTSRC}/golden.txt result.txt
-
-	RESULT=$?
-	case "$RESULT" in
-	        0  )
-	        ;;
-
-	        * )
-	        echo "Unexpected set of annotations on source files found."
-	        exit 1
-	esac
-
-	CLASS=`basename ${i} .java`
-	printf "%s\n" "Testing annotations on class file ${CLASS}"
-	${APT} @options1 ${CLASS} 2> result2.txt
-	diff ${DIFFOPTS} ${TESTSRC}/golden.txt result2.txt
-
-	RESULT=$?
-	case "$RESULT" in
-	        0  )
-	        ;;
-
-	        * )
-	        echo "Unexpected set of annotations on class files found."
-	        exit 1
-	esac
-done
-
-# Verify source files are favored over class files
-
-printf "%s\n" "-factorypath ."			 > options2
-printf "%s\n" "-factory FreshnessApf"		>> options2
-printf "%s\n" "-sourcepath ${TESTSRC}"		>> options2
-printf "%s\n" "-classpath  ${TESTCLASSES}"	>> options2
-printf "%s\n" "-nocompile"			>> options2
-
-${APT} @options2 ${TESTSRC}/Indirect.java
-
-RESULT=$?
-case "$RESULT" in
-        0  )
-        ;;
-
-        * )
-        exit 1
-esac
-
-# Verify new classes can be loaded by getTypeDeclaration
-
-printf "%s\n" "-factorypath ."			 	> options3
-printf "%s\n" "-factory TestGetTypeDeclarationApf"	>> options3
-printf "%s\n" "-sourcepath ${TESTSRC}"			>> options3
-
-# ${APT} @options3
-
-RESULT=$?
-case "$RESULT" in
-        0  )
-        ;;
-
-        * )
-        exit 1
-esac
-
-# Verify packages can be loaded by getPackage
-
-printf "%s\n" "-factorypath ."			 	> options4
-printf "%s\n" "-factory TestGetPackageApf"		>> options4
-printf "%s\n" "-sourcepath ${TESTSRC}"			>> options4
-
-${APT} @options4
-
-RESULT=$?
-case "$RESULT" in
-        0  )
-        ;;
-
-        * )
-        exit 1
-esac
-exit 0
--- a/langtools/test/tools/apt/Basics/com.sun.mirror.apt.AnnotationProcessorFactory	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-NullAPF
--- a/langtools/test/tools/apt/Basics/foo/bar/Baz.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-package foo.bar;
-
-public class Baz {
-    public class Xxyzzy {
-        public class Wombat {
-        }
-    }
-
-}
--- a/langtools/test/tools/apt/Basics/foo/bar/Quux.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-package foo.bar;
-
-public class Quux {
-    public class Xxyzzy {
-        public class Wombat {
-        }
-    }
-
-}
--- a/langtools/test/tools/apt/Basics/golden.txt	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-Set of annotations found:[MyMarker, MySimple, annot.AnnotMarker, annot.AnnotSimple, annot.annot2.AnnotMarker2, annot.annot2.AnnotSimple2]
--- a/langtools/test/tools/apt/Basics/goldenAggregate.txt	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-
-public class Aggregate {
-
-  private Aggregate();
-
-  private static double hypot(double arg0,
-    double arg1);
-
-  public static void main(java.lang.String[] arg0);
-
-  public boolean equals(Aggregate arg0);
-
-  public int hashcode();
-}
--- a/langtools/test/tools/apt/Basics/p1/p2.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-package p1;
-
-public class p2 {
-    public static class C1 {}
-}
--- a/langtools/test/tools/apt/Basics/p1/p2/C1.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-package p1.p2;
-
-public class C1 {
-}
--- a/langtools/test/tools/apt/Basics/print.sh	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# @test
-# @bug 5008759 4998341 5018369 5032476 5060121 5096932 5096931
-# @run shell ../verifyVariables.sh
-# @run shell print.sh
-# @summary test availabilty of print option
-# @author Joseph D. Darcy
-
-OS=`uname -s`;
-case "${OS}" in
-        CYGWIN* )
-                DIFFOPTS="--strip-trailing-cr"
-        ;;
-
-	* )
-	;;
-esac
-
-# Compile file directly, without TESTJAVACOPTS
-# Don't use @build or @compile as these implicitly use jtreg -javacoption values
-# and it is important that this file be compiled as expected, for later comparison
-# against a golden file.
-"${TESTJAVA}/bin/javac" ${TESTTOOLVMOPTS} -d ${TESTCLASSES} ${TESTSRC}/Aggregate.java
-
-# Construct path to apt executable
-APT="${TESTJAVA}/bin/apt ${TESTTOOLVMOPTS} \
--print "
-
-printf "%s\n" "APT = ${APT}"
-
-PRINT_FILES="${TESTSRC}/MisMatch.java \
-${TESTSRC}/GenClass.java \
-${TESTSRC}/Misc.java \
-${TESTSRC}/Lacuna.java"
-
-for i in ${PRINT_FILES}
-do
-	# Delete any existing class file
-        FILENAME=`basename $i .java`
-	rm -f ${FILENAME}.class
-
-        printf "%s\n" "Printing ${i}"
-        ${APT} ${i}
-
-        RESULT=$?
-        case "$RESULT" in
-                0  )
-                ;;
-
-                * )
-                echo "Problem printing file ${i}."
-                exit 1
-        esac
-
-        # Verify compilation did not occur
-	if [ -f ${FILENAME}.class ]; then
-		printf "Improper compilation occured for %s.\n" ${i}
-		exit 1
-	fi
-	
-done
-
-# check for mutliple methods and no static initializer
-
-${APT} -XclassesAsDecls -cp ${TESTCLASSES} -print Aggregate > aggregate.txt
-diff ${DIFFOPTS} aggregate.txt ${TESTSRC}/goldenAggregate.txt
-
-RESULT=$?
-case "$RESULT" in
-        0  )
-        ;;
-
-        * )
-        echo "Expected output not received"
-        exit 1
-esac
-
-exit 0
--- a/langtools/test/tools/apt/Compile/ClassDeclApf.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-
-import java.io.*;
-
-import static java.util.Collections.*;
-
-/*
- * This class is used to test the ability to store static state across
- * apt rounds.
- */
-public class ClassDeclApf implements AnnotationProcessorFactory {
-    static int round = -1;
-
-    // Process any set of annotations
-    private static final Collection<String> supportedAnnotations
-        = unmodifiableCollection(Arrays.asList("*"));
-
-    // No supported options
-    private static final Collection<String> supportedOptions = emptySet();
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedAnnotations;
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                               AnnotationProcessorEnvironment env) {
-        return new ClassDeclAp(env);
-    }
-
-    private static class ClassDeclAp implements AnnotationProcessor {
-        private final AnnotationProcessorEnvironment env;
-        ClassDeclAp(AnnotationProcessorEnvironment env) {
-            this.env = env;
-        }
-
-        // Simple inefficient drain
-        void drain(InputStream is, OutputStream os) {
-            try {
-            while (is.available() > 0 )
-                os.write(is.read());
-            } catch (java.io.IOException ioe) {
-                throw new RuntimeException(ioe);
-            }
-
-        }
-
-        public void process() {
-            int size = env.getSpecifiedTypeDeclarations().size();
-
-            try {
-                round++;
-                switch (size) {
-                case 0:
-                    if (round == 0) {
-                        drain(new FileInputStream("./tmp/classes/Round1Class.class"),
-                              env.getFiler().createClassFile("Round1Class"));
-                    } else
-                        throw new RuntimeException("Got " + size + " decl's in round " + round);
-                    break;
-
-                case 1:
-                    if (round == 1) {
-                        drain(new FileInputStream("./tmp/classes/AhOneClass.class"),
-                              env.getFiler().createClassFile("AhOneClass"));
-
-                        drain(new FileInputStream("./tmp/classes/AndAhTwoClass.class"),
-                              env.getFiler().createClassFile("AndAhTwoClass"));
-                    } else
-                        throw new RuntimeException("Got " + size + " decl's in round " + round);
-                    break;
-                case 2:
-                    if (round != 2) {
-                        throw new RuntimeException("Got " + size + " decl's in round " + round);
-                    }
-                    break;
-                }
-
-            } catch (java.io.IOException ioe) {
-                    throw new RuntimeException();
-                }
-
-            }
-
-    }
-}
--- a/langtools/test/tools/apt/Compile/ClassDeclApf2.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-
-import java.io.*;
-
-import static java.util.Collections.*;
-
-/*
- * This class is used to test the the interaction of -XclassesAsDecls
- * with command line options handling.
- */
-public class ClassDeclApf2 implements AnnotationProcessorFactory {
-    static int round = -1;
-
-    // Process any set of annotations
-    private static final Collection<String> supportedAnnotations
-        = unmodifiableCollection(Arrays.asList("*"));
-
-    // No supported options
-    private static final Collection<String> supportedOptions = emptySet();
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedAnnotations;
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                               AnnotationProcessorEnvironment env) {
-        return new ClassDeclAp(env);
-    }
-
-    private static class ClassDeclAp implements AnnotationProcessor {
-        private final AnnotationProcessorEnvironment env;
-        ClassDeclAp(AnnotationProcessorEnvironment env) {
-            this.env = env;
-        }
-
-        // Simple inefficient drain
-        void drain(InputStream is, OutputStream os) {
-            try {
-            while (is.available() > 0 )
-                os.write(is.read());
-            } catch (java.io.IOException ioe) {
-                throw new RuntimeException(ioe);
-            }
-        }
-
-        public void process() {
-            int size = env.getSpecifiedTypeDeclarations().size();
-            Filer f = env.getFiler();
-
-            try {
-                round++;
-                switch (size) {
-                case 3:
-                    if (round == 0) {
-                        drain(new FileInputStream("./tmp/classes/Round1Class.class"),
-                              f.createClassFile("Round1Class"));
-                    } else
-                        throw new RuntimeException("Got " + size + " decl's in round " + round);
-                    break;
-
-                case 1:
-                    if (round == 1) {
-                        f.createSourceFile("AhOne").println("public class AhOne {}");
-                        System.out.println("Before writing AndAhTwoClass");
-                        drain(new FileInputStream("./tmp/classes/AndAhTwoClass.class"),
-                              f.createClassFile("AndAhTwoClass"));
-                        System.out.println("After writing AndAhTwoClass");
-                    } else
-                        throw new RuntimeException("Got " + size + " decl's in round " + round);
-                    break;
-
-                case 2:
-                    if (round != 2) {
-                        throw new RuntimeException("Got " + size + " decl's in round " + round);
-                    }
-                    break;
-                default:
-                    throw new RuntimeException("Unexpected number of declarations:" + size +
-                                               "\n Specified:" + env.getSpecifiedTypeDeclarations() +
-                                               "\n Included:" + env.getTypeDeclarations() );
-                }
-
-            } catch (java.io.IOException ioe) {
-                throw new RuntimeException(ioe);
-            }
-        }
-    }
-}
--- a/langtools/test/tools/apt/Compile/Dummy1.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-@Round1 class Dummy1{}
--- a/langtools/test/tools/apt/Compile/ErrorAPF.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-
-
-import static java.util.Collections.*;
-import static com.sun.mirror.util.DeclarationVisitors.*;
-
-/*
- * Construct a processor that does nothing but report an error.
- */
-public class ErrorAPF implements AnnotationProcessorFactory {
-    static class ErrorAP implements AnnotationProcessor {
-        AnnotationProcessorEnvironment env;
-        ErrorAP(AnnotationProcessorEnvironment env) {
-            this.env = env;
-        }
-
-        public void process() {
-            Messager messager = env.getMessager();
-            messager.printError("It's a mad, mad, mad, mad world");
-            messager.printError("Something wicked this way comes");
-
-            for(TypeDeclaration typeDecl : env.getSpecifiedTypeDeclarations())
-                messager.printError(typeDecl.getPosition(), "Boring class name");
-        }
-    }
-
-    static Collection<String> supportedTypes;
-    static {
-        String types[] = {"*"};
-        supportedTypes = unmodifiableCollection(Arrays.asList(types));
-    }
-
-    static Collection<String> supportedOptions;
-    static {
-        String options[] = {""};
-        supportedOptions = unmodifiableCollection(Arrays.asList(options));
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedTypes;
-    }
-
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                               AnnotationProcessorEnvironment env) {
-        return new ErrorAP(env);
-    }
-}
--- a/langtools/test/tools/apt/Compile/HelloAnnotation.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-/* /nodynamiccopyright/ */
-import java.lang.annotation.*;
-@Target(ElementType.ANNOTATION_TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@HelloAnnotation
-@interface HelloAnnotation {
-    Target value() default @Target(ElementType.METHOD);
-}
--- a/langtools/test/tools/apt/Compile/HelloWorld.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-/* /nodynamiccopyright/ */
-public class HelloWorld {
-    public static void main(String argv[]) {
-        System.out.println("Hello World.");
-    }
-}
--- a/langtools/test/tools/apt/Compile/Round1Apf.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-
-import java.io.File;
-
-import static java.util.Collections.*;
-import static com.sun.mirror.util.DeclarationVisitors.*;
-
-/*
- * Factory to help test updated discovery policy.
- */
-public class Round1Apf implements AnnotationProcessorFactory {
-    // Process @Round1
-    private static final Collection<String> supportedAnnotations
-        = unmodifiableCollection(Arrays.asList("Round1"));
-
-    // No supported options
-    private static final Collection<String> supportedOptions = emptySet();
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedAnnotations;
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    private static int round = 0;
-
-    public AnnotationProcessor getProcessorFor(
-            Set<AnnotationTypeDeclaration> atds,
-            AnnotationProcessorEnvironment env) {
-        return new Round1Ap(env, atds.size() == 0);
-    }
-
-    private static class Round1Ap implements AnnotationProcessor, RoundCompleteListener {
-        private final AnnotationProcessorEnvironment env;
-        private final boolean empty;
-
-        Round1Ap(AnnotationProcessorEnvironment env, boolean empty) {
-            this.env = env;
-            this.empty = empty;
-        }
-
-        public void process() {
-            Round1Apf.round++;
-            try {
-                if (!empty) {
-                    Filer f = env.getFiler();
-                    f.createSourceFile("Dummy2").println("@Round2 class Dummy2{}");
-                    f.createTextFile(Filer.Location.SOURCE_TREE,
-                                     "",
-                                     new File("foo.txt"),
-                                     null).println("xxyzzy");
-                    f.createClassFile("Vacant");
-                    f.createBinaryFile(Filer.Location.CLASS_TREE,
-                                       "",
-                                       new File("onezero"));
-                }
-            } catch (java.io.IOException ioe) {
-                throw new RuntimeException(ioe);
-            }
-
-            System.out.println("Round1Apf: " + round);
-            env.addListener(this);
-        }
-
-        public void roundComplete(RoundCompleteEvent event) {
-            RoundState rs = event.getRoundState();
-
-            if (event.getSource() != this.env)
-                throw new RuntimeException("Wrong source!");
-
-            Filer f = env.getFiler();
-            try {
-                f.createSourceFile("AfterTheBell").println("@Round2 class AfterTheBell{}");
-                throw new RuntimeException("Inappropriate source file creation.");
-            } catch (java.io.IOException ioe) {}
-
-
-            System.out.printf("\t[final round: %b, error raised: %b, "+
-                              "source files created: %b, class files created: %b]%n",
-                              rs.finalRound(),
-                              rs.errorRaised(),
-                              rs.sourceFilesCreated(),
-                              rs.classFilesCreated());
-
-            System.out.println("Round1Apf: " + round + " complete");
-        }
-    }
-}
--- a/langtools/test/tools/apt/Compile/Round2Apf.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-
-import java.io.IOException;
-import java.io.File;
-
-import static java.util.Collections.*;
-import static com.sun.mirror.util.DeclarationVisitors.*;
-
-/*
- * Factory to help test updated discovery policy.
- */
-public class Round2Apf implements AnnotationProcessorFactory {
-    // Process @Round2
-    private static final Collection<String> supportedAnnotations
-        = unmodifiableCollection(Arrays.asList("Round2"));
-
-    // No supported options
-    private static final Collection<String> supportedOptions = emptySet();
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedAnnotations;
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    private static int round = 0;
-
-    public AnnotationProcessor getProcessorFor(
-            Set<AnnotationTypeDeclaration> atds,
-            AnnotationProcessorEnvironment env) {
-        return new Round2Ap(env, atds.size() == 0);
-    }
-
-    private static class Round2Ap implements AnnotationProcessor {
-        private final AnnotationProcessorEnvironment env;
-        private final boolean empty;
-
-        Round2Ap(AnnotationProcessorEnvironment env, boolean empty) {
-            this.env = env;
-            this.empty = empty;
-        }
-
-        public void process() {
-            Round2Apf.round++;
-            Filer f = env.getFiler();
-            try {
-                f.createSourceFile("Dummy2").println("@Round2 class Dummy2{}");
-                throw new RuntimeException("Duplicate file creation allowed");
-            } catch (IOException io) {}
-
-            try {
-                f.createTextFile(Filer.Location.SOURCE_TREE,
-                                 "",
-                                 new File("foo.txt"),
-                                 null).println("xxyzzy");
-                throw new RuntimeException("Duplicate file creation allowed");
-            } catch (IOException io) {}
-
-            try {
-                f.createClassFile("Vacant");
-                throw new RuntimeException("Duplicate file creation allowed");
-            } catch (IOException io) {}
-
-            try {
-                f.createBinaryFile(Filer.Location.CLASS_TREE,
-                                   "",
-                                   new File("onezero"));
-                throw new RuntimeException("Duplicate file creation allowed");
-            } catch (IOException io) {}
-
-
-
-            try {
-                if (!empty) {
-                    // Create corresponding files of opposite kind to
-                    // the files created by Round1Apf; these should
-                    // only generate warnings
-                    f.createClassFile("Dummy2");
-                    f.createSourceFile("Vacant").println("class Vacant{}");
-
-                    f.createSourceFile("Dummy3").println("@Round3 class Dummy3{}");
-
-                    // This should generated a warning too
-                    f.createClassFile("Dummy3");
-                }
-            } catch (java.io.IOException ioe) {
-                throw new RuntimeException(ioe);
-            }
-
-            System.out.println("Round2Apf: " + round);
-        }
-    }
-}
--- a/langtools/test/tools/apt/Compile/Round3Apf.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-
-import static java.util.Collections.*;
-import static com.sun.mirror.util.DeclarationVisitors.*;
-
-/*
- * Factory to help test updated discovery policy.
- */
-public class Round3Apf implements AnnotationProcessorFactory {
-    // Process @Round3
-    private static final Collection<String> supportedAnnotations
-        = unmodifiableCollection(Arrays.asList("Round3"));
-
-    // No supported options
-    private static final Collection<String> supportedOptions = emptySet();
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedAnnotations;
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    private static int round = 0;
-
-    public AnnotationProcessor getProcessorFor(
-            Set<AnnotationTypeDeclaration> atds,
-            AnnotationProcessorEnvironment env) {
-        return new Round3Ap(env, atds.size() == 0);
-    }
-
-    private static class Round3Ap implements AnnotationProcessor {
-        private final AnnotationProcessorEnvironment env;
-        private final boolean empty;
-
-        Round3Ap(AnnotationProcessorEnvironment env, boolean empty) {
-            this.env = env;
-            this.empty = empty;
-        }
-
-        public void process() {
-            Round3Apf.round++;
-            try {
-                if (!empty)
-                    env.getFiler().createSourceFile("Dummy4").println("@Round4 class Dummy4{}");
-            } catch (java.io.IOException ioe) {
-                throw new RuntimeException(ioe);
-            }
-
-            System.out.println("Round3Apf: " + round);
-        }
-    }
-}
--- a/langtools/test/tools/apt/Compile/Round4Apf.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-
-import static java.util.Collections.*;
-import static com.sun.mirror.util.DeclarationVisitors.*;
-
-/*
- * Factory to help test updated discovery policy.
- */
-public class Round4Apf implements AnnotationProcessorFactory {
-    // Process @Round4
-    private static final Collection<String> supportedAnnotations
-        = unmodifiableCollection(Arrays.asList("Round4"));
-
-    // No supported options
-    private static final Collection<String> supportedOptions = emptySet();
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedAnnotations;
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    private static int round = 0;
-
-    public AnnotationProcessor getProcessorFor(
-            Set<AnnotationTypeDeclaration> atds,
-            AnnotationProcessorEnvironment env) {
-        return new Round4Ap(env, atds.size() == 0);
-    }
-
-    private static class Round4Ap implements AnnotationProcessor, RoundCompleteListener {
-        private final AnnotationProcessorEnvironment env;
-        private final boolean empty;
-
-        Round4Ap(AnnotationProcessorEnvironment env, boolean empty) {
-            this.env = env;
-            this.empty = empty;
-        }
-
-        public void process() {
-            Round4Apf.round++;
-            try {
-                if (!empty)
-                    env.getFiler().createSourceFile("Dummy5").println("@Round5 class Dummy5{}");
-            } catch (java.io.IOException ioe) {
-                throw new RuntimeException(ioe);
-            }
-
-            System.out.println("Round4Apf: " + round);
-            env.addListener(this);
-        }
-
-        public void roundComplete(RoundCompleteEvent event) {
-            RoundState rs = event.getRoundState();
-
-            System.out.println("\t" + rs.toString());
-
-            System.out.println("Round4Apf: " + round + " complete");
-
-            if (rs.finalRound()) {
-                System.out.println("Valediction");
-            }
-        }
-    }
-}
--- a/langtools/test/tools/apt/Compile/Rounds.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-@interface Round1{}
-
-@interface Round2{}
-
-@interface Round3{}
-
-@interface Round4{}
-
-@interface Round5{}
--- a/langtools/test/tools/apt/Compile/StaticApf.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-
-import static java.util.Collections.*;
-
-/*
- * This class is used to test the ability to store static state across
- * apt rounds.
- */
-public class StaticApf implements AnnotationProcessorFactory {
-    static int round = -1;
-
-    // Process any set of annotations
-    private static final Collection<String> supportedAnnotations
-        = unmodifiableCollection(Arrays.asList("*"));
-
-    // No supported options
-    private static final Collection<String> supportedOptions = emptySet();
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedAnnotations;
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                               AnnotationProcessorEnvironment env) {
-        return new StaticAp(env);
-    }
-
-    private static class StaticAp implements AnnotationProcessor {
-        private final AnnotationProcessorEnvironment env;
-        StaticAp(AnnotationProcessorEnvironment env) {
-            this.env = env;
-        }
-
-        public void process() {
-            int size = env.getSpecifiedTypeDeclarations().size();
-
-            try {
-                round++;
-                switch (size) {
-                case 0:
-                    if (round == 0) {
-                        env.getFiler().createSourceFile("Round1").print("class Round1 {}");
-                    } else
-                        throw new RuntimeException("Got " + size + " decl's in round " + round);
-                    break;
-
-                case 1:
-                    if (round == 1) {
-                        env.getFiler().createSourceFile("AhOne").print("class AhOne {}");
-                        env.getFiler().createSourceFile("AndAhTwo").print("class AndAhTwo {}");
-                        env.getFiler().createClassFile("Foo");
-                    } else
-                        throw new RuntimeException("Got " + size + " decl's in round " + round);
-                    break;
-                case 2:
-                    if (round != 2) {
-                        throw new RuntimeException("Got " + size + " decl's in round " + round);
-                    }
-                    break;
-                }
-
-            } catch (java.io.IOException ioe) {
-                    throw new RuntimeException();
-                }
-
-            }
-
-    }
-}
--- a/langtools/test/tools/apt/Compile/WarnAPF.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Map;
-import java.util.Arrays;
-
-
-import static java.util.Collections.*;
-import static com.sun.mirror.util.DeclarationVisitors.*;
-
-/*
- * Construct a processor that does nothing but report a warning.
- */
-public class WarnAPF implements AnnotationProcessorFactory {
-    static class WarnAP implements AnnotationProcessor {
-        AnnotationProcessorEnvironment env;
-        WarnAP(AnnotationProcessorEnvironment env) {
-            this.env = env;
-        }
-
-        public void process() {
-            Messager messager = env.getMessager();
-            messager.printWarning("Beware the ides of March!");
-
-            for(TypeDeclaration typeDecl : env.getSpecifiedTypeDeclarations()) {
-                messager.printNotice(typeDecl.getPosition(),  "You are about to be warned");
-                messager.printWarning(typeDecl.getPosition(), "Strange class name");
-
-                for(AnnotationMirror annotMirror : typeDecl.getAnnotationMirrors()) {
-                    messager.printNotice("MIRROR " + annotMirror.getPosition().toString());
-
-                     Map<AnnotationTypeElementDeclaration,AnnotationValue> map =
-                         annotMirror.getElementValues();
-                     if (map.keySet().size() > 0)
-                         for(AnnotationTypeElementDeclaration key : map.keySet() ) {
-                             AnnotationValue annotValue = map.get(key);
-                             Object o = annotValue.getValue();
-                             // asserting getPosition is non-null
-                             messager.printNotice("VALUE " + annotValue.getPosition().toString());
-                         }
-                     else {
-                         Collection<AnnotationTypeElementDeclaration> ateds =
-                         annotMirror.getAnnotationType().getDeclaration().getMethods();
-                         for(AnnotationTypeElementDeclaration ated : ateds ) {
-                             AnnotationValue annotValue = ated.getDefaultValue();
-                             Object o = annotValue.getValue();
-                             messager.printNotice("VALUE " + "HelloAnnotation.java:5");
-                         }
-                     }
-                }
-            }
-        }
-    }
-
-    static final Collection<String> supportedTypes;
-    static {
-        String types[] = {"*"};
-        supportedTypes = unmodifiableCollection(Arrays.asList(types));
-    }
-    public Collection<String> supportedAnnotationTypes() {return supportedTypes;}
-
-    static final Collection<String> supportedOptions;
-    static {
-        String options[] = {""};
-        supportedOptions = unmodifiableCollection(Arrays.asList(options));
-    }
-    public Collection<String> supportedOptions() {return supportedOptions;}
-
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                               AnnotationProcessorEnvironment env) {
-        return new WarnAP(env);
-    }
-}
--- a/langtools/test/tools/apt/Compile/WrappedStaticApf.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.AnnotationProcessorFactory;
-
-/*
- * Pass an instantiated StaticApf object to the
- * com.sun.tools.apt.Main.process entry point.
- */
-public class WrappedStaticApf {
-    public static void main(String argv[]) {
-        AnnotationProcessorFactory factory = new StaticApf();
-        System.exit(com.sun.tools.apt.Main.process(factory, argv));
-    }
-}
--- a/langtools/test/tools/apt/Compile/compile.sh	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,533 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# @test
-# @bug 5033855 4990902 5023880 5043516 5048534 5048535 5041279 5048539 5067261 5068145 5023881 4996963 5095716 6191667 6433634
-# @run shell ../verifyVariables.sh
-# @build ErrorAPF
-# @build WarnAPF
-# @build StaticApf
-# @build ClassDeclApf
-# @build ClassDeclApf2
-# @build Rounds
-# @build Round1Apf Round2Apf Round3Apf Round4Apf
-# @build WrappedStaticApf
-# @run shell compile.sh
-# @summary Test simple usages of apt, including delegating to javac
-# @author Joseph D. Darcy
-
-# If the file *does* exist, exit with an error
-TestNoFile() {
-        if [ -f ${1} ]; then
-                printf "%s\n" "File ${1} found."
-                exit 1
-        fi
-}
-
-# If the file does not exist, exit with an error
-TestFile() {
-        if [ ! -f ${1} ]; then
-                printf "%s\n" "File ${1} not found."
-                exit 1
-        fi
-}
-
-
-OS=`uname -s`;
-case "${OS}" in
-        Windows* )
-                SEP=";"
-        ;;
-
-        CYGWIN* )
-		DIFFOPTS="--strip-trailing-cr"
-                SEP=";"
-        ;;
-
-        * )
-        SEP=":"
-        ;;
-esac
-
-
-APT="${TESTJAVA}/bin/apt ${TESTTOOLVMOPTS} -XDsuppress-tool-api-removal-message "
-JAVA="${TESTJAVA}/bin/java ${TESTVMOPTS} "
-JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} "
-
-unset CLASSPATH
-
-
-# ---------------------------------------------------------------
-echo "Verify that source 1.6 is not supported
-rm -f HelloWorld.class
-
-printf "%s\n" "-source 1.6"     > options0
-printf "%s\n" "${TESTSRC}/HelloWorld.java"  >> options0
-${APT} @options0
-
-RESULT=$?
-case "$RESULT" in
-	0  )
-        echo "FAILED: accepted source 1.6"
-	exit 1
-        ;;
-esac
-
-TestNoFile "HelloWorld.class"
-
-# ---------------------------------------------------------------
-
-echo "Verify that target 1.6 is not supported
-rm -f HelloWorld.class
-
-printf "%s\n" "-target 1.6"     > options00
-printf "%s\n" "${TESTSRC}/HelloWorld.java"  >> options00
-${APT} @options00
-
-RESULT=$?
-case "$RESULT" in
-	0  )
-        echo "FAILED: accepted target 1.6"
-	exit 1
-        ;;
-esac
-
-TestNoFile "HelloWorld.class"
-
-# ---------------------------------------------------------------
-
-echo "Testing javac pass-through with -A in options file"
-rm -f HelloWorld.class
-
-printf "%s\n" "-A"     > options1
-printf "%s\n" "-d ."     >> options1
-printf "%s\n" "${TESTSRC}/HelloWorld.java"  >> options1
-${APT} @options1
-
-RESULT=$?
-case "$RESULT" in
-	0  )
-        ;;
-
-        * )
-        echo "FAILED: javac with -A in options file did not compile"
-        exit 1
-esac
-TestFile "HelloWorld.class"
-
-
-# ---------------------------------------------------------------
-
-echo "Verifying reporting an error will prevent compilation"
-rm -f HelloWorld.class
-if [ ! -f HelloWorld.java ]; then
-	cp ${TESTSRC}/HelloWorld.java .
-fi
-
-
-printf "%s\n" "-factory ErrorAPF"            > options2
-printf "%s\n" "-d ."                        >> options2
-printf "%s\n" "-cp ${TESTCLASSES}"          >> options2
-printf "%s\n" "HelloWorld.java"             >> options2
-${APT} @options2 2> output
-
-TestNoFile "HelloWorld.class"
-
-diff ${DIFFOPTS} output ${TESTSRC}/golden.txt
-
-RESULT=$?
-case "$RESULT" in
-	0  )
-        ;;
-
-        * )
-        echo "FAILED: did not record expected error messages"
-        exit 1
-esac
-
-
-
-# ---------------------------------------------------------------
-
-echo "Verifying reporting a warning *won't* prevent compilation"
-
-rm -f HelloAnnotation.class
-if [ ! -f HelloAnnotation.java ]; then
-	cp ${TESTSRC}/HelloAnnotation.java .
-fi
-
-
-printf "%s\n" "-factory WarnAPF"             > options3
-printf "%s\n" "-d ."                        >> options3
-printf "%s\n" "-cp ${TESTCLASSES}"          >> options3
-printf "%s\n" "HelloAnnotation.java"        >> options3
-${APT} @options3 2> output
-
-diff ${DIFFOPTS} output ${TESTSRC}/goldenWarn.txt
-
-RESULT=$?
-case "$RESULT" in
-	0  )
-        ;;
-
-        * )
-        echo "FAILED: did not record expected warning messages"
-        exit 1
-esac
-
-TestFile "HelloAnnotation.class"
-
-# ---------------------------------------------------------------
-
-echo "Verifying static state is available across apt rounds; -factory, -cp"
-
-mkdir -p ./src
-mkdir -p ./class
-
-rm -Rf ./src/*
-rm -Rf ./class/*
-
-printf "%s\n" "-factory StaticApf"           > options4
-printf "%s\n" "-s ./src"                    >> options4
-printf "%s\n" "-d ./class"                  >> options4
-printf "%s\n" "-cp ${TESTCLASSES}"          >> options4
-# printf "%s\n" "-XPrintAptRounds"            >> options4
-${APT} @options4
-
-TestFile "./class/AndAhTwo.class"
-
-# ---------------------------------------------------------------
-
-echo "Verifying static state is available across apt rounds; -factory, -factorypath"
-
-rm -Rf ./src/*
-rm -Rf ./class/*
-
-printf "%s\n" "-factory StaticApf"           > options5
-printf "%s\n" "-s ./src"                    >> options5
-printf "%s\n" "-d ./class"                  >> options5
-printf "%s\n" "-factorypath ${TESTCLASSES}" >> options5
-# printf "%s\n" "-XPrintAptRounds"          >> options5
-${APT} @options5
-
-TestFile "./class/AndAhTwo.class"
-
-# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
-# Create jar file for StaticApf
-JAR="${TESTJAVA}/bin/jar "
-mkdir -p META-INF/services
-cp ${TESTSRC}/servicesStaticApf META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-cp ${TESTCLASSES}/StaticApf*.class .
-${JAR} cf0 staticApf.jar StaticApf*.class META-INF
-
-# ---------------------------------------------------------------
-
-echo "Verifying static state is available across apt rounds; -cp"
-
-rm -Rf ./src/*
-rm -Rf ./class/*
-
-printf "%s\n" "-cp staticApf.jar"           > options6
-printf "%s\n" "-s ./src"                    >> options6
-printf "%s\n" "-d ./class"                  >> options6
-printf "%s\n" "-XPrintAptRounds"          >> options6
-${APT} @options6
-
-TestFile "./class/AndAhTwo.class"
-
-# ---------------------------------------------------------------
-
-echo "Verifying static state is available across apt rounds; -factorypath"
-
-rm -Rf ./src/*
-rm -Rf ./class/*
-
-printf "%s\n" "-factorypath staticApf.jar"   > options7
-printf "%s\n" "-s ./src"                    >> options7
-printf "%s\n" "-d ./class"                  >> options7
-printf "%s\n" "-XPrintAptRounds"            >> options7
-${APT} @options7
-
-TestFile "./class/AndAhTwo.class"
-
-# ---------------------------------------------------------------
-
-echo "Verifying -XclassesAsDecls handles class files properly"
-
-rm -Rf ./src/*
-rm -Rf ./class/*
-
-mkdir -p ./tmp/classes
-
-${JAVAC} -d ./tmp/classes ${TESTSRC}/src/Round1Class.java ${TESTSRC}/src/AhOneClass.java ${TESTSRC}/src/AndAhTwoClass.java
-
-RESULT=$?
-case "$RESULT" in
-	0  )
-        ;;
-
-        * )
-        echo "FAILED: javac failed to succesfully compile."
-        exit 1
-esac
-
-printf "%s\n" "-factorypath ${TESTCLASSES}"  > options7a
-printf "%s\n" "-factory ClassDeclApf"       >> options7a
-printf "%s\n" "-s ./src"                    >> options7a
-printf "%s\n" "-d ./class"                  >> options7a
-printf "%s\n" "-XPrintAptRounds"            >> options7a
-printf "%s\n" "-XclassesAsDecls"            >> options7a
-${APT} @options7a
-
-TestFile "./class/AndAhTwoClass.class"
-
-# ---------------------------------------------------------------
-
-echo "Verifying -XclassesAsDecls works with command-line arguments"
-
-rm -Rf ./src/*
-rm -Rf ./class/*
-rm -Rf ./tmp/classes
-
-mkdir -p ./tmp/classes
-
-${JAVAC} -d ./tmp/classes ${TESTSRC}/src/Round1Class.java ${TESTSRC}/src/AndAhTwoClass.java
-
-RESULT=$?
-case "$RESULT" in
-	0  )
-        ;;
-
-        * )
-        echo "FAILED: javac failed to succesfully compile."
-        exit 1
-esac
-
-printf "%s\n" "-factorypath ${TESTCLASSES}"  > options7b
-printf "%s\n" "-factory ClassDeclApf2"       >> options7b
-printf "%s\n" "-XPrintAptRounds"            >> options7b
-printf "%s\n" "-XclassesAsDecls"            >> options7b
-printf "%s\n" "-cp ${TESTCLASSES}"          >> options7b
-printf "%s\n" "ErrorAPF"                    >> options7b
-printf "%s\n" "WarnAPF"                     >> options7b
-printf "%s\n" "-s ./src"                    >> options7b
-printf "%s\n" "-d ./class"                  >> options7b
-printf "%s\n" "ClassDeclApf"                >> options7b
-${APT} @options7b
-
-RESULT=$?
-case "$RESULT" in
-	0  )
-        ;;
-
-        * )
-        echo "FAILED: apt exited with an error code."
-        exit 1
-esac
-
-TestFile "./class/AndAhTwoClass.class"
-TestFile "./class/AhOne.class"
-
-# ---------------------------------------------------------------
-
-echo "Verifying -XclassesAsDecls works with all source files"
-
-rm -Rf ./src/*
-rm -Rf ./class/*
-rm -Rf ./tmp/classes
-
-mkdir -p ./tmp/classes
-
-${JAVAC} -d ./tmp/classes ${TESTSRC}/src/Round1Class.java ${TESTSRC}/src/AndAhTwoClass.java
-
-RESULT=$?
-case "$RESULT" in
-	0  )
-        ;;
-
-        * )
-        echo "FAILED: javac failed to succesfully compile."
-        exit 1
-esac
-
-printf "%s\n" "-factorypath ${TESTCLASSES}"      > options7c
-printf "%s\n" "-factory ClassDeclApf2"          >> options7c
-printf "%s\n" "-s ./src"                        >> options7c
-printf "%s\n" "-d ./class"                      >> options7c
-printf "%s\n" "-sourcepath ${TESTSRC}"          >> options7c
-printf "%s\n" "${TESTSRC}/HelloAnnotation.java" >> options7c
-printf "%s\n" "${TESTSRC}/HelloWorld.java"      >> options7c
-printf "%s\n" "${TESTSRC}/Dummy1.java"          >> options7c
-printf "%s\n" "-XPrintAptRounds"                >> options7c
-printf "%s\n" "-XclassesAsDecls"                >> options7c
-printf "%s\n" "-cp ${TESTCLASSES}"              >> options7c
-${APT} @options7c
-
-RESULT=$?
-case "$RESULT" in
-	0  )
-        ;;
-
-        * )
-        echo "FAILED: apt exited with an error code."
-        exit 1
-esac
-
-TestFile "./class/AndAhTwoClass.class"
-TestFile "./class/AhOne.class"
-TestFile "./class/HelloWorld.class"
-
-# ---------------------------------------------------------------
-
-echo "Verifying -XclassesAsDecls works with mixed class and source files"
-
-rm -Rf ./src/*
-rm -Rf ./class/*
-rm -Rf ./tmp/classes
-
-mkdir -p ./tmp/classes
-
-${JAVAC} -d ./tmp/classes ${TESTSRC}/src/Round1Class.java ${TESTSRC}/src/AndAhTwoClass.java
-
-RESULT=$?
-case "$RESULT" in
-	0  )
-        ;;
-
-        * )
-        echo "FAILED: javac failed to succesfully compile."
-        exit 1
-esac
-
-printf "%s\n" "-factorypath ${TESTCLASSES}"  > options7d
-printf "%s\n" "-factory ClassDeclApf2"      >> options7d
-printf "%s\n" "-s ./src"                    >> options7d
-printf "%s\n" "-XclassesAsDecls"            >> options7d
-printf "%s\n" "ClassDeclApf"                >> options7d
-printf "%s\n" "-d ./class"                  >> options7d
-printf "%s\n" "ErrorAPF"                    >> options7d
-printf "%s\n" "-XPrintAptRounds"            >> options7d
-printf "%s\n" "${TESTSRC}/HelloWorld.java"  >> options7d
-printf "%s\n" "-cp ${TESTCLASSES}"          >> options7d
-${APT} @options7d
-
-RESULT=$?
-case "$RESULT" in
-	0  )
-        ;;
-
-        * )
-        echo "FAILED: apt exited with an error code."
-        exit 1
-esac
-
-TestFile "./class/AndAhTwoClass.class"
-TestFile "./class/AhOne.class"
-TestFile "./class/HelloWorld.class"
-
-# ---------------------------------------------------------------
-
-echo "Testing productive factories are called on subsequent rounds"
-
-rm -Rf ./src/*
-rm -Rf ./class/*
-
-rm -Rf META-INF/services/*
-cp ${TESTSRC}/servicesRound1 META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-cp ${TESTCLASSES}/Round1Apf*.class .
-${JAR} cf0 round1Apf.jar Round1Apf*.class META-INF
-
-rm -Rf META-INF/services/*
-cp ${TESTSRC}/servicesRound2 META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-cp ${TESTCLASSES}/Round2Apf*.class .
-${JAR} cf0 round2Apf.jar Round2Apf*.class META-INF
-
-rm -Rf META-INF/services/*
-cp ${TESTSRC}/servicesRound3 META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-cp ${TESTCLASSES}/Round3Apf*.class .
-${JAR} cf0 round3Apf.jar Round3Apf*.class META-INF
-
-rm -Rf META-INF/services/*
-cp ${TESTSRC}/servicesRound4 META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-cp ${TESTCLASSES}/Round4Apf*.class .
-${JAR} cf0 round4Apf.jar Round4Apf*.class META-INF
-
-cp ${TESTCLASSES}/Round?.class .
-${JAR} cf0 rounds.jar Round?.class
-
-# cleanup file to prevent accidental discovery in current directory
-rm -Rf META-INF/services/*
-
-printf "%s\n" "-factorypath round1Apf.jar${SEP}round2Apf.jar${SEP}round3Apf.jar${SEP}round4Apf.jar"   > options8
-printf "%s\n" "-classpath rounds.jar"  >> options8
-printf "%s\n" "-s ./src"               >> options8
-printf "%s\n" "-d ./class"             >> options8
-#printf "%s\n" "-XPrintFactoryInfo"     >> options8
-#printf "%s\n" "-XPrintAptRounds"       >> options8
-printf "%s\n" "${TESTSRC}/Dummy1.java" >> options8
-${APT} @options8 > multiRoundOutput 2> multiRoundError
-
-diff ${DIFFOPTS} multiRoundOutput  ${TESTSRC}/goldenFactory.txt
-
-RESULT=$?
-case "$RESULT" in
-	0  )
-        ;;
-
-        * )
-        echo "FAILED: unexpected factory state"
-        exit 1
-esac
-
-TestFile "./class/Dummy5.class"
-
-# ---------------------------------------------------------------
-
-echo "Verifying static state with programmatic apt entry; no factory options"
-rm -Rf ./src/*
-rm -Rf ./class/*
-${JAVA} -cp ${TESTJAVA}/lib/tools.jar${SEP}${TESTCLASSES} WrappedStaticApf -s ./src -d ./class -XPrintAptRounds
-TestFile "./class/AndAhTwo.class"
-
-echo "Verifying static state with programmatic apt entry; -factory"
-rm -Rf ./src/*
-rm -Rf ./class/*
-${JAVA} -cp ${TESTJAVA}/lib/tools.jar${SEP}${TESTCLASSES} WrappedStaticApf -factory ErrorAPF -s ./src -d ./class -XPrintAptRounds
-TestFile "./class/AndAhTwo.class"
-
-echo "Verifying static state with programmatic apt entry; -factorypath"
-rm -Rf ./src/*
-rm -Rf ./class/*
-${JAVA} -cp ${TESTJAVA}/lib/tools.jar${SEP}${TESTCLASSES} WrappedStaticApf -factorypath round1Apf.jar -s ./src -d ./class -XPrintAptRounds
-TestFile "./class/AndAhTwo.class"
-
-echo "Verifying static state with programmatic apt entry; -factory and -factorypath"
-rm -Rf ./src/*
-rm -Rf ./class/*
-${JAVA} -cp ${TESTJAVA}/lib/tools.jar${SEP}${TESTCLASSES} WrappedStaticApf -factorypath round1Apf.jar -factory Round1Apf -s ./src -d ./class -XPrintAptRounds
-TestFile "./class/AndAhTwo.class"
-
-exit 0
--- a/langtools/test/tools/apt/Compile/golden.txt	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-error: It's a mad, mad, mad, mad world
-error: Something wicked this way comes
-HelloWorld.java:2: error: Boring class name
-public class HelloWorld {
-       ^
-3 errors
--- a/langtools/test/tools/apt/Compile/goldenFactory.txt	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-Round1Apf: 1
-	[final round: false, error raised: false, source files created: true, class files created: true]
-Round1Apf: 1 complete
-Round1Apf: 2
-Round2Apf: 1
-	[final round: false, error raised: false, source files created: true, class files created: true]
-Round1Apf: 2 complete
-Round1Apf: 3
-Round2Apf: 2
-Round3Apf: 1
-	[final round: false, error raised: false, source files created: true, class files created: false]
-Round1Apf: 3 complete
-Round1Apf: 4
-Round2Apf: 3
-Round3Apf: 2
-Round4Apf: 1
-	[final round: false, error raised: false, source files created: true, class files created: false]
-Round1Apf: 4 complete
-	[final round: false, error raised: false, source files created: true, class files created: false]
-Round4Apf: 1 complete
-Round1Apf: 5
-Round2Apf: 4
-Round3Apf: 3
-Round4Apf: 2
-	[final round: true, error raised: false, source files created: false, class files created: false]
-Round1Apf: 5 complete
-	[final round: true, error raised: false, source files created: false, class files created: false]
-Round4Apf: 2 complete
-Valediction
--- a/langtools/test/tools/apt/Compile/goldenWarn.txt	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-warning: Beware the ides of March!
-HelloAnnotation.java:6: Note: You are about to be warned
-@interface HelloAnnotation {
- ^
-HelloAnnotation.java:6: warning: Strange class name
-@interface HelloAnnotation {
- ^
-Note: MIRROR HelloAnnotation.java:6
-Note: VALUE HelloAnnotation.java:6
-Note: MIRROR HelloAnnotation.java:6
-Note: VALUE HelloAnnotation.java:6
-Note: MIRROR HelloAnnotation.java:6
-Note: VALUE HelloAnnotation.java:5
-2 warnings
--- a/langtools/test/tools/apt/Compile/servicesRound1	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-Round1Apf
--- a/langtools/test/tools/apt/Compile/servicesRound2	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-Round2Apf
--- a/langtools/test/tools/apt/Compile/servicesRound3	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-Round3Apf
--- a/langtools/test/tools/apt/Compile/servicesRound4	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-Round4Apf
--- a/langtools/test/tools/apt/Compile/servicesStaticApf	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-StaticApf
--- a/langtools/test/tools/apt/Compile/src/AhOneClass.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-public class AhOneClass {}
--- a/langtools/test/tools/apt/Compile/src/AndAhTwoClass.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-public class AndAhTwoClass {}
--- a/langtools/test/tools/apt/Compile/src/Round1Class.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-public class Round1Class {}
--- a/langtools/test/tools/apt/Discovery/Dee.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-import java.util.Collections;
-
-public class Dee implements AnnotationProcessorFactory {
-    static class DeeProc implements AnnotationProcessor {
-        DeeProc(AnnotationProcessorEnvironment ape) {}
-
-        public void process() {
-            return;
-        }
-    }
-
-    static Collection<String> supportedTypes;
-    static {
-        String types[] = {"dum"};
-        supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types));
-    }
-
-    static Collection<String> supportedOptions;
-    static {
-        String options[] = {""};
-        supportedOptions = Collections.unmodifiableCollection(Arrays.asList(options));
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedTypes;
-    }
-
-    /*
-     * Return the same processor independent of what annotations are
-     * present, if any.
-     */
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                        AnnotationProcessorEnvironment env) {
-        return new DeeProc(env);
-    }
-}
--- a/langtools/test/tools/apt/Discovery/Dum.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-import java.util.Collections;
-
-public class Dum implements AnnotationProcessorFactory {
-    static class DumProc implements AnnotationProcessor {
-        DumProc(AnnotationProcessorEnvironment ape) {}
-
-        public void process() {
-            return;
-        }
-    }
-
-    static Collection<String> supportedTypes;
-    static {
-        String types[] = {"dee"};
-        supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types));
-    }
-
-    static Collection<String> supportedOptions;
-    static {
-        String options[] = {""};
-        supportedOptions = Collections.unmodifiableCollection(Arrays.asList(options));
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedTypes;
-    }
-
-    /*
-     * Return the same processor independent of what annotations are
-     * present, if any.
-     */
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                        AnnotationProcessorEnvironment env) {
-        return new DumProc(env);
-    }
-}
--- a/langtools/test/tools/apt/Discovery/Empty.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-public class Empty {
-}
--- a/langtools/test/tools/apt/Discovery/PhantomTouch.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-import java.util.Collections;
-import java.io.*;
-
-public class PhantomTouch implements AnnotationProcessorFactory {
-    static class PhantomTouchProc implements AnnotationProcessor {
-        AnnotationProcessorEnvironment ape;
-        PhantomTouchProc(AnnotationProcessorEnvironment ape) {
-            this.ape = ape;
-        }
-
-        public void process() {
-            // Only run the processor on the initial apt invocation
-            if (ape.getSpecifiedTypeDeclarations().size() == 0) {
-                boolean result;
-                try {
-                    // Create temporary file
-                    java.io.File f = new java.io.File("touched");
-                    result = f.createNewFile();
-
-                    if (result) {
-                        // Create new source file
-                        PrintWriter pw = ape.getFiler().createSourceFile("HelloWorld");
-                        pw.println("public class HelloWorld {");
-                        pw.println("  // Phantom hello world");
-                        pw.println("  public static void main(String argv[]) {");
-                        pw.println("    System.out.println(\"Hello World\");");
-                        pw.println("  }");
-                        pw.println("}");
-                    } else
-                        throw new RuntimeException("touched file already exists!");
-                } catch (java.io.IOException e) {
-                    result = false;
-                }
-            }
-        }
-    }
-
-    static final Collection<String> supportedOptions;
-    static final Collection<String> supportedTypes;
-
-    static {
-        String options[] = {""};
-        supportedOptions = Collections.unmodifiableCollection(Arrays.asList(options));
-
-        String types[] = {"*"};
-        supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types));
-    }
-
-    public Collection<String> supportedAnnotationTypes() {return supportedTypes;}
-    public Collection<String> supportedOptions() {return supportedOptions;}
-
-
-    /*
-     * Return the same processor independent of what annotations are
-     * present, if any.
-     */
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                        AnnotationProcessorEnvironment env) {
-        return new PhantomTouchProc(env);
-    }
-}
--- a/langtools/test/tools/apt/Discovery/PhantomUpdate.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * JSR 269 annotation processor to test combined apt + JSR 269
- * annotation processor file generation and option passing.
- */
-
-import javax.annotation.processing.*;
-import static  javax.lang.model.SourceVersion.*;
-import javax.lang.model.element.*;
-import javax.lang.model.type.*;
-import javax.lang.model.util.*;
-import java.util.*;
-import java.io.*;
-
-@SupportedAnnotationTypes("*")  // Process all annotations
-@SupportedSourceVersion(RELEASE_6)
-public class PhantomUpdate extends AbstractProcessor {
-    boolean firstRound = true;
-
-    public boolean process(Set<? extends TypeElement> annotations,
-                           RoundEnvironment roundEnv) {
-        if (firstRound) {
-            verifyOptions();
-            printGoodbyeWorld();
-            firstRound = false;
-        }
-        return true; // Claim all annotations
-    }
-
-    /*
-     * Expected options are "foo" and "bar=baz".
-     */
-    private void verifyOptions() {
-        Map<String, String> actualOptions = processingEnv.getOptions();
-        Map<String, String> expectedOptions = new LinkedHashMap<String, String>();
-        expectedOptions.put("foo", null);
-        expectedOptions.put("bar", "baz");
-
-        if (!actualOptions.equals(expectedOptions) ) {
-            System.err.println("Expected options " + expectedOptions +
-                               "\n but got " + actualOptions);
-            throw new RuntimeException("Options mismatch");
-        }
-    }
-
-    private void printGoodbyeWorld() {
-        try {
-            // Create new source file
-            PrintWriter pw = new PrintWriter(processingEnv.getFiler().createSourceFile("GoodbyeWorld").openWriter());
-            pw.println("public class GoodbyeWorld {");
-            pw.println("  // PhantomUpdate Goodbye world");
-            pw.println("  public static void main(String argv[]) {");
-            pw.println("    System.out.println(\"Goodbye World\");");
-            pw.println("  }");
-            pw.println("}");
-            pw.close();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-}
--- a/langtools/test/tools/apt/Discovery/Touch.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-import java.util.Collections;
-import java.io.*;
-
-public class Touch implements AnnotationProcessorFactory {
-    static class TouchProc implements AnnotationProcessor {
-        AnnotationProcessorEnvironment ape;
-        TouchProc(AnnotationProcessorEnvironment ape) {
-            this.ape = ape;
-        }
-
-        public void process() {
-            boolean result;
-            // Only run the processor on the initial apt invocation
-            Collection<TypeDeclaration> tdecls = ape.getSpecifiedTypeDeclarations();
-
-            if (tdecls.size() == 1) {
-                for(TypeDeclaration decl: tdecls) {
-                    if (! decl.getSimpleName().equals("Touch") )
-                        return;
-                }
-
-                try {
-                    // Create temporary file
-                    java.io.File f = new java.io.File("touched");
-                    result = f.createNewFile();
-
-
-                    Filer filer = ape.getFiler();
-
-                    // Create new source file
-                    PrintWriter pw = filer.createSourceFile("HelloWorld");
-                    pw.println("public class HelloWorld {");
-                    pw.println("  public static void main(String argv[]) {");
-                    pw.println("    System.out.println(\"Hello World\");");
-                    pw.println("  }");
-                    pw.println("}");
-
-                    // Create new class file and copy Empty.class
-                    OutputStream os = filer.createClassFile("Empty");
-                    FileInputStream fis = new FileInputStream("Empty.clazz");
-                    int datum;
-                    while((datum = fis.read()) != -1)
-                        os.write(datum);
-
-                } catch (java.io.IOException e) {
-                    result = false;
-                }
-                if (!result)
-                    throw new RuntimeException("touched file already exists or other error");
-            }
-
-        }
-
-    }
-
-    static Collection<String> supportedTypes;
-    static {
-        String types[] = {"*"};
-        supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types));
-    }
-
-    static Collection<String> supportedOptions;
-    static {
-        String options[] = {""};
-        supportedOptions = Collections.unmodifiableCollection(Arrays.asList(options));
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedTypes;
-    }
-
-    /*
-     * Return the same processor independent of what annotations are
-     * present, if any.
-     */
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                        AnnotationProcessorEnvironment env) {
-        return new TouchProc(env);
-    }
-}
--- a/langtools/test/tools/apt/Discovery/discovery.sh	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,410 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# @test
-# @bug 4984412 4985113 4908512 4990905 4998007 4998218 5002340 5023882 6370261 6363481
-# @run shell ../verifyVariables.sh
-# @compile PhantomUpdate.java
-# @run shell discovery.sh
-# @summary Test consistency of annotation discovery
-# @author Joseph D. Darcy
-
-
-# If the file does not exist, exit with an error
-TestFile() {
-	if [ ! -f ${1} ]; then
-		printf "%s\n" "File ${1} not found."
-		exit 1
-	fi
-}
-
-OS=`uname -s`;
-case "${OS}" in
-        Windows* | CYGWIN* )
-                SEP=";"
-        ;;
-
-	* )
-	SEP=":"
-	;;
-esac
-
-TOOLSJAR=${TESTJAVA}/lib/tools.jar
-
-OLDCP=${CLASSPATH}
-
-JARCP=tweedle.jar${SEP}touch.jar${SEP}${TOOLSJAR}
-SOURCEP=${TESTSRC}
-FULLCP=${JARCP}${SEP}${SOURCEP}
-BADCP=tweedle.jar${SEP}badTouch.jar${SEP}${TOOLSJAR}
-
-# Construct path to apt executable
-APT="${TESTJAVA}/bin/apt ${TESTTOOLVMOPTS} "
-
-
-# Construct path to apt executable, no compilation
-APTNC="${APT} -nocompile "
-
-
-printf "%s\n" "APT = ${APT}"
-
-# Construct path to javac executable
-JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} -source 1.5 -sourcepath ${TESTSRC} -classpath ${TOOLSJAR} -d . "
-JAR="${TESTJAVA}/bin/jar "
-
-$JAVAC ${TESTSRC}/Dee.java ${TESTSRC}/Dum.java ${TESTSRC}/Touch.java ${TESTSRC}/PhantomTouch.java ${TESTSRC}/Empty.java
-RESULT=$?
-
-case "${RESULT}" in
-        0  )
-        ;;
-
-        * )
-        echo "Compilation failed."
-        exit 1
-esac
-
-mv Empty.class Empty.clazz
-
-echo "Making services directory and copying services information."
-mkdir -p META-INF/services
-mkdir -p phantom
-
-rm -f touch.jar
-rm -f badTouch.jar
-
-cp ${TESTSRC}/servicesTweedle META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-
-${JAR} cf0 tweedle.jar Dee*.class Dum*.class META-INF
-
-rm -f META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-cp ${TESTSRC}/servicesTouch ./META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-
-${JAR} cf0 touch.jar Touch*.class META-INF
-
-rm -f META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-cp ${TESTSRC}/servicesPhantomTouch ./META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-
-${JAR} cf0 phantom/phantom.jar PhantomTouch*.class META-INF
-
-# cleanup file to prevent accidental discovery in current directory
-rm -f META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-
-# Jar files created; verify right output file is touched
-
-#---------------------------------------------------------
-
-# Test different combinations of classpath, sourcepath, and
-# destination directories
-
-
-#
-# Classpath on commandline; no output directories
-#
-
-rm -f touched 
-rm -f HelloWorld.java
-rm -f Empty.class
-
-unset CLASSPATH
-printf "%s\n" "-classpath ${JARCP}"     > options1
-printf "%s\n" "-sourcepath ${SOURCEP}" >> options1
-printf "%s\n" "${TESTSRC}/Touch.java"  >> options1
-
-${APTNC} @options1
-
-echo "Testing case 1"
-TestFile "touched"
-TestFile "HelloWorld.java"
-TestFile "Empty.class"
-
-#
-# Class path set through environment variable
-#
-
-rm -f touched
-rm -f HelloWorld.java
-rm -f Empty.class
-
-unset CLASSPATH
-CLASSPATH=${JARCP}
-export CLASSPATH
-printf "%s\n" "-sourcepath ${SOURCEP}" > options2
-printf "%s\n" "${TESTSRC}/Touch.java" >> options2
-
-${APTNC} @options2
-
-echo "Testing case 2"
-TestFile "touched"
-TestFile "HelloWorld.java"
-TestFile "Empty.class"
-
-#
-# No explicit source path
-#
-
-rm -f touched
-rm -f HelloWorld.java
-rm -f Empty.class
-
-unset CLASSPATH
-CLASSPATH=${FULLCP}
-export CLASSPATH
-printf "%s\n" "${TESTSRC}/Touch.java"  > options3
-
-${APTNC} @options3
-
-echo "Testing case 3"
-TestFile "touched"
-TestFile "HelloWorld.java"
-TestFile "Empty.class"
-
-
-#
-# Classpath on commandline; class output directory
-#
-
-rm -f touched
-rm -f HelloWorld.java
-rm -Rf classes/Empty.class
-
-unset CLASSPATH
-printf "%s\n" "-classpath ${JARCP}"     > options4
-printf "%s\n" "-sourcepath ${SOURCEP}" >> options4
-printf "%s\n" "-d classes"             >> options4
-printf "%s\n" "${TESTSRC}/Touch.java"  >> options4
-
-${APTNC} @options4
-
-echo "Testing case 4"
-TestFile "touched"
-TestFile "HelloWorld.java"
-TestFile "classes/Empty.class"
-
-#
-# Classpath on commandline; source output directory
-#
-
-rm -f touched
-rm -Rf src
-rm -f Empty.class
-
-unset CLASSPATH
-printf "%s\n" "-classpath ${JARCP}"     > options5
-printf "%s\n" "-sourcepath ${SOURCEP}" >> options5
-printf "%s\n" "-s src"                 >> options5
-printf "%s\n" "${TESTSRC}/Touch.java"  >> options5
-
-${APTNC} @options5
-
-echo "Testing case 5"
-TestFile "touched"
-TestFile "src/HelloWorld.java"
-TestFile "Empty.class"
-
-
-#
-# Classpath on commandline; class and source output directory
-#
-
-rm -f touched
-rm -Rf src
-rm -Rf classes
-
-unset CLASSPATH
-printf "%s\n" "-classpath ${JARCP}"     > options6
-printf "%s\n" "-sourcepath ${SOURCEP}" >> options6
-printf "%s\n" "-d classes"             >> options6
-printf "%s\n" "-s src"                 >> options6
-printf "%s\n" "${TESTSRC}/Touch.java"  >> options6
-
-${APTNC} @options6
-
-echo "Testing case 6"
-TestFile "touched"
-TestFile "src/HelloWorld.java"
-TestFile "classes/Empty.class"
-
-#
-# Classpath appended to bootclasspath; no output directories
-#
-
-rm -f touched
-rm -f HelloWorld.java
-rm -f Empty.class
-
-unset CLASSPATH
-printf "%s\n" "-Xbootclasspath/a:${JARCP}" > options7
-printf "%s\n" "-classpath /dev/null"      >> options7
-printf "%s\n" "${TESTSRC}/Touch.java"     >> options7
-
-${APTNC} @options7
-
-echo "Testing case 7"
-TestFile "touched"
-TestFile "HelloWorld.java"
-TestFile "Empty.class"
-
-#
-# Classpath in extdirs; no output directories
-#
-
-rm -f touched
-rm -f HelloWorld.java
-rm -f Empty.class
-
-unset CLASSPATH
-printf "%s\n" "-extdirs ."              > options8
-printf "%s\n" "-classpath ${TOOLSJAR}" >> options8
-printf "%s\n" "${TESTSRC}/Touch.java"  >> options8
-
-${APTNC} @options8
-
-echo "Testing case 8"
-TestFile "touched"
-TestFile "HelloWorld.java"
-TestFile "Empty.class"
-
-#
-# Classpath in extdirs, take 2; no output directories
-#
-
-rm -f touched
-rm -f HelloWorld.java
-rm -f Empty.class
-
-unset CLASSPATH
-printf "%s\n" "-Djava.ext.dirs=."        > options9
-printf "%s\n" "-classpath ${TOOLSJAR}"  >> options9
-printf "%s\n" "${TESTSRC}/Touch.java"   >> options9
-
-${APTNC} @options9
-
-echo "Testing case 9"
-TestFile "touched"
-TestFile "HelloWorld.java"
-TestFile "Empty.class"
-
-#
-# Classpath in -endorseddirs; no output directories
-#
-
-rm -f touched
-rm -f HelloWorld.java
-rm -f Empty.class
-
-unset CLASSPATH
-printf "%s\n" "-endorseddirs ."          > options10
-printf "%s\n" "-classpath ${TOOLSJAR}"  >> options10
-printf "%s\n" "${TESTSRC}/Touch.java"   >> options10
-
-${APTNC} @options10
-
-echo "Testing case 10"
-TestFile "touched"
-TestFile "HelloWorld.java"
-TestFile "Empty.class"
-
-#
-# Testing apt invocation with no command line options
-#
-
-rm -f touched
-rm -f HelloWorld.java
-rm -f Empty.class
-
-unset CLASSPATH
-CLASSPATH=./phantom/phantom.jar
-export CLASSPATH
-
-${APT}
-
-echo "Testing empty command line"
-TestFile "touched"
-TestFile "HelloWorld.java"
-
-
-#
-# Verify apt and JSR 269 annotation processors can be run from same
-# invocation and both use the output directories
-#
-
-rm -f touched
-rm -f src/HelloWorld.java
-rm -f src/GoodbyeWorld.java
-rm -f classes/HelloWorld.class
-rm -f classes/GoodbyeWorld.class
-
-unset CLASSPATH
-
-
-printf "%s\n" "-classpath ./phantom/phantom.jar" > options11
-printf "%s\n" "-sourcepath ${SOURCEP}"          >> options11
-printf "%s\n" "-factory PhantomTouch "          >> options11
-printf "%s\n" "-s src"                          >> options11
-printf "%s\n" "-d classes"                      >> options11
-printf "%s\n" "-A"             	                >> options11
-printf "%s\n" "-Afoo"          	                >> options11
-printf "%s\n" "-Abar=baz"      	                >> options11
-printf "%s\n" "-processorpath $TESTCLASSES"     >> options11
-printf "%s\n" "-processor PhantomUpdate"        >> options11
-
-${APT} @options11
-
-echo "Testing combined apt and JSR 269 processing"
-TestFile touched
-TestFile "src/HelloWorld.java"
-TestFile "src/GoodbyeWorld.java"
-TestFile "classes/HelloWorld.class"
-TestFile "classes/GoodbyeWorld.class"
-
-#
-# Verify running with badTouch doesn't exit successfully
-#
-
-rm -f ./META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-cp ${TESTSRC}/servicesBadTouch ./META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-
-${JAR} cf0 badTouch.jar Touch*.class META-INF
-
-
-unset CLASSPATH
-printf "%s\n" "-classpath ${BADCP}"     > optionsBad
-printf "%s\n" "-sourcepath ${SOURCEP}" >> optionsBad
-printf "%s\n" "${TESTSRC}/Touch.java"  >> optionsBad
-
-${APTNC} @optionsBad 2> /dev/null
-
-RESULT=$?
-
-case "${RESULT}" in
-        0  )
-	echo "Improper exit zero with bad services information."
-	exit 1
-        ;;
-esac
-
-
-exit 0;
--- a/langtools/test/tools/apt/Discovery/servicesBadTouch	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-Touche
--- a/langtools/test/tools/apt/Discovery/servicesPhantomTouch	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-PhantomTouch
--- a/langtools/test/tools/apt/Discovery/servicesTouch	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-Touch
--- a/langtools/test/tools/apt/Discovery/servicesTweedle	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-Dee
-Dum
--- a/langtools/test/tools/apt/Misc/Marked.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-class Marked {
-
-    @Marker
-        class marked1 {};
-
-
-    class Unmarked1 {};
-
-    @Marker
-        class marked2 {};
-
-
-    class Unmarked2 {};
-
-    @Marker
-        class marked3 {};
-
-
-    class Unmarked3 {};
-
-    @Marker
-        class marked4 {};
-
-
-    class Unmarked4 {};
-
-}
--- a/langtools/test/tools/apt/Misc/Marker.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-public @interface Marker {}
--- a/langtools/test/tools/apt/Misc/Misc.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Arrays;
-import java.util.Collections;
-
-public class Misc implements AnnotationProcessorFactory {
-    static class MiscCheck implements AnnotationProcessor {
-        AnnotationProcessorEnvironment ape;
-        MiscCheck(AnnotationProcessorEnvironment ape) {
-            this.ape = ape;
-        }
-
-        public void process() {
-            Collection<Declaration> decls = ape.
-                getDeclarationsAnnotatedWith((AnnotationTypeDeclaration)
-                                             ape.getTypeDeclaration("Marker"));
-
-            // Should write more robust test that examines the
-            // annotation mirrors for the declaration in question.
-            for(Declaration decl: decls) {
-                if (!decl.getSimpleName().startsWith("marked") )
-                    throw new RuntimeException();
-            }
-        }
-    }
-
-
-    static Collection<String> supportedTypes;
-    static {
-        String types[] = {"*"};
-        supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types));
-    }
-
-    Collection<String> supportedOptions =
-        Collections.unmodifiableCollection(new HashSet<String>());
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedTypes;
-    }
-
-    /*
-     * Return the same processor independent of what annotations are
-     * present, if any.
-     */
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                               AnnotationProcessorEnvironment ape) {
-        return new MiscCheck(ape);
-    }
-}
--- a/langtools/test/tools/apt/Misc/misc.sh	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# @test
-# @bug 5007250
-# @run shell ../verifyVariables.sh
-# @run shell misc.sh
-# @summary Miscelleneous tests
-# @author Joseph D. Darcy
-
-OS=`uname -s`;
-case "${OS}" in
-        Windows* | CYGWIN* )
-                SEP=";"
-        ;;
-
-	* )
-	SEP=":"
-	;;
-esac
-
-JARCP=misc.jar
-SOURCEP=${TESTSRC}
-
-# Construct path to apt executable
-APT="${TESTJAVA}/bin/apt ${TESTTOOLVMOPTS} -nocompile "
-
-printf "%s\n" "APT = ${APT}"
-
-# Construct path to javac executable
-JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} -source 1.5 -sourcepath ${TESTSRC} -classpath ${TESTJAVA}/lib/tools.jar -d . "
-JAR="${TESTJAVA}/bin/jar "
-
-${JAVAC} ${TESTSRC}/Misc.java ${TESTSRC}/Marked.java 
-RESULT=$?
-
-case "${RESULT}" in
-        0  )
-        ;;
-
-        * )
-        echo "Compilation failed."
-        exit 1
-esac
-
-
-echo "Making services directory and copying services information."
-mkdir -p META-INF/services
-
-cp ${TESTSRC}/servicesMisc META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-
-${JAR} cf0 misc.jar Misc*.class META-INF
-
-# Jar files created; verify options properly present on both initial
-# and recursive apt runs
-
-#---------------------------------------------------------
-
-unset CLASSPATH
-
-printf "%s\n" "-classpath ${JARCP}"     > options
-printf "%s\n" "-sourcepath ${SOURCEP}" >> options
-printf "%s\n" "${TESTSRC}/Marked.java" >> options
-
-${APT} @options
-
-RESULT=$?
-case "${RESULT}" in
-        0  )
-	;;	
-	
-	* )
-	echo "Problem with result"
-	exit 1
-        ;;
-esac
-
-exit 0;
--- a/langtools/test/tools/apt/Misc/servicesMisc	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-Misc
-
--- a/langtools/test/tools/apt/Options/Marked.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-@Marker
-class Marked {
-}
--- a/langtools/test/tools/apt/Options/Marker.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-public @interface Marker {}
--- a/langtools/test/tools/apt/Options/OptionChecker.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Map;
-import java.util.Arrays;
-import java.util.Collections;
-
-public class OptionChecker implements AnnotationProcessorFactory {
-    static class OptionCheck implements AnnotationProcessor {
-        AnnotationProcessorEnvironment ape;
-        OptionCheck(AnnotationProcessorEnvironment ape) {
-            this.ape = ape;
-        }
-
-        public void process() {
-            Map<String, String> options = ape.getOptions();
-            if (options.containsKey("-Afoo") &&
-                options.containsKey("-Abar") &&
-                options.containsKey("-classpath") ) {
-                System.out.println("Expected options found.");
-                return;  // All is well
-            } else {
-                System.err.println("Unexpected options values: " + options);
-                throw new RuntimeException();
-            }
-        }
-    }
-
-    static class HelloWorld implements AnnotationProcessor {
-        AnnotationProcessorEnvironment ape;
-        HelloWorld(AnnotationProcessorEnvironment ape) {
-            this.ape = ape;
-        }
-
-        public void process() {
-            java.io.PrintWriter pw;
-            try {
-                pw = ape.getFiler().createSourceFile("HelloWorld");
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-
-            pw.println("public class HelloWorld {");
-            pw.println("  public static void main (String argv[]) {");
-            pw.println("    System.out.println(\"Hello apt world.\");");
-            pw.println("  }");
-            pw.println("}");
-        }
-    }
-
-
-    static Collection<String> supportedTypes;
-    static {
-        String types[] = {"*"};
-        supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types));
-    }
-
-    static Collection<String> supportedOptions;
-    static {
-        String options[] = {"-Afoo", "-Abar"};
-        supportedOptions = Collections.unmodifiableCollection(Arrays.asList(options));
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedTypes;
-    }
-
-    /*
-     * Return the same processor independent of what annotations are
-     * present, if any.
-     */
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                               AnnotationProcessorEnvironment ape) {
-
-        if (atds.contains(ape.getTypeDeclaration("Marker"))) {
-            System.out.println("Returning composite processor.");
-            return AnnotationProcessors.getCompositeAnnotationProcessor(new OptionCheck(ape),
-                                                                        new HelloWorld(ape));
-        }
-        else {
-            System.out.println("Returning single processor.");
-            return new OptionCheck(ape);
-        }
-    }
-}
--- a/langtools/test/tools/apt/Options/options.sh	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# @test
-# @bug 4993950 4993277
-# @run shell ../verifyVariables.sh
-# @run shell options.sh
-# @summary Test availabilty of command line options in processors
-# @author Joseph D. Darcy
-
-OS=`uname -s`;
-case "${OS}" in
-        Windows* | CYGWIN* )
-                SEP=";"
-        ;;
-
-	* )
-	SEP=":"
-	;;
-esac
-
-JARCP=option.jar
-SOURCEP=${TESTSRC}
-
-
-# Construct path to apt executable
-APT="${TESTJAVA}/bin/apt ${TESTTOOLVMOPTS} -nocompile "
-
-printf "%s\n" "APT = ${APT}"
-
-# Construct path to javac executable
-JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} -source 1.5 -sourcepath ${TESTSRC} -classpath ${TESTJAVA}/lib/tools.jar -d . "
-JAR="${TESTJAVA}/bin/jar "
-
-${JAVAC} ${TESTSRC}/OptionChecker.java
-RESULT=$?
-
-case "${RESULT}" in
-        0  )
-        ;;
-
-        * )
-        echo "Compilation failed."
-        exit 1
-esac
-
-
-echo "Making services directory and copying services information."
-mkdir -p META-INF/services
-
-cp ${TESTSRC}/servicesOptions META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-
-${JAR} cf0 option.jar OptionChecker*.class META-INF
-
-# Jar files created; verify options properly present on both initial
-# and recursive apt runs
-
-#---------------------------------------------------------
-
-unset CLASSPATH
-
-printf "%s\n" "-classpath ${JARCP}"     > options
-printf "%s\n" "-sourcepath ${SOURCEP}" >> options
-printf "%s\n" "${TESTSRC}/Marked.java" >> options
-
-${APT} @options
-
-RESULT=$?
-case "${RESULT}" in
-        0  )
-	echo "Failed to indentify missing options"
-	exit 1
-	;;	
-	
-	* )
-        ;;
-esac
-
-printf "%s\n" "-Afoo -Abar" >> options
-
-${APT} @options
-
-RESULT=$?
-case "${RESULT}" in
-        0  )
-	;;	
-	
-	* )
-	echo "Options not found properly."
-	exit 1
-        ;;
-esac
-
-exit 0;
--- a/langtools/test/tools/apt/Options/servicesOptions	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OptionChecker
--- a/langtools/test/tools/apt/Scanners/Counter.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-
-import static java.util.Collections.*;
-import static com.sun.mirror.util.DeclarationVisitors.*;
-
-/*
- * Used to verify counts from different kinds of declaration scanners.
- */
-public class Counter implements AnnotationProcessorFactory {
-    static class CounterProc implements AnnotationProcessor {
-        static class CountingVisitor extends SimpleDeclarationVisitor {
-            int count;
-            int count() {
-                return count;
-            }
-
-            CountingVisitor() {
-                count = 0;
-            }
-
-            public void visitDeclaration(Declaration d) {
-                count++;
-                System.out.println(d.getSimpleName());
-            }
-        }
-
-        AnnotationProcessorEnvironment env;
-        CounterProc(AnnotationProcessorEnvironment env) {
-            this.env = env;
-        }
-
-        public void process() {
-            for(TypeDeclaration td: env.getSpecifiedTypeDeclarations() ) {
-                CountingVisitor sourceOrder = new CountingVisitor();
-                CountingVisitor someOrder = new CountingVisitor();
-
-                System.out.println("Source Order Scanner");
-                td.accept(getSourceOrderDeclarationScanner(sourceOrder,
-                                                           NO_OP));
-
-                System.out.println("\nSome Order Scanner");
-                td.accept(getDeclarationScanner(someOrder,
-                                                NO_OP));
-
-                if (sourceOrder.count() != someOrder.count() )
-                    throw new RuntimeException("Counts from different scanners don't agree");
-            }
-
-        }
-    }
-
-    static Collection<String> supportedTypes;
-    static {
-        String types[] = {"*"};
-        supportedTypes = unmodifiableCollection(Arrays.asList(types));
-    }
-
-    static Collection<String> supportedOptions;
-    static {
-        String options[] = {""};
-        supportedOptions = unmodifiableCollection(Arrays.asList(options));
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedTypes;
-    }
-
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                               AnnotationProcessorEnvironment env) {
-        return new CounterProc(env);
-    }
-
-}
--- a/langtools/test/tools/apt/Scanners/MemberOrderApf.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Arrays;
-
-import static java.util.Collections.*;
-import static com.sun.mirror.util.DeclarationVisitors.*;
-
-/*
- * The processor of this factory verifies class members are returned
- * in source-code order.
- */
-public class MemberOrderApf implements AnnotationProcessorFactory {
-    // Process any set of annotations
-    private static final Collection<String> supportedAnnotations
-        = unmodifiableCollection(Arrays.asList("*"));
-
-    // No supported options
-    private static final Collection<String> supportedOptions = emptySet();
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedAnnotations;
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public AnnotationProcessor getProcessorFor(
-            Set<AnnotationTypeDeclaration> atds,
-            AnnotationProcessorEnvironment env) {
-        return new MemberOrderAp(env);
-    }
-
-    private static class MemberOrderAp implements AnnotationProcessor {
-        private final AnnotationProcessorEnvironment env;
-        MemberOrderAp(AnnotationProcessorEnvironment env) {
-            this.env = env;
-        }
-
-        private void verifyOrder(Collection<? extends Declaration> decls) {
-            int count = 0;
-            for(Declaration decl: decls) {
-                VisitOrder order = decl.getAnnotation(VisitOrder.class);
-                if (order.value() <= count)
-                    throw new RuntimeException("Out of order declarations");
-                count = order.value();
-            }
-        }
-
-        public void process() {
-            for(TypeDeclaration td: env.getSpecifiedTypeDeclarations()) {
-                verifyOrder(td.getFields());
-                verifyOrder(td.getMethods());
-            }
-        }
-    }
-}
--- a/langtools/test/tools/apt/Scanners/Order.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-
-@VisitOrder(1)
-public class Order {
-    @VisitOrder(2)
-    static double d;
-
-    @VisitOrder(3)
-    private Order() {}
-
-    @VisitOrder(4)
-    int i;
-
-    @VisitOrder(5)
-    static class InnerOrder {
-        @VisitOrder(6)
-        InnerOrder(){}
-
-        @VisitOrder(7)
-        String toString() {return "";}
-    }
-
-    @VisitOrder(8)
-    String toString() {return "";}
-
-    @VisitOrder(9)
-    InnerOrder io;
-
-    @VisitOrder(10)
-    String foo() {return toString();}
-}
--- a/langtools/test/tools/apt/Scanners/Scanner.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.Map;
-import java.util.Arrays;
-import java.util.Collections;
-
-
-public class Scanner implements AnnotationProcessorFactory {
-    static class ScannerProc implements AnnotationProcessor {
-        AnnotationProcessorEnvironment env;
-        ScannerProc(AnnotationProcessorEnvironment env) {
-            this.env = env;
-        }
-
-        static class CountingVisitor extends SimpleDeclarationVisitor {
-            int count;
-            CountingVisitor() {
-                count = 0;
-            }
-
-            public void visitDeclaration(Declaration d) {
-                count++;
-
-                Collection<AnnotationMirror> ams = d.getAnnotationMirrors();
-                if (ams == null)
-                    throw new RuntimeException("Declaration " + d +
-                                               " not annotated with visit order.");
-                else {
-                    if (ams.size() != 1)
-                        throw new RuntimeException("Declaration " + d +
-                                                   " has wrong number of declarations.");
-                    else {
-                        for(AnnotationMirror am: ams) {
-                            Map<AnnotationTypeElementDeclaration,AnnotationValue> elementValues = am.getElementValues();
-                            for(AnnotationTypeElementDeclaration atmd: elementValues.keySet()) {
-                                if (!atmd.getDeclaringType().toString().equals("VisitOrder"))
-                                    throw new RuntimeException("Annotation " + atmd +
-                                                               " is the wrong type.");
-                                else {
-                                    AnnotationValue av =
-                                        elementValues.get(atmd);
-                                    Integer value = (Integer) av.getValue();
-                                    if (value.intValue() != count)
-                                        throw new RuntimeException("Expected declaration " + d +
-                                                                   " to be in position " + count +
-                                                                   " instead of " + value.intValue());
-
-                                    System.out.println("Declaration " + d +
-                                                       ": visit order " + value.intValue());
-                                }
-                            }
-
-                        }
-                    }
-                }
-
-            }
-        }
-
-        public void process() {
-            for(TypeDeclaration td: env.getSpecifiedTypeDeclarations() ) {
-                td.accept(DeclarationVisitors.getSourceOrderDeclarationScanner(new CountingVisitor(),
-                                                                               DeclarationVisitors.NO_OP));
-            }
-        }
-    }
-
-
-    static Collection<String> supportedTypes;
-    static {
-        String types[] = {"*"};
-        supportedTypes = Collections.unmodifiableCollection(Arrays.asList(types));
-    }
-
-    static Collection<String> supportedOptions;
-    static {
-        String options[] = {""};
-        supportedOptions = Collections.unmodifiableCollection(Arrays.asList(options));
-    }
-
-    public Collection<String> supportedOptions() {
-        return supportedOptions;
-    }
-
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedTypes;
-    }
-
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                        AnnotationProcessorEnvironment env) {
-        return new ScannerProc(env);
-    }
-
-}
--- a/langtools/test/tools/apt/Scanners/TestEnum.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-public enum TestEnum {
-    QUIZ,
-    EXAM,
-    MIDTERM,
-    FINAL,
-    QUALIFIER;
-}
--- a/langtools/test/tools/apt/Scanners/VisitOrder.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * Integer to indicate what order a declaration is expected to be
- * visited in by a DeclarationScanner.
- */
-
-@interface VisitOrder {
-    int value();
-}
--- a/langtools/test/tools/apt/Scanners/scanner.sh	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# @test
-# @bug 4989093 5009164 5023880 5029482 6206786
-# @run shell ../verifyVariables.sh
-# @run shell scanner.sh
-# @summary Test source order scanner
-# @author Joseph D. Darcy
-
-OS=`uname -s`;
-case "${OS}" in
-        Windows* | CYGWIN* )
-                SEP=";"
-        ;;
-
-	* )
-	SEP=":"
-	;;
-esac
-
-JARCP=scanner.jar
-
-# Construct path to apt executable
-APT="${TESTJAVA}/bin/apt ${TESTTOOLVMOPTS} -nocompile "
-
-printf "%s\n" "APT = ${APT}"
-
-# Construct path to javac executable
-JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} -source 1.5 -sourcepath ${TESTSRC} -classpath ${TESTJAVA}/lib/tools.jar -d . "
-JAR="${TESTJAVA}/bin/jar "
-
-${JAVAC} ${TESTSRC}/Scanner.java ${TESTSRC}/VisitOrder.java ${TESTSRC}/Counter.java ${TESTSRC}/MemberOrderApf.java
-RESULT=$?
-
-case "${RESULT}" in
-        0  )
-        ;;
-
-        * )
-        echo "Compilation failed."
-        exit 1
-esac
-
-
-echo "Making services directory and copying services information."
-mkdir -p META-INF/services
-
-cp ${TESTSRC}/servicesScanner META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
-
-${JAR} cf0 scanner.jar Scanner*.class META-INF
-
-# Jar files created; verify options properly present on both initial
-# and recursive apt runs
-
-#---------------------------------------------------------
-
-unset CLASSPATH
-
-printf "%s\n" "-classpath ${JARCP}"     > options
-printf "%s\n" "-sourcepath ${TESTSRC}" >> options
-printf "%s\n" "${TESTSRC}/Order.java"  >> options
-
-${APT} @options
-
-RESULT=$?
-case "${RESULT}" in
-        0  )
-	;;	
-	
-	* )
-	echo "Program elements visited in wrong order"
-	exit 1
-        ;;
-esac
-
-#---------------------------------------------------------
-
-# Verify that plain decl' scanner and source order decl' scanner
-# record the same number of elements for an enum
-
-printf "%s\n" "-factorypath ."            > options2
-printf "%s\n" "-factory Counter"         >> options2
-printf "%s\n" "-sourcepath ${TESTSRC}"   >> options2
-printf "%s\n" "${TESTSRC}/TestEnum.java" >> options2
-
-
-$APT @options2
-
-RESULT=$?
-case "${RESULT}" in
-        0  )
-	;;	
-	
-	* )
-	echo "Improper counts"
-	exit 1
-        ;;
-esac
-
-#---------------------------------------------------------
-
-# Verify that members happen to be returned in source order
-
-printf "%s\n" "-factorypath ."            > options3
-printf "%s\n" "-factory MemberOrderApf"  >> options3
-printf "%s\n" "-sourcepath ${TESTSRC}"   >> options3
-printf "%s\n" "${TESTSRC}/Order.java"    >> options3
-
-$APT @options3
-
-RESULT=$?
-case "${RESULT}" in
-        0  )
-	;;	
-	
-	* )
-	echo "Improper counts"
-	exit 1
-        ;;
-esac
-
-
-exit 0;
--- a/langtools/test/tools/apt/Scanners/servicesScanner	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-Scanner
--- a/langtools/test/tools/apt/lib/Ignore.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import java.lang.annotation.*;
-
-/**
- * An annotation used to indicate that a test -- a method annotated
- * with @Test -- should not be executed.
- *
- * @author Scott Seligman
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Ignore {
-
-    /**
-     * Reason for ignoring this test.
-     */
-    String value() default "";
-}
--- a/langtools/test/tools/apt/lib/Test.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import java.lang.annotation.*;
-
-/**
- * An annotation used to indicate that a method constitutes a test,
- * and which provides the expected result.  The method must take no parameters.
- *
- * @author Scott Seligman
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Test {
-
-    /**
-     * An array containing the method's expected result (or
-     * elements of the result if the return type is a Collection).
-     * Value is ignored if return type is void.
-     * Entries are converted to strings via {@link String#valueOf(Object)}.
-     */
-    String[] result() default {};
-
-    /**
-     * True if the order of the elements in result() is significant.
-     */
-    boolean ordered() default false;
-}
--- a/langtools/test/tools/apt/lib/TestProcessor.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import java.lang.reflect.Method;
-import java.util.*;
-import com.sun.mirror.apt.*;
-
-
-/**
- * Annotation processor for the @Test annotation.
- * Invokes each method so annotated, and verifies the result.
- * Throws an Error on failure.
- *
- * @author Scott Seligman
- */
-public class TestProcessor implements AnnotationProcessor {
-
-    AnnotationProcessorEnvironment env;
-
-    // The tester that's running.
-    Tester tester = Tester.activeTester;
-
-    TestProcessor(AnnotationProcessorEnvironment env,
-                  Tester tester) {
-        this.env = env;
-        this.tester = tester;
-    }
-
-
-    /**
-     * Reflectively invoke the @Test-annotated methods of the live
-     * tester.  Those methods perform the actual exercising of the
-     * mirror API.  Then back here to verify the results by
-     * reading the live annotations.  Convoluted, you say?
-     */
-    public void process() {
-        System.out.printf("\n> Processing %s\n", tester.getClass());
-
-        boolean failed = false;         // true if a test returns wrong result
-
-        for (Method m : tester.getClass().getDeclaredMethods()) {
-            Test anno = m.getAnnotation(Test.class);
-            Ignore ignore = m.getAnnotation(Ignore.class);
-            if (anno != null) {
-                if (ignore == null) {
-                    System.out.println(">> Invoking test " + m.getName());
-                    Object result;
-                    try {
-                        result = m.invoke(tester);
-                    } catch (Exception e) {
-                        throw new Error("Test invocation failed", e);
-                    }
-                    boolean ok = true;  // result of this test
-                    if (Collection.class.isAssignableFrom(m.getReturnType())) {
-                        ok = verifyResults((Collection) result,
-                                           anno.result(), anno.ordered());
-                    } else if (m.getReturnType() != void.class) {
-                        ok = verifyResult(result, anno.result());
-                    }
-                    if (!ok) {
-                        System.out.println(">>> Expected: " + anno);
-                        System.out.println(">>> Got: " + result);
-                        failed = true;
-                    }
-                } else {
-                    System.out.println(">> Ignoring test " + m.getName());
-                    if (ignore.value().length() > 0) {
-                        System.out.println(">>> Reason: " + ignore.value());
-                    }
-                }
-            }
-        }
-        if (failed) {
-            throw new Error("Test(s) returned unexpected result");
-        }
-    }
-
-    /**
-     * Verify that a single-valued (non-Collection) result matches
-     * its expected value.
-     */
-    private boolean verifyResult(Object result, String[] expected) {
-        assert expected.length == 1 :
-            "Single-valued test expecting " + expected.length + " results";
-        return expected[0].equals(String.valueOf(result));
-    }
-
-    /**
-     * Verify that a multi-valued result (a Collection) matches
-     * its expected values.
-     */
-    private boolean verifyResults(Collection result,
-                                  String[] expected, boolean ordered) {
-        if (result.size() != expected.length) {
-            return false;
-        }
-
-        // Convert result to an array of strings.
-        String[] res = new String[result.size()];
-        int i = 0;
-        for (Object e : result) {
-            res[i++] = String.valueOf(e);
-        }
-
-        if (!ordered) {
-            Arrays.sort(res);
-            Arrays.sort(expected);
-        }
-        return Arrays.equals(res, expected);
-    }
-}
--- a/langtools/test/tools/apt/lib/TestProcessorFactory.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-import java.util.*;
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.util.*;
-
-
-/**
- * A factory for generating the TestProcessor annotation processor, which
- * processes the @Test annotation.
- *
- * @author Scott Seligman
- */
-public class TestProcessorFactory implements AnnotationProcessorFactory {
-
-    public Collection<String> supportedOptions() {
-        return new ArrayList<String>();
-    }
-
-    public Collection<String> supportedAnnotationTypes() {
-        ArrayList<String> res = new ArrayList<String>();
-        res.add("Test");
-        res.add("Ignore");
-        return res;
-    }
-
-    public AnnotationProcessor getProcessorFor(
-                                        Set<AnnotationTypeDeclaration> as,
-                                        AnnotationProcessorEnvironment env) {
-        // The tester that's running.
-        Tester tester = Tester.activeTester;
-
-        try {
-            // Find the tester's class declaration.
-            ClassDeclaration testerDecl = null;
-            for (TypeDeclaration decl : env.getSpecifiedTypeDeclarations()) {
-                if (decl.getQualifiedName().equals(
-                                               tester.getClass().getName())) {
-                    testerDecl = (ClassDeclaration) decl;
-                    break;
-                }
-            }
-
-            // Give the tester access to its own declaration and to the env.
-            tester.thisClassDecl = testerDecl;
-            tester.env = env;
-
-            // Initializer the tester.
-            tester.init();
-
-            return new TestProcessor(env, tester);
-
-        } catch (Exception e) {
-            throw new Error("Couldn't create test annotation processor", e);
-        }
-    }
-}
--- a/langtools/test/tools/apt/lib/Tester.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * A utility used to invoke and test the apt tool.
- * Tests should subclass Tester, and invoke run().
- *
- * @author Scott Seligman
- */
-
-import java.io.*;
-import java.util.*;
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-
-
-public abstract class Tester {
-
-    /**
-     * The declaration corresponding to this tester's class.  Set by
-     * TestProcessorFactory after the constructor completes, and
-     * before init() is invoked.
-     */
-    ClassDeclaration thisClassDecl;
-
-    /**
-     * The environment for this apt run.  Set by TestProcessorFactory
-     * after the constructor completes, and before init() is invoked.
-     */
-    AnnotationProcessorEnvironment env;
-
-
-    // TestProcessorFactory looks here to find the tester that's running
-    // when it's invoked.
-    static Tester activeTester;
-
-    private static final String[] DEFAULT_ARGS = {
-        "-nocompile",
-        "-XPrintAptRounds",
-        "-XListDeclarations",
-    };
-    private static final String[] NO_STRINGS = {};
-
-    // Force processor and factory to be compiled
-    private static Class dummy = TestProcessorFactory.class;
-
-    private final String testSrc =     System.getProperty("test.src",     ".");
-    private final String testClasses = System.getProperty("test.classes", ".");
-
-    // apt command-line args
-    private String[] args;
-
-
-    static {
-        // Enable assertions in the unnamed package.
-        ClassLoader loader = Tester.class.getClassLoader();
-        if (loader != null) {
-            loader.setPackageAssertionStatus(null, true);
-        }
-    }
-
-
-    protected Tester(String... additionalArgs) {
-        String sourceFile = testSrc + File.separator +
-                            getClass().getName() + ".java";
-
-        ArrayList<String> as = new ArrayList<String>();
-        Collections.addAll(as, DEFAULT_ARGS);
-        as.add("-sourcepath");  as.add(testSrc);
-        as.add("-factory");     as.add(TestProcessorFactory.class.getName());
-        Collections.addAll(as, additionalArgs);
-        as.add(sourceFile);
-        args = as.toArray(NO_STRINGS);
-    }
-
-    /**
-     * Run apt.
-     */
-    protected void run() {
-        activeTester = this;
-        if (com.sun.tools.apt.Main.process(args) != 0) {
-            throw new Error("apt errors encountered.");
-        }
-    }
-
-    /**
-     * Called after thisClassDecl and env have been set, but before any
-     * tests are run, to allow the tester subclass to perform any
-     * needed initialization.
-     */
-    protected void init() {
-    }
-
-    /**
-     * Returns the declaration of a named method in this class.  If this
-     * method name is overloaded, one method is chosen arbitrarily.
-     * Returns null if no method is found.
-     */
-    protected MethodDeclaration getMethod(String methodName) {
-        for (MethodDeclaration m : thisClassDecl.getMethods()) {
-            if (methodName.equals(m.getSimpleName())) {
-                return m;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Returns the declaration of a named field in this class.
-     * Returns null if no field is found.
-     */
-    protected FieldDeclaration getField(String fieldName) {
-        for (FieldDeclaration f : thisClassDecl.getFields()) {
-            if (fieldName.equals(f.getSimpleName())) {
-                return f;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Returns the annotation mirror of a given type on a named method
-     * in this class.  If this method name is overloaded, one method is
-     * chosen arbitrarily.  Returns null if no appropriate annotation
-     * is found.
-     */
-    protected AnnotationMirror getAnno(String methodName, String annoType) {
-        MethodDeclaration m = getMethod(methodName);
-        if (m != null) {
-            TypeDeclaration at = env.getTypeDeclaration(annoType);
-            for (AnnotationMirror a : m.getAnnotationMirrors()) {
-                if (at == a.getAnnotationType().getDeclaration()) {
-                    return a;
-                }
-            }
-        }
-        return null;
-    }
-}
--- a/langtools/test/tools/apt/mirror/declaration/AnnoMirror.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 5014539
- * @summary Tests AnnotationMirror and AnnotationValue methods.
- * @library ../../lib
- * @compile -source 1.5 AnnoMirror.java
- * @run main/othervm AnnoMirror
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-
-
-public class AnnoMirror extends Tester {
-
-    public static void main(String[] args) {
-        (new AnnoMirror()).run();
-    }
-
-
-    @Test(result={"AT1"})
-    @AT1
-    AnnotationType getAnnotationType() {
-        AnnotationMirror anno = getAnno("getAnnotationType", "AT1");
-        return anno.getAnnotationType();
-    }
-
-    @Test(result={})
-    @AT1
-    Set getElementValuesNone() {
-        AnnotationMirror anno = getAnno("getElementValuesNone", "AT1");
-        return anno.getElementValues().entrySet();
-    }
-
-
-    // The seemingly out-of-place parens in the following "result"
-    // entry are needed due to the shortcut of having the test return
-    // the entry set directly.
-    @Test(result={"i()=2",
-                  "b()=true",
-                  "k()=java.lang.Boolean.class",
-                  "a()=@AT1"})
-    @AT2(i = 1+1,
-         b = true,
-         k = Boolean.class,
-         a = @AT1)
-    Set getElementValues() {
-        AnnotationMirror anno = getAnno("getElementValues", "AT2");
-        return anno.getElementValues().entrySet();
-    }
-
-    @Test(result={"@AT1(\"zax\")",
-                  "@AT2(i=2, b=true, k=java.lang.Boolean.class, a=@AT1)",
-                  "@AT3(arr={1})",
-                  "@AT4({2, 3, 4})"})
-    Collection<AnnotationMirror> toStringTests() {
-        for (MethodDeclaration m : thisClassDecl.getMethods()) {
-            if (m.getSimpleName().equals("toStringTestsHelper")) {
-                return m.getAnnotationMirrors();
-            }
-        }
-        throw new AssertionError();
-    }
-
-    @AT1("zax")
-    @AT2(i = 1+1,
-         b = true,
-         k = Boolean.class,
-         a = @AT1)
-    @AT3(arr={1})
-    @AT4({2,3,4})
-    private void toStringTestsHelper() {
-    }
-}
-
-
-/*
- * Annotations used for testing.
- */
-
-@interface AT1 {
-    String value() default "";
-}
-
-@interface AT2 {
-    int i();
-    boolean b();
-    Class k();
-    AT1 a();
-}
-
-@interface AT3 {
-    int[] arr();
-}
-
-@interface AT4 {
-    int[] value();
-}
--- a/langtools/test/tools/apt/mirror/declaration/AnnoTypeDecl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 5014539
- * @summary AnnotationTypeDeclaration tests
- * @library ../../lib
- * @compile -source 1.5 AnnoTypeDecl.java
- * @run main/othervm AnnoTypeDecl
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class AnnoTypeDecl extends Tester {
-
-    public static void main(String[] args) {
-        (new AnnoTypeDecl()).run();
-    }
-
-
-    private AnnotationTypeDeclaration at;
-
-    protected void init() {
-        at = (AnnotationTypeDeclaration) env.getTypeDeclaration("AT");
-    }
-
-
-    // Declaration methods
-
-    @Test(result="annotation type")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        at.accept(new SimpleDeclarationVisitor() {
-            public void visitTypeDeclaration(TypeDeclaration t) {
-                res.add("type");
-            }
-            public void visitClassDeclaration(ClassDeclaration c) {
-                res.add("class");
-            }
-            public void visitInterfaceDeclaration(InterfaceDeclaration i) {
-                res.add("interface");
-            }
-            public void visitAnnotationTypeDeclaration(
-                                                AnnotationTypeDeclaration a) {
-                res.add("annotation type");
-            }
-        });
-        return res;
-    }
-
-
-    // AnnotationTypeDeclaration methods
-
-    @Test(result={"s()"})
-    Collection<AnnotationTypeElementDeclaration> getMethods() {
-        return at.getMethods();
-    }
-}
-
-
-// An annotation type to use for testing.
-
-@interface AT {
-    String s();
-}
--- a/langtools/test/tools/apt/mirror/declaration/AnnoTypeElemDecl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,194 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 4993299 5010385 5014539
- * @summary AnnotationTypeElementDeclaration tests
- * @library ../../lib
- * @compile -source 1.5 AnnoTypeElemDecl.java
- * @run main/othervm AnnoTypeElemDecl
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class AnnoTypeElemDecl extends Tester {
-
-    public static void main(String[] args) {
-        (new AnnoTypeElemDecl()).run();
-    }
-
-
-    // Some annotation type elements to use.
-    private AnnotationTypeElementDeclaration elem1 = null;      // s()
-    private AnnotationTypeElementDeclaration elem2 = null;      // i()
-    private AnnotationTypeElementDeclaration elem3 = null;      // b()
-
-    protected void init() {
-        for (TypeDeclaration at : thisClassDecl.getNestedTypes()) {
-            for (MethodDeclaration meth : at.getMethods()) {
-                AnnotationTypeElementDeclaration elem =
-                    (AnnotationTypeElementDeclaration) meth;
-                if (elem.getSimpleName().equals("s")) {
-                    elem1 = elem;       // s()
-                } else if (elem.getSimpleName().equals("i")) {
-                    elem2 = elem;       // i()
-                } else {
-                    elem3 = elem;       // b()
-                }
-            }
-        }
-    }
-
-
-    // Declaration methods
-
-    @Test(result="anno type element")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        elem1.accept(new SimpleDeclarationVisitor() {
-            public void visitTypeDeclaration(TypeDeclaration t) {
-                res.add("type");
-            }
-            public void visitExecutableDeclaration(ExecutableDeclaration e) {
-                res.add("executable");
-            }
-            public void visitMethodDeclaration(MethodDeclaration m) {
-                res.add("method");
-            }
-            public void visitAnnotationTypeElementDeclaration(
-                                        AnnotationTypeElementDeclaration a) {
-                res.add("anno type element");
-            }
-        });
-        return res;
-    }
-
-    @Test(result={"@AnnoTypeElemDecl.AT2"})
-    Collection<AnnotationMirror> getAnnotationMirrors() {
-        return elem1.getAnnotationMirrors();
-    }
-
-    @Test(result=" Sed Quis custodiet ipsos custodes?\n")
-    String getDocComment() {
-        return elem1.getDocComment();
-    }
-
-    @Test(result={"public", "abstract"})
-    Collection<Modifier> getModifiers() {
-        return elem1.getModifiers();
-    }
-
-    @Test(result="AnnoTypeElemDecl.java")
-    String getPosition() {
-        return elem1.getPosition().file().getName();
-    }
-
-    @Test(result="s")
-    String getSimpleName() {
-        return elem1.getSimpleName();
-    }
-
-
-    // MemberDeclaration method
-
-    @Test(result="AnnoTypeElemDecl.AT1")
-    TypeDeclaration getDeclaringType() {
-        return elem1.getDeclaringType();
-    }
-
-
-    // ExecutableDeclaration methods
-
-    @Test(result={})
-    Collection<TypeParameterDeclaration> getFormalTypeParameters() {
-        return elem1.getFormalTypeParameters();
-    }
-
-    @Test(result={})
-    Collection<ParameterDeclaration> getParameters() {
-        return elem1.getParameters();
-    }
-
-    @Test(result={})
-    Collection<ReferenceType> getThrownTypes() {
-        return elem1.getThrownTypes();
-    }
-
-    @Test(result="false")
-    Boolean isVarArgs() {
-        return elem1.isVarArgs();
-    }
-
-
-    // AnnotationTypeElementDeclaration method
-
-    @Test(result="\"default\"")
-    AnnotationValue getDefaultValue1() {
-        return elem1.getDefaultValue();
-    }
-
-    @Test(result="null")
-    AnnotationValue getDefaultValue2() {
-        return elem2.getDefaultValue();
-    }
-
-    // 5010385: getValue() returns null for boolean type elements
-    @Test(result="false")
-    Boolean getDefaultValue3() {
-        return (Boolean) elem3.getDefaultValue().getValue();
-    }
-
-
-    // toString
-
-    @Test(result="s()")
-    String toStringTest() {
-        return elem1.toString();
-    }
-
-
-    // Declarations used by tests.
-
-    @interface AT1 {
-        /**
-         * Sed Quis custodiet ipsos custodes?
-         */
-        @AT2
-        String s() default "default";
-
-        int i();
-
-        boolean b() default false;
-    }
-
-    @interface AT2 {
-    }
-}
--- a/langtools/test/tools/apt/mirror/declaration/AnnoVal.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,200 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 5014539 5034991
- * @summary Tests AnnotationValue methods.
- * @library ../../lib
- * @compile -source 1.5 AnnoVal.java
- * @run main/othervm AnnoVal
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-
-
-public class AnnoVal extends Tester {
-
-    public static void main(String[] args) {
-        (new AnnoVal()).run();
-    }
-
-    @Test(result={
-        "i Integer 2",
-        "l Long 4294967296",
-        "d Double 3.14",
-        "b Boolean true",
-        "c Character @",
-        "s String sigh",
-        // The following results reflect some implementation details.
-        "k ClassTypeImpl java.lang.Boolean",
-        "kb PrimitiveTypeImpl boolean",
-        "ka ArrayTypeImpl java.lang.Boolean[]",
-        "kab ArrayTypeImpl int[][]",
-        "w ClassTypeImpl java.lang.Long",
-        "e EnumConstantDeclarationImpl TYPE",
-        "sa ArrayList [\"up\", \"down\"]",
-        "a AnnotationMirrorImpl @AT1"})
-    @AT2(i = 1 + 1,
-         l = 1024 * 1024 * 1024 * 4L,
-         d = 3.14,
-         b = true,
-         c = '@',
-         s = "sigh",
-         k = Boolean.class,
-         kb = boolean.class,
-         ka = Boolean[].class,          // bugid 5020899
-         kab = int[][].class,           //      "
-         w = Long.class,
-         e = java.lang.annotation.ElementType.TYPE,
-         sa = {"up", "down"},
-         a = @AT1)
-    Collection<String> getValue() {
-        Collection<String> res = new ArrayList<String>();
-        AnnotationMirror anno = getAnno("getValue", "AT2");
-
-        for (Map.Entry<AnnotationTypeElementDeclaration, AnnotationValue> e :
-                 anno.getElementValues().entrySet()) {
-            Object val = e.getValue().getValue();
-            res.add(String.format("%s %s %s",
-                                  e.getKey().getSimpleName(),
-                                  simpleClassName(val),
-                                  val));
-        }
-        return res;
-    }
-
-    @Test(result={
-        "int i 2",
-        "long l 4294967296L",
-        "double d 3.14",
-        "boolean b true",
-        "char c '@'",
-        "java.lang.String s \"sigh\"",
-        "java.lang.Class k java.lang.Boolean.class",
-        "java.lang.Class kb boolean.class",
-        "java.lang.Class ka java.lang.Boolean[].class",
-        "java.lang.Class kab int[][].class",
-        "java.lang.Class<? extends java.lang.Number> w java.lang.Long.class",
-        "java.lang.annotation.ElementType e java.lang.annotation.ElementType.TYPE",
-        "java.lang.String[] sa {\"up\", \"down\"}",
-        "AT1 a @AT1"})
-    Collection<String> toStringTests() {
-        Collection<String> res = new ArrayList<String>();
-        AnnotationMirror anno = getAnno("getValue", "AT2");
-
-        for (Map.Entry<AnnotationTypeElementDeclaration,AnnotationValue> e :
-                 anno.getElementValues().entrySet()) {
-            res.add(String.format("%s %s %s",
-                                  e.getKey().getReturnType(),
-                                  e.getKey().getSimpleName(),
-                                  e.getValue().toString()));
-        }
-        return res;
-    }
-
-    @Test(result={
-        "byte b 0x0b",
-        "float f 3.0f",
-        "double nan 0.0/0.0",
-        "double hi 1.0/0.0",
-        "float lo -1.0f/0.0f",
-        "char newline '\\n'",
-        "char ff '\\u00ff'",
-        "java.lang.String s \"\\\"high\\tlow\\\"\"",
-        "java.lang.String smiley \"\\u263a\""})
-    @AT3(b = 11,
-         f = 3,
-         nan = 0.0/0.0,
-         hi = 1.0/0.0,
-         lo = -1.0f/0.0f,
-         newline = '\n',
-         ff = '\u00FF',
-         s = "\"high\tlow\"",
-         smiley = "\u263A")
-    Collection<String> toStringFancy() {
-        Collection<String> res = new ArrayList<String>();
-        AnnotationMirror anno = getAnno("toStringFancy", "AT3");
-
-        for (Map.Entry<AnnotationTypeElementDeclaration,AnnotationValue> e :
-                 anno.getElementValues().entrySet()) {
-            res.add(String.format("%s %s %s",
-                                  e.getKey().getReturnType(),
-                                  e.getKey().getSimpleName(),
-                                  e.getValue().toString()));
-        }
-        return res;
-    }
-
-
-    /**
-     * Returns the simple name of an object's class.
-     */
-    private String simpleClassName(Object o) {
-        return (o == null)
-            ? "null"
-            : o.getClass().getName().replaceFirst(".*\\.", "");
-    }
-}
-
-
-/*
- * Annotations used for testing.
- */
-
-@interface AT1 {
-    String value() default "";
-}
-
-@interface AT2 {
-    int i();
-    long l();
-    double d();
-    boolean b();
-    char c();
-    String s();
-    Class k();
-    Class kb();
-    Class ka();
-    Class kab();
-    Class<? extends Number> w();
-    java.lang.annotation.ElementType e();
-    String[] sa();
-    AT1 a();
-}
-
-@interface AT3 {
-    byte b();
-    float f();
-    double nan();
-    double hi();
-    float lo();
-    char newline();
-    char ff();
-    String s();
-    String smiley();
-}
--- a/langtools/test/tools/apt/mirror/declaration/ClassDecl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,250 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 4997614
- * @summary ClassDeclaration tests
- * @library ../../lib
- * @compile -source 1.5 ClassDecl.java
- * @run main/othervm ClassDecl
- */
-
-
-import java.io.Serializable;
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-/**
- * Sed Quis custodiet ipsos custodes?
- */
-@AT1
-@AT2
-public class ClassDecl extends Tester {
-
-    public static void main(String[] args) {
-        (new ClassDecl()).run();
-    }
-
-
-    private ClassDeclaration nested = null;     // a nested type
-    private ClassDeclaration object = null;     // java.lang.object
-
-    // A constructor to be found
-    private ClassDecl() {
-    }
-
-    // Another constructor to be found
-    private ClassDecl(int i) {
-        this();
-    }
-
-    // An extra field to be found
-    static int i;
-
-    // Static initializer isn't among this class's methods.
-    static {
-        i = 7;
-    }
-
-    // A nested class with some accoutrements
-    private static strictfp class NestedClass<T> implements Serializable {
-        void m1() {}
-        void m2() {}
-        void m2(int i) {}
-    }
-
-    protected void init() {
-        nested = (ClassDeclaration)
-            thisClassDecl.getNestedTypes().iterator().next();
-        object = (ClassDeclaration)
-            env.getTypeDeclaration("java.lang.Object");
-    }
-
-
-    // Declaration methods
-
-    @Test(result="class")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        thisClassDecl.accept(new SimpleDeclarationVisitor() {
-            public void visitTypeDeclaration(TypeDeclaration t) {
-                res.add("type");
-            }
-            public void visitClassDeclaration(ClassDeclaration c) {
-                res.add("class");
-            }
-            public void visitEnumDeclaration(EnumDeclaration e) {
-                res.add("enum");
-            }
-        });
-        return res;
-    }
-
-    @Test(result={"@AT1", "@AT2"})
-    Collection<AnnotationMirror> getAnnotationMirrors() {
-        return thisClassDecl.getAnnotationMirrors();
-    }
-
-    @Test(result=" Sed Quis custodiet ipsos custodes?\n")
-    String getDocComment() {
-        return thisClassDecl.getDocComment();
-    }
-
-    @Test(result={"public"})
-    Collection<Modifier> getModifiers1() {
-        return thisClassDecl.getModifiers();
-    }
-
-    // Check that static nested class has "static" modifier, even though
-    // the VM doesn't set that bit.
-    @Test(result={"private", "static", "strictfp"})
-    Collection<Modifier> getModifiers2() {
-        return nested.getModifiers();
-    }
-
-    @Test(result="ClassDecl.java")
-    String getPosition() {
-        return thisClassDecl.getPosition().file().getName();
-    }
-
-    @Test(result="ClassDecl")
-    String getSimpleName1() {
-        return thisClassDecl.getSimpleName();
-    }
-
-    @Test(result="NestedClass")
-    String getSimpleName2() {
-        return nested.getSimpleName();
-    }
-
-
-    // MemberDeclaration method
-
-    @Test(result="null")
-    TypeDeclaration getDeclaringType1() {
-        return thisClassDecl.getDeclaringType();
-    }
-
-    @Test(result="ClassDecl")
-    TypeDeclaration getDeclaringType2() {
-        return nested.getDeclaringType();
-    }
-
-
-    // TypeDeclaration methods
-
-    @Test(result={"nested", "object", "i"})
-    Collection<FieldDeclaration> getFields() {
-        return thisClassDecl.getFields();
-    }
-
-    @Test(result={})
-    Collection<TypeParameterDeclaration> getFormalTypeParameters1() {
-        return thisClassDecl.getFormalTypeParameters();
-    }
-
-    @Test(result="T")
-    Collection<TypeParameterDeclaration> getFormalTypeParameters2() {
-        return nested.getFormalTypeParameters();
-    }
-
-    @Test(result="ClassDecl.NestedClass<T>")
-    Collection<TypeDeclaration> getNestedTypes() {
-        return thisClassDecl.getNestedTypes();
-    }
-
-    @Test(result="")
-    PackageDeclaration getPackage1() {
-        return thisClassDecl.getPackage();
-    }
-
-    @Test(result="java.lang")
-    PackageDeclaration getPackage2() {
-        return object.getPackage();
-    }
-
-    @Test(result="ClassDecl")
-    String getQualifiedName1() {
-        return thisClassDecl.getQualifiedName();
-    }
-
-    @Test(result="ClassDecl.NestedClass")
-    String getQualifiedName2() {
-        return nested.getQualifiedName();
-    }
-
-    @Test(result="java.lang.Object")
-    String getQualifiedName3() {
-        return object.getQualifiedName();
-    }
-
-    @Test(result="java.io.Serializable")
-    Collection<InterfaceType> getSuperinterfaces() {
-        return nested.getSuperinterfaces();
-    }
-
-
-    // ClassDeclaration methods
-
-    @Test(result={"ClassDecl()", "ClassDecl(int)"})
-    Collection<ConstructorDeclaration> getConstructors1() {
-        return thisClassDecl.getConstructors();
-    }
-
-    // Check for default constructor.
-    // 4997614: visitConstructionDeclaration reports info when there is no ctor
-    @Test(result={"NestedClass()"})
-    Collection<ConstructorDeclaration> getConstructors2() {
-        return nested.getConstructors();
-    }
-
-    @Test(result={"m1()", "m2()", "m2(int)"})
-    Collection<MethodDeclaration> getMethods() {
-        return nested.getMethods();
-    }
-
-    @Test(result={"Tester"})
-    ClassType getSuperclass() {
-        return thisClassDecl.getSuperclass();
-    }
-
-    @Test(result={"null"})
-    ClassType objectHasNoSuperclass() {
-        return object.getSuperclass();
-    }
-}
-
-
-// Annotations used for testing.
-
-@interface AT1 {
-}
-
-@interface AT2 {
-}
--- a/langtools/test/tools/apt/mirror/declaration/ConstExpr.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 5027675 5048535
- * @summary Tests FieldDeclaration.getConstantExpression method
- * @library ../../lib
- * @compile -source 1.5 ConstExpr.java
- * @run main/othervm ConstExpr
- */
-
-
-import java.math.RoundingMode;
-import java.util.*;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import static java.math.RoundingMode.UP;
-
-import static com.sun.mirror.util.DeclarationVisitors.*;
-
-
-public class ConstExpr extends Tester {
-
-    public static void main(String[] args) {
-        (new ConstExpr()).run();
-    }
-
-
-    // Declarations used by tests
-
-    public static final byte B = (byte) 0xBE;
-    public static final short S = (short) 32767;
-    public static final int I = -4;
-    public static final long l = 4294967296L;
-    public static final float f = 3.5f;
-    public static final double PI = Math.PI;
-    public static final char C = 'C';
-    public static final String STR = "cheese";
-
-    public static final char SMILEY = '\u263A';
-    public static final String TWOLINES = "ab\ncd";
-
-    public static final double D1 = Double.POSITIVE_INFINITY;
-    public static final double D2 = Double.NEGATIVE_INFINITY;
-    public static final double D3 = Double.NaN;
-    public static final float  F1 = Float.POSITIVE_INFINITY;
-    public static final float  F2 = Float.NEGATIVE_INFINITY;
-    public static final float  F3 = Float.NaN;
-
-    public static final String NOSTR = null;    // not a compile-time constant
-    public static final RoundingMode R = UP;    // not a compile-time constant
-
-
-    @Test(result={
-              "0xbe",
-              "32767",
-              "-4",
-              "4294967296L",
-              "3.5f",
-              "3.141592653589793",
-              "'C'",
-              "\"cheese\"",
-
-              "'\\u263a'",
-              "\"ab\\ncd\"",
-
-              "1.0/0.0",
-              "-1.0/0.0",
-              "0.0/0.0",
-              "1.0f/0.0f",
-              "-1.0f/0.0f",
-              "0.0f/0.0f",
-
-              "null",
-              "null"
-          },
-          ordered=true)
-    Collection<String> getConstantExpression() {
-        final Collection<String> res = new ArrayList<String>();
-
-        thisClassDecl.accept(
-            DeclarationVisitors.getSourceOrderDeclarationScanner(
-                NO_OP,
-                new SimpleDeclarationVisitor() {
-                    public void visitFieldDeclaration(FieldDeclaration f) {
-                        res.add(f.getConstantExpression());
-                    }
-                }));
-        return res;
-    }
-}
--- a/langtools/test/tools/apt/mirror/declaration/ConstructorDecl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,199 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 4993299
- * @summary ConstructorDeclaration tests
- * @library ../../lib
- * @compile -source 1.5 ConstructorDecl.java
- * @run main/othervm ConstructorDecl
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class ConstructorDecl extends Tester {
-
-    /**
-     * Sed Quis custodiet ipsos custodes?
-     */
-    @AT1
-    public ConstructorDecl() {
-    }
-
-
-    public static void main(String[] args) {
-        (new ConstructorDecl()).run();
-    }
-
-
-    private ConstructorDeclaration ctor = null;         // a constructor
-    private ConstructorDeclaration ctorDef = null;      // a default c'tor
-    private ConstructorDeclaration ctorInner = null;    // an inner class c'tor
-
-    protected void init() {
-        ctor = getAConstructor(thisClassDecl);
-        ctorDef = getAConstructor((ClassDeclaration)
-                                  env.getTypeDeclaration("C1"));
-        ctorInner = getAConstructor((ClassDeclaration)
-                                    env.getTypeDeclaration("C1.C2"));
-    }
-
-    // Return a constructor of a class.
-    private ConstructorDeclaration getAConstructor(ClassDeclaration c) {
-        return c.getConstructors().iterator().next();
-    }
-
-
-    // Declaration methods
-
-    @Test(result="constructor")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        ctor.accept(new SimpleDeclarationVisitor() {
-            public void visitTypeDeclaration(TypeDeclaration t) {
-                res.add("type");
-            }
-            public void visitExecutableDeclaration(ExecutableDeclaration e) {
-                res.add("executable");
-            }
-            public void visitConstructorDeclaration(ConstructorDeclaration c) {
-                res.add("constructor");
-            }
-        });
-        return res;
-    }
-
-    @Test(result={"@AT1"})
-    Collection<AnnotationMirror> getAnnotationMirrors() {
-        return ctor.getAnnotationMirrors();
-    }
-
-    @Test(result=" Sed Quis custodiet ipsos custodes?\n")
-    String getDocComment() {
-        return ctor.getDocComment();
-    }
-
-    @Test(result={"public"})
-    Collection<Modifier> getModifiers() {
-        return ctor.getModifiers();
-    }
-
-    @Test(result="ConstructorDecl.java")
-    String getPosition() {
-        return ctor.getPosition().file().getName();
-    }
-
-    @Test(result="ConstructorDecl.java")
-    String getPositionDefault() {
-        return ctorDef.getPosition().file().getName();
-    }
-
-    @Test(result="ConstructorDecl")
-    String getSimpleName() {
-        return ctor.getSimpleName();
-    }
-
-    @Test(result="C2")
-    String getSimpleNameInner() {
-        return ctorInner.getSimpleName();
-    }
-
-
-    // MemberDeclaration method
-
-    @Test(result="ConstructorDecl")
-    TypeDeclaration getDeclaringType() {
-        return ctor.getDeclaringType();
-    }
-
-
-    // ExecutableDeclaration methods
-
-    @Test(result={})
-    Collection<TypeParameterDeclaration> getFormalTypeParameters1() {
-        return ctor.getFormalTypeParameters();
-    }
-
-    @Test(result={"N extends java.lang.Number"})
-    Collection<TypeParameterDeclaration> getFormalTypeParameters2() {
-        return ctorInner.getFormalTypeParameters();
-    }
-
-    @Test(result={})
-    Collection<ParameterDeclaration> getParameters1() {
-        return ctor.getParameters();
-    }
-
-    // 4993299: verify synthetic parameters to inner class constructors
-    //          aren't visible
-    @Test(result={"N n1", "N n2", "java.lang.String[] ss"},
-          ordered=true)
-    Collection<ParameterDeclaration> getParameters2() {
-        return ctorInner.getParameters();
-    }
-
-    @Test(result={"java.lang.Throwable"})
-    Collection<ReferenceType> getThrownTypes() {
-        return ctorInner.getThrownTypes();
-    }
-
-    @Test(result="false")
-    Boolean isVarArgs1() {
-        return ctor.isVarArgs();
-    }
-
-    @Test(result="true")
-    Boolean isVarArgs2() {
-        return ctorInner.isVarArgs();
-    }
-
-
-    // toString
-
-    @Test(result="<N extends java.lang.Number> C2(N, N, String...)")
-    @Ignore("This is what it would be nice to see.")
-    String toStringTest() {
-        return ctorInner.toString();
-    }
-}
-
-
-// Classes and interfaces used for testing.
-
-class C1 {
-    class C2 {
-        <N extends Number> C2(N n1, N n2, String... ss) throws Throwable {
-        }
-    }
-}
-
-@interface AT1 {
-}
--- a/langtools/test/tools/apt/mirror/declaration/EnumDecl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 4989987 5010050
- * @summary EnumDeclaration tests
- * @library ../../lib
- * @compile -source 1.5 EnumDecl.java
- * @run main/othervm EnumDecl
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class EnumDecl extends Tester {
-
-    public static void main(String[] args) {
-        (new EnumDecl()).run();
-    }
-
-
-    private EnumDeclaration eDecl;
-
-    protected void init() {
-        eDecl = (EnumDeclaration) env.getTypeDeclaration("E");
-    }
-
-
-    // Declaration methods
-
-    @Test(result="enum")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        eDecl.accept(new SimpleDeclarationVisitor() {
-            public void visitTypeDeclaration(TypeDeclaration t) {
-                res.add("type");
-            }
-            public void visitClassDeclaration(ClassDeclaration c) {
-                res.add("class");
-            }
-            public void visitEnumDeclaration(EnumDeclaration e) {
-                res.add("enum");
-            }
-        });
-        return res;
-    }
-
-
-    // ClassDeclaration methods
-
-    // 4989987: Verify synthetic enum constructor parameters are not visible
-    @Test(result={"E(java.lang.String)"})
-    Collection<ConstructorDeclaration> getConstructors() {
-        return eDecl.getConstructors();
-    }
-
-    // 4989987: Verify synthetic enum constructor parameters are not visible
-    @Test(result={"java.lang.String color"})
-    Collection<ParameterDeclaration> getConstructorParams() {
-        return eDecl.getConstructors().iterator().next().getParameters();
-    }
-
-    @Test(result={"values()", "valueOf(java.lang.String)"})
-    Collection<MethodDeclaration> getMethods() {
-        return eDecl.getMethods();
-    }
-
-    // 5010050: Cannot find parameter names for valueOf(String name) method...
-    @Test(result={"java.lang.String name"})
-    Collection<ParameterDeclaration> getMethodParams() {
-        for (MethodDeclaration m : eDecl.getMethods()) {
-            if (m.getSimpleName().equals("valueOf")) {
-                return m.getParameters();
-            }
-        }
-        throw new AssertionError();
-    }
-
-
-    // EnumDeclaration methods
-
-    @Test(result={"stop", "slow", "go"})
-    Collection<EnumConstantDeclaration> getEnumConstants() {
-        return eDecl.getEnumConstants();
-    }
-}
-
-
-// An enum to use for testing.
-
-enum E {
-    stop("red"),
-    slow("amber"),
-    go("green");
-
-    private String color;
-    E(String color) {
-        this.color = color;
-    }
-}
--- a/langtools/test/tools/apt/mirror/declaration/FieldDecl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 5008309
- * @summary FieldDeclaration tests
- * @library ../../lib
- * @compile -source 1.5 FieldDecl.java
- * @run main/othervm FieldDecl
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class FieldDecl extends Tester {
-
-    public static void main(String[] args) {
-        (new FieldDecl()).run();
-    }
-
-
-    private FieldDeclaration f1 = null;         // a field
-    private FieldDeclaration f2 = null;         // a static field
-    private FieldDeclaration f3 = null;         // a constant field
-
-    protected void init() {
-        f1 = getField("aField");
-        f2 = getField("aStaticField");
-        f3 = getField("aConstantField");
-    }
-
-
-    // Declaration methods
-
-    @Test(result="field")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        f1.accept(new SimpleDeclarationVisitor() {
-            public void visitTypeDeclaration(TypeDeclaration t) {
-                res.add("type");
-            }
-            public void visitFieldDeclaration(FieldDeclaration f) {
-                res.add("field");
-            }
-            public void visitEnumConstantDeclaration(
-                                                EnumConstantDeclaration e) {
-                res.add("enum const");
-            }
-        });
-        return res;
-    }
-
-    @Test(result={"@FieldDecl.AT1"})
-    Collection<AnnotationMirror> getAnnotationMirrors() {
-        return f1.getAnnotationMirrors();
-    }
-
-    @Test(result=" Sed Quis custodiet ipsos custodes?\n")
-    String getDocComment() {
-        return f1.getDocComment();
-    }
-
-    @Test(result={"public"})
-    Collection<Modifier> getModifiers() {
-        return f1.getModifiers();
-    }
-
-    @Test(result="FieldDecl.java")
-    String getPosition() {
-        return f1.getPosition().file().getName();
-    }
-
-    @Test(result="aField")
-    String getSimpleName() {
-        return f1.getSimpleName();
-    }
-
-
-    // MemberDeclaration method
-
-    @Test(result="FieldDecl")
-    TypeDeclaration getDeclaringType() {
-        return f1.getDeclaringType();
-    }
-
-
-    // FieldDeclaration methods
-
-    @Test(result="java.util.List<java.lang.String>")
-    TypeMirror getType1() {
-        return f1.getType();
-    }
-
-    @Test(result="int")
-    TypeMirror getType2() {
-        return f2.getType();
-    }
-
-    @Test(result="null")
-    Object getConstantValue1() {
-        return f1.getConstantValue();
-    }
-
-    // 5008309: FieldDeclaration.getConstantValue() doesn't return anything
-    @Test(result="true")
-    Object getConstantValue2() {
-        return f3.getConstantValue();
-    }
-
-
-    // toString
-
-    @Test(result="aField")
-    String toStringTest() {
-        return f1.toString();
-    }
-
-
-    // Declarations used by tests.
-
-    /**
-     * Sed Quis custodiet ipsos custodes?
-     */
-    @AT1
-    public List<String> aField = new ArrayList<String>();
-
-    static int aStaticField;
-
-    public static final boolean aConstantField = true;
-
-
-    @interface AT1 {
-    }
-}
--- a/langtools/test/tools/apt/mirror/declaration/GetAnno.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,167 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4989091 5050782 5051962
- * @summary Tests Declaration.getAnnotation method
- * @library ../../lib
- * @compile -source 1.5 GetAnno.java
- * @run main/othervm GetAnno
- */
-
-
-import java.lang.annotation.*;
-import java.util.*;
-
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-
-import static java.lang.annotation.RetentionPolicy.*;
-
-
-public class GetAnno extends Tester {
-
-    public static void main(String[] args) {
-        (new GetAnno()).run();
-    }
-
-
-    // Annotations used by tests
-
-    @Retention(RUNTIME)
-    @interface AT1 {
-        long l();
-        String s();
-        RetentionPolicy e();
-        String[] sa();
-        AT2 a();
-    }
-
-    @Inherited
-    @interface AT2 {
-    }
-
-    @interface AT3 {
-        Class value() default String.class;
-    }
-
-    // Array-valued elements of various kinds.
-    @interface AT4 {
-        boolean[] bs();
-        long[] ls();
-        String[] ss();
-        RetentionPolicy[] es();
-        AT2[] as();
-    }
-
-
-    @Test(result="@GetAnno$AT1(l=7, s=sigh, e=CLASS, sa=[in, out], " +
-                              "a=@GetAnno$AT2())")
-    @AT1(l=7, s="sigh", e=CLASS, sa={"in", "out"}, a=@AT2)
-    public Annotation getAnnotation() {
-        MethodDeclaration m = getMethod("getAnnotation");
-        AT1 a = m.getAnnotation(AT1.class);
-        if (a.l() != 7 || !a.s().equals("sigh") || a.e() != CLASS)
-            throw new AssertionError();
-        return a;
-    }
-
-    @Test(result="null")
-    public Annotation getAnnotationNotThere() {
-        return thisClassDecl.getAnnotation(Deprecated.class);
-    }
-
-    @Test(result="@GetAnno$AT4(bs=[true, false], " +
-                              "ls=[9, 8], " +
-                              "ss=[black, white], " +
-                              "es=[CLASS, SOURCE], " +
-                              "as=[@GetAnno$AT2(), @GetAnno$AT2()])")
-    @AT4(bs={true, false},
-         ls={9, 8},
-         ss={"black", "white"},
-         es={CLASS, SOURCE},
-         as={@AT2, @AT2})
-    public AT4 getAnnotationArrayValues() {
-        MethodDeclaration m = getMethod("getAnnotationArrayValues");
-        return m.getAnnotation(AT4.class);
-    }
-
-    @Test(result="@GetAnno$AT3(value=java.lang.String)")
-    @AT3(String.class)
-    public AT3 getAnnotationWithClass1() {
-        MethodDeclaration m = getMethod("getAnnotationWithClass1");
-        return m.getAnnotation(AT3.class);
-    }
-
-    @Test(result="java.lang.String")
-    public TypeMirror getAnnotationWithClass2() {
-        AT3 a = getAnnotationWithClass1();
-        try {
-            Class c = a.value();
-            throw new AssertionError();
-        } catch (MirroredTypeException e) {
-            return e.getTypeMirror();
-        }
-    }
-
-    @Test(result="boolean")
-    @AT3(boolean.class)
-    public TypeMirror getAnnotationWithPrim() {
-        MethodDeclaration m = getMethod("getAnnotationWithPrim");
-        AT3 a = m.getAnnotation(AT3.class);
-        try {
-            Class c = a.value();
-            throw new AssertionError();
-        } catch (MirroredTypeException e) {
-            return e.getTypeMirror();
-        }
-    }
-
-    // 5050782
-    @Test(result="null")
-    public AT2 getInheritedAnnotation() {
-        return thisClassDecl.getAnnotation(AT2.class);
-    }
-
-    /**
-     * Verify that an annotation created by Declaration.getAnnotation()
-     * has the same hash code as a like annotation created by core
-     * reflection.
-     */
-    @Test(result="true")
-    @AT1(l=7, s="sigh", e=CLASS, sa={"in", "out"}, a=@AT2)
-    public boolean getAnnotationHashCode() {
-        MethodDeclaration m1 = getMethod("getAnnotationHashCode");
-        AT1 a1 = m1.getAnnotation(AT1.class);
-        java.lang.reflect.Method m2 = null;
-        try {
-            m2 = this.getClass().getMethod("getAnnotationHashCode");
-        } catch (NoSuchMethodException e) {
-            assert false;
-        }
-        AT1 a2 = m2.getAnnotation(AT1.class);
-        return a1.hashCode() == a2.hashCode();
-    }
-}
--- a/langtools/test/tools/apt/mirror/declaration/InterfaceDecl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 4993303 5004618 5010746
- * @summary InterfaceDeclaration tests
- * @library ../../lib
- * @compile -source 1.5 InterfaceDecl.java
- * @run main/othervm InterfaceDecl
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-/**
- * Sed Quis custodiet ipsos custodes?
- */
-@AT1
-@AT2
-public class InterfaceDecl extends Tester {
-
-    public static void main(String[] args) {
-        (new InterfaceDecl()).run();
-    }
-
-
-    private InterfaceDeclaration iDecl = null;          // an interface
-    private InterfaceDeclaration nested = null;         // a nested interface
-
-    protected void init() {
-        iDecl = (InterfaceDeclaration) env.getTypeDeclaration("I");
-        nested = (InterfaceDeclaration)
-            iDecl.getNestedTypes().iterator().next();
-    }
-
-
-    // Declaration methods
-
-    @Test(result="interface")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        iDecl.accept(new SimpleDeclarationVisitor() {
-            public void visitTypeDeclaration(TypeDeclaration t) {
-                res.add("type");
-            }
-            public void visitClassDeclaration(ClassDeclaration c) {
-                res.add("class");
-            }
-            public void visitInterfaceDeclaration(InterfaceDeclaration e) {
-                res.add("interface");
-            }
-            public void visitAnnotationTypeDeclaration(
-                                        AnnotationTypeDeclaration e) {
-                res.add("annotation type");
-            }
-        });
-        return res;
-    }
-
-    @Test(result="true")
-    boolean equals1() {
-        return iDecl.equals(iDecl);
-    }
-
-    @Test(result="false")
-    boolean equals2() {
-        return iDecl.equals(nested);
-    }
-
-    @Test(result="true")
-    boolean equals3() {
-        return iDecl.equals(env.getTypeDeclaration("I"));
-    }
-
-
-    @Test(result={"@AT1", "@AT2"})
-    Collection<AnnotationMirror> getAnnotationMirrors() {
-        return iDecl.getAnnotationMirrors();
-    }
-
-    @Test(result=" Sed Quis custodiet ipsos custodes?\n")
-    String getDocComment() {
-        return iDecl.getDocComment();
-    }
-
-    // Check that interface has "abstract" modifier, even though it's implict
-    // in the source code.
-    @Test(result={"abstract"})
-    Collection<Modifier> getModifiers1() {
-        return iDecl.getModifiers();
-    }
-
-    // Check that nested interface has "static" modifier, even though
-    // it's implicit in the source code and the VM doesn't set that bit.
-    @Test(result={"public", "abstract", "static"})
-    Collection<Modifier> getModifiers2() {
-        return nested.getModifiers();
-    }
-
-    @Test(result="InterfaceDecl.java")
-    String getPosition() {
-        return iDecl.getPosition().file().getName();
-    }
-
-    @Test(result="I")
-    String getSimpleName1() {
-        return iDecl.getSimpleName();
-    }
-
-    @Test(result="Nested")
-    String getSimpleName2() {
-        return nested.getSimpleName();
-    }
-
-
-    // MemberDeclaration method
-
-    @Test(result="null")
-    TypeDeclaration getDeclaringType1() {
-        return iDecl.getDeclaringType();
-    }
-
-    @Test(result="I<T extends java.lang.Number>")
-    TypeDeclaration getDeclaringType2() {
-        return nested.getDeclaringType();
-    }
-
-
-    // TypeDeclaration methods
-
-    @Test(result={"i"})
-    Collection<FieldDeclaration> getFields() {
-        return iDecl.getFields();
-    }
-
-    @Test(result={"T extends java.lang.Number"})
-    Collection<TypeParameterDeclaration> getFormalTypeParameters1() {
-        return iDecl.getFormalTypeParameters();
-    }
-
-    @Test(result={})
-    Collection<TypeParameterDeclaration> getFormalTypeParameters2() {
-        return nested.getFormalTypeParameters();
-    }
-
-    // 4993303: verify policy on Object methods being visible
-    @Test(result={"m()", "toString()"})
-    Collection<? extends MethodDeclaration> getMethods() {
-        return nested.getMethods();
-    }
-
-    @Test(result="I.Nested")
-    Collection<TypeDeclaration> getNestedTypes() {
-        return iDecl.getNestedTypes();
-    }
-
-    @Test(result="")
-    PackageDeclaration getPackage1() {
-        return iDecl.getPackage();
-    }
-
-    @Test(result="java.util")
-    PackageDeclaration getPackage2() {
-        InterfaceDeclaration set =
-            (InterfaceDeclaration) env.getTypeDeclaration("java.util.Set");
-        return set.getPackage();
-    }
-
-    @Test(result="I")
-    String getQualifiedName1() {
-        return iDecl.getQualifiedName();
-    }
-
-    @Test(result="I.Nested")
-    String getQualifiedName2() {
-        return nested.getQualifiedName();
-    }
-
-    @Test(result="java.util.Set")
-    String getQualifiedName3() {
-        InterfaceDeclaration set =
-            (InterfaceDeclaration) env.getTypeDeclaration("java.util.Set");
-        return set.getQualifiedName();
-    }
-
-    @Test(result="java.lang.Runnable")
-    Collection<InterfaceType> getSuperinterfaces() {
-        return iDecl.getSuperinterfaces();
-    }
-}
-
-
-// Interfaces used for testing.
-
-/**
- * Sed Quis custodiet ipsos custodes?
- */
-@AT1
-@AT2
-interface I<T extends Number> extends Runnable {
-    int i = 6;
-    void m1();
-    void m2();
-    void m2(int j);
-
-    interface Nested {
-        void m();
-        String toString();
-    }
-}
-
-@interface AT1 {
-}
-
-@interface AT2 {
-}
--- a/langtools/test/tools/apt/mirror/declaration/MethodDecl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 5010746
- * @summary MethodDeclaration tests
- * @library ../../lib
- * @compile -source 1.5 MethodDecl.java
- * @run main/othervm MethodDecl
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class MethodDecl extends Tester {
-
-    public static void main(String[] args) {
-        (new MethodDecl()).run();
-    }
-
-
-    private MethodDeclaration meth1 = null;             // a method
-    private MethodDeclaration meth2 = null;             // another method
-
-    protected void init() {
-        meth1 = getMethod("m1");
-        meth2 = getMethod("m2");
-    }
-
-
-    // Declaration methods
-
-    @Test(result="method")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        meth1.accept(new SimpleDeclarationVisitor() {
-            public void visitTypeDeclaration(TypeDeclaration t) {
-                res.add("type");
-            }
-            public void visitExecutableDeclaration(ExecutableDeclaration e) {
-                res.add("executable");
-            }
-            public void visitMethodDeclaration(MethodDeclaration m) {
-                res.add("method");
-            }
-            public void visitAnnotationTypeElementDeclaration(
-                                        AnnotationTypeElementDeclaration a) {
-                res.add("anno type element");
-            }
-        });
-        return res;
-    }
-
-    @Test(result={"@AT1"})
-    Collection<AnnotationMirror> getAnnotationMirrors() {
-        return meth1.getAnnotationMirrors();
-    }
-
-    @Test(result=" Sed Quis custodiet ipsos custodes?\n")
-    String getDocComment() {
-        return meth1.getDocComment();
-    }
-
-    @Test(result={"private", "static", "strictfp"})
-    Collection<Modifier> getModifiers() {
-        return meth1.getModifiers();
-    }
-
-    // Interface methods are implicitly public and abstract.
-    @Test(result={"public", "abstract"})
-    Collection<Modifier> getModifiersInterface() {
-        for (TypeDeclaration t : thisClassDecl.getNestedTypes()) {
-            for (MethodDeclaration m : t.getMethods()) {
-                return m.getModifiers();
-            }
-        }
-        throw new AssertionError();
-    }
-
-    @Test(result="MethodDecl.java")
-    String getPosition() {
-        return meth1.getPosition().file().getName();
-    }
-
-    @Test(result="m2")
-    String getSimpleName() {
-        return meth2.getSimpleName();
-    }
-
-
-    // MemberDeclaration method
-
-    @Test(result="MethodDecl")
-    TypeDeclaration getDeclaringType() {
-        return meth1.getDeclaringType();
-    }
-
-
-    // ExecutableDeclaration methods
-
-    @Test(result={})
-    Collection<TypeParameterDeclaration> getFormalTypeParameters1() {
-        return meth1.getFormalTypeParameters();
-    }
-
-    @Test(result={"T", "N extends java.lang.Number"},
-          ordered=true)
-    Collection<TypeParameterDeclaration> getFormalTypeParameters2() {
-        return meth2.getFormalTypeParameters();
-    }
-
-    @Test(result={})
-    Collection<ParameterDeclaration> getParameters1() {
-        return meth1.getParameters();
-    }
-
-    @Test(result={"N n", "java.lang.String[] ss"},
-          ordered=true)
-    Collection<ParameterDeclaration> getParameters2() {
-        return meth2.getParameters();
-    }
-
-    @Test(result="true")
-    boolean parameterEquals1() {
-        ParameterDeclaration p1 =
-            getMethod("m3").getParameters().iterator().next();
-        ParameterDeclaration p2 =
-            getMethod("m3").getParameters().iterator().next();
-        return p1.equals(p2);
-    }
-
-    @Test(result="false")
-    boolean parameterEquals2() {
-        ParameterDeclaration p1 =
-            getMethod("m3").getParameters().iterator().next();
-        ParameterDeclaration p2 =
-            getMethod("m4").getParameters().iterator().next();
-        return p1.equals(p2);
-    }
-
-    @Test(result="true")
-    boolean parameterHashCode() {
-        ParameterDeclaration p1 =
-            getMethod("m3").getParameters().iterator().next();
-        ParameterDeclaration p2 =
-            getMethod("m3").getParameters().iterator().next();
-        return p1.hashCode() == p2.hashCode();
-    }
-
-    @Test(result={"java.lang.Throwable"})
-    Collection<ReferenceType> getThrownTypes() {
-        return meth2.getThrownTypes();
-    }
-
-    @Test(result="false")
-    Boolean isVarArgs1() {
-        return meth1.isVarArgs();
-    }
-
-    @Test(result="true")
-    Boolean isVarArgs2() {
-        return meth2.isVarArgs();
-    }
-
-
-    // MethodDeclaration methods
-
-    @Test(result="void")
-    TypeMirror getReturnType1() {
-        return meth1.getReturnType();
-    }
-
-    @Test(result="N")
-    TypeMirror getReturnType2() {
-        return meth2.getReturnType();
-    }
-
-
-    // toString
-
-    @Test(result="<T, N extends java.lang.Number> m2(N, java.lang.String...)")
-    @Ignore("This is what it would be nice to see.")
-    String toStringTest() {
-        return meth2.toString();
-    }
-
-
-    // Declarations used by tests.
-
-    /**
-     * Sed Quis custodiet ipsos custodes?
-     */
-    @AT1
-    private static strictfp void m1() {
-    }
-
-    private <T, N extends Number> N m2(N n, String... ss) throws Throwable {
-        return null;
-    }
-
-    private void m3(String s) {
-    }
-
-    private void m4(String s) {
-    }
-
-    // A nested interface
-    interface I {
-        void m();
-    }
-}
-
-
-// Annotation type used by tests.
-
-@interface AT1 {
-}
--- a/langtools/test/tools/apt/mirror/declaration/PackageDecl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,167 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 5031168
- * @summary PackageDeclaration tests
- * @library ../../lib
- * @compile -source 1.5 PackageDecl.java
- * @run main/othervm PackageDecl
- */
-
-
-import java.io.File;
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import pkg1.pkg2.*;
-
-
-/**
- * Sed Quis custodiet ipsos custodes?
- */
-public class PackageDecl extends Tester {
-
-    public PackageDecl() {
-        super(System.getProperty("test.src", ".") + File.separator +
-              "pkg1" + File.separator + "package-info.java");
-    }
-
-    public static void main(String[] args) {
-        (new PackageDecl()).run();
-    }
-
-
-    private PackageDeclaration pkg1 = null;             // a package
-    private PackageDeclaration pkg2 = null;             // a subpackage
-
-    protected void init() {
-        pkg1 = env.getPackage("pkg1");
-        pkg2 = env.getPackage("pkg1.pkg2");
-    }
-
-
-    // Declaration methods
-
-    @Test(result="package")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        pkg1.accept(new SimpleDeclarationVisitor() {
-            public void visitTypeDeclaration(TypeDeclaration t) {
-                res.add("type");
-            }
-            public void visitPackageDeclaration(PackageDeclaration p) {
-                res.add("package");
-            }
-        });
-        return res;
-    }
-
-    @Test(result={"@pkg1.AnAnnoType"})
-    Collection<AnnotationMirror> getAnnotationMirrors() {
-        return pkg1.getAnnotationMirrors();
-    }
-
-    @Test(result=" Herein lieth the package comment.\n" +
-                 " A doc comment it be, and wonderous to behold.\n")
-    String getDocCommentFromPackageInfoFile() {
-        return pkg1.getDocComment();
-    }
-
-    @Test(result="\nHerein lieth the package comment.\n" +
-                 "An HTML file it be, and wonderous to behold.\n\n")
-    @Ignore("Not yet supported")
-    String getDocCommentFromHtmlFile() {
-        return pkg2.getDocComment();
-    }
-
-    @Test(result={})
-    Collection<Modifier> getModifiers() {
-        return pkg1.getModifiers();
-    }
-
-    @Test(result="null")
-    SourcePosition getPosition() {
-        return thisClassDecl.getPackage().getPosition();
-    }
-
-    @Test(result="package-info.java")
-    String getPositionFromPackageInfoFile() {
-        return pkg1.getPosition().file().getName();
-    }
-
-    @Test(result="pkg1/pkg2/package.html")
-    @Ignore("Not yet supported")
-    String getPositionFromHtmlFile() {
-        return pkg2.getPosition().file().getName()
-                                            .replace(File.separatorChar, '/');
-    }
-
-    @Test(result="pkg1")
-    String getSimpleName1() {
-        return pkg1.getSimpleName();
-    }
-
-    @Test(result="pkg2")
-    String getSimpleName2() {
-        return pkg2.getSimpleName();
-    }
-
-
-    // PackageDeclaration methods
-
-    @Test(result="pkg1.AnAnnoType")
-    Collection<AnnotationTypeDeclaration> getAnnotationTypes() {
-        return pkg1.getAnnotationTypes();
-    }
-
-    @Test(result={"pkg1.AClass", "pkg1.AnEnum"})
-    Collection<ClassDeclaration> getClasses() {
-        return pkg1.getClasses();
-    }
-
-    @Test(result="pkg1.AnEnum")
-    Collection<EnumDeclaration> getEnums() {
-        return pkg1.getEnums();
-    }
-
-    @Test(result={"pkg1.AnInterface", "pkg1.AnAnnoType"})
-    Collection<InterfaceDeclaration> getInterfaces() {
-        return pkg1.getInterfaces();
-    }
-
-    @Test(result="pkg1")
-    String getQualifiedName1() {
-        return pkg1.getQualifiedName();
-    }
-
-    @Test(result="pkg1.pkg2")
-    String getQualifiedName2() {
-        return pkg2.getQualifiedName();
-    }
-}
--- a/langtools/test/tools/apt/mirror/declaration/ParameterDecl.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 5031171
- * @summary ParameterDeclaration tests
- * @library ../../lib
- * @run main/othervm ParameterDecl
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class ParameterDecl extends Tester {
-
-    public static void main(String[] args) {
-        (new ParameterDecl()).run();
-    }
-
-
-    // Declarations used by tests
-
-    @interface AT1 {
-    }
-
-    @interface AT2 {
-        boolean value();
-    }
-
-    private void m1(@AT1 @AT2(true) final int p1) {
-    }
-
-    private void m2(int p1) {
-    }
-
-
-    private ParameterDeclaration p1 = null;     // a parameter
-
-    protected void init() {
-        p1 = getMethod("m1").getParameters().iterator().next();
-    }
-
-
-    // Declaration methods
-
-    @Test(result="param")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        p1.accept(new SimpleDeclarationVisitor() {
-            public void visitFieldDeclaration(FieldDeclaration f) {
-                res.add("field");
-            }
-            public void visitParameterDeclaration(ParameterDeclaration p) {
-                res.add("param");
-            }
-        });
-        return res;
-    }
-
-    @Test(result={"@ParameterDecl.AT1", "@ParameterDecl.AT2(true)"})
-    Collection<AnnotationMirror> getAnnotationMirrors() {
-        return p1.getAnnotationMirrors();
-    }
-
-    @Test(result={"final"})
-    Collection<Modifier> getModifiers() {
-        return p1.getModifiers();
-    }
-
-    @Test(result="ParameterDecl.java")
-    String getPosition() {
-        return p1.getPosition().file().getName();
-    }
-
-    @Test(result="p1")
-    String getSimpleName() {
-        return p1.getSimpleName();
-    }
-
-
-    // ParameterDeclaration methods
-
-    @Test(result="int")
-    TypeMirror getType() {
-        return p1.getType();
-    }
-
-
-    // toString, equals
-
-    @Test(result="int p1")
-    String toStringTest() {
-        return p1.toString();
-    }
-
-    @Test(result="true")
-    boolean equalsTest1() {
-        ParameterDeclaration p =
-            getMethod("m1").getParameters().iterator().next();
-        return p1.equals(p);
-    }
-
-    // Not all p1's are equal.
-    @Test(result="false")
-    boolean equalsTest2() {
-        ParameterDeclaration p2 =
-            getMethod("m2").getParameters().iterator().next();
-        return p1.equals(p2);
-    }
-}
--- a/langtools/test/tools/apt/mirror/declaration/pkg1/AClass.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-package pkg1;
-
-public class AClass {
-}
--- a/langtools/test/tools/apt/mirror/declaration/pkg1/AnAnnoType.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-
-package pkg1;
-
-public @interface AnAnnoType {
-}
--- a/langtools/test/tools/apt/mirror/declaration/pkg1/AnEnum.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-package pkg1;
-
-enum AnEnum {
-}
--- a/langtools/test/tools/apt/mirror/declaration/pkg1/AnInterface.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-
-package pkg1;
-
-public interface AnInterface {
-}
--- a/langtools/test/tools/apt/mirror/declaration/pkg1/package-info.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/**
- * Herein lieth the package comment.
- * A doc comment it be, and wonderous to behold.
- */
-@AnAnnoType
-package pkg1;
--- a/langtools/test/tools/apt/mirror/declaration/pkg1/pkg2/AnInterface.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package pkg1.pkg2;
-
-public interface AnInterface {
-}
--- a/langtools/test/tools/apt/mirror/declaration/pkg1/pkg2/package.html	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
-DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
-This code is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-
-</head>
-<body bgcolor="white">
-
-Herein lieth the package comment.
-An HTML file it be, and wonderous to behold.
-
-</body>
-</html>
--- a/langtools/test/tools/apt/mirror/type/AnnoTyp.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450
- * @summary AnnotationType tests
- * @library ../../lib
- * @compile -source 1.5 AnnoTyp.java
- * @run main/othervm AnnoTyp
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class AnnoTyp extends Tester {
-
-    public static void main(String[] args) {
-        (new AnnoTyp()).run();
-    }
-
-
-    // Declaration used by tests
-
-    @interface AT {
-    }
-
-
-    private AnnotationType at;  // an annotation type
-
-    @AT
-    protected void init() {
-        at = getAnno("init", "AnnoTyp.AT").getAnnotationType();
-    }
-
-
-    // TypeMirror methods
-
-    @Test(result="anno type")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        at.accept(new SimpleTypeVisitor() {
-            public void visitReferenceType(ReferenceType t) {
-                res.add("ref type");
-            }
-            public void visitClassType(ClassType t) {
-                res.add("class");
-            }
-            public void visitInterfaceType(InterfaceType t) {
-                res.add("interface");
-            }
-            public void visitAnnotationType(AnnotationType t) {
-                res.add("anno type");
-            }
-        });
-        return res;
-    }
-
-
-    // AnnotationType method
-
-    @Test(result="AnnoTyp.AT")
-    AnnotationTypeDeclaration getDeclaration() {
-        return at.getDeclaration();
-    }
-}
--- a/langtools/test/tools/apt/mirror/type/ArrayTyp.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 5009357
- * @summary ArrayType tests
- * @library ../../lib
- * @compile -source 1.5 ArrayTyp.java
- * @run main/othervm ArrayTyp
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class ArrayTyp extends Tester {
-
-    public static void main(String[] args) {
-        (new ArrayTyp()).run();
-    }
-
-
-    // Declaration used by tests
-
-    private boolean[] bs;
-    private String[][] bss;
-
-
-    private ArrayType arr;              // an array type
-    private ArrayType arrarr;           // a multi-dimensional array type
-
-    protected void init() {
-        arr = (ArrayType) getField("bs").getType();
-        arrarr = (ArrayType) getField("bss").getType();
-    }
-
-
-    // TypeMirror methods
-
-    @Test(result="array")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        arr.accept(new SimpleTypeVisitor() {
-            public void visitTypeMirror(TypeMirror t) {
-                res.add("type");
-            }
-            public void visitArrayType(ArrayType t) {
-                res.add("array");
-            }
-            public void visitReferenceType(ReferenceType t) {
-                res.add("ref type");
-            }
-        });
-        return res;
-    }
-
-    @Test(result="boolean[]")
-    String toStringTest() {
-        return arr.toString();
-    }
-
-    @Test(result="java.lang.String[][]")
-    String toStringTestMulti() {
-        return arrarr.toString();
-    }
-
-
-    // ArrayType method
-
-    @Test(result="boolean")
-    TypeMirror getComponentType() {
-        return (PrimitiveType) arr.getComponentType();
-    }
-
-    @Test(result="java.lang.String[]")
-    TypeMirror getComponentTypeMulti() {
-        return (ArrayType) arrarr.getComponentType();
-    }
-}
--- a/langtools/test/tools/apt/mirror/type/ClassTyp.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,240 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 5009360 5055963
- * @summary ClassType tests
- * @library ../../lib
- * @run main/othervm ClassTyp
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class ClassTyp<T1,T2> extends Tester {
-
-    public static void main(String[] args) {
-        (new ClassTyp()).run();
-    }
-
-
-    // Declarations used by tests
-
-    static class C1<S> extends AbstractSet<S> implements Set<S> {
-        class C2<R> {
-        }
-
-        static class C3<R> {
-            class C4<Q> {
-            }
-        }
-
-        public Iterator<S> iterator() {
-            return null;
-        }
-
-        public int size() {
-            return 0;
-        }
-    }
-
-
-    // Generate some class types to test.
-    private C1<T1> f0;
-    private C1<String> f1;
-    private C1 f2;
-    private C1.C3<T2> f3;
-    private C1<T1>.C2<T2> f4;
-    private C1.C2 f5;
-    private C1<T1> f6;
-    private C1.C3<T2>.C4<T1> f7;
-    private static final int NUMTYPES = 8;
-
-    // Type mirrors corresponding to the types of the above fields
-    private ClassType[] t = new ClassType[NUMTYPES];
-
-    // One more type:  our own.
-    private ClassTyp<T1,T2> me = this;
-
-
-    protected void init() {
-        for (int i = 0; i < t.length; i++) {
-            t[i] = (ClassType) getField("f"+i).getType();
-        }
-    }
-
-
-    // TypeMirror methods
-
-    @Test(result="class")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        t[0].accept(new SimpleTypeVisitor() {
-            public void visitReferenceType(ReferenceType t) {
-                res.add("ref type");
-            }
-            public void visitClassType(ClassType t) {
-                res.add("class");
-            }
-            public void visitInterfaceType(InterfaceType t) {
-                res.add("interface");
-            }
-        });
-        return res;
-    }
-
-    @Test(result="true")
-    boolean equals1() {
-        return t[0].equals(t[0]);
-    }
-
-    @Test(result="false")
-    boolean equals2() {
-        return t[0].equals(t[1]);
-    }
-
-    // Raw type is not same as type instantiated with unbounded type var.
-    @Test(result="false")
-    boolean equals3() {
-        return t[0].equals(t[2]);
-    }
-
-    // C1<T1> is same type as C1<T1>
-    @Test(result="true")
-    boolean equals4() {
-        return t[0].equals(t[6]);
-    }
-
-    @Test(result={
-              "ClassTyp.C1<T1>",
-              "ClassTyp.C1<java.lang.String>",
-              "ClassTyp.C1",
-              "ClassTyp.C1.C3<T2>",
-              "ClassTyp.C1<T1>.C2<T2>",
-              "ClassTyp.C1.C2",
-              "ClassTyp.C1<T1>",
-              "ClassTyp.C1.C3<T2>.C4<T1>"
-          },
-          ordered=true)
-    Collection<String> toStringTests() {
-        Collection<String> res = new ArrayList<String>();
-        for (ClassType c : t) {
-            res.add(c.toString());
-        }
-        return res;
-    }
-
-
-    // DeclaredType methods
-
-    @Test(result={"T1"})
-    Collection<TypeMirror> getActualTypeArguments1() {
-        return t[0].getActualTypeArguments();
-    }
-
-    @Test(result={})
-    Collection<TypeMirror> getActualTypeArguments2() {
-        return t[2].getActualTypeArguments();
-    }
-
-    @Test(result={"T2"})
-    Collection<TypeMirror> getActualTypeArguments3() {
-        return t[3].getActualTypeArguments();
-    }
-
-    @Test(result="null")
-    DeclaredType getContainingType1() {
-        ClassType thisType = (ClassType) getField("me").getType();
-        return thisType.getContainingType();
-    }
-
-    @Test(result="ClassTyp")
-    DeclaredType getContainingType2() {
-        return t[0].getContainingType();
-    }
-
-    @Test(result="ClassTyp.C1")
-    DeclaredType getContainingType3() {
-        return t[3].getContainingType();
-    }
-
-    @Test(result="ClassTyp.C1<T1>")
-    DeclaredType getContainingType4() {
-        return t[4].getContainingType();
-    }
-
-    @Test(result={"java.util.Set<T1>"})
-    Collection<InterfaceType> getSuperinterfaces() {
-        return t[0].getSuperinterfaces();
-    }
-
-
-    // ClassType methods
-
-    @Test(result="ClassTyp.C1<S>")
-    ClassDeclaration getDeclaration1() {
-        return t[0].getDeclaration();
-    }
-
-    @Test(result="ClassTyp.C1.C3<R>")
-    ClassDeclaration getDeclaration2() {
-        return t[3].getDeclaration();
-    }
-
-    @Test(result="ClassTyp.C1<S>.C2<R>")
-    ClassDeclaration getDeclaration3a() {
-        return t[4].getDeclaration();
-    }
-
-    @Test(result="ClassTyp.C1<S>.C2<R>")
-    ClassDeclaration getDeclaration3b() {
-        return t[5].getDeclaration();
-    }
-
-    @Test(result="true")
-    boolean getDeclarationEq() {
-        return t[0].getDeclaration() == t[6].getDeclaration();
-    }
-
-    @Test(result="java.util.AbstractSet<T1>")
-    ClassType getSuperclass1() {
-        return t[0].getSuperclass();
-    }
-
-    @Test(result="java.lang.Object")
-    ClassType getSuperclass2() {
-        return t[4].getSuperclass();
-    }
-
-    @Test(result="null")
-    ClassType getSuperclassOfObject() {
-        return t[4].getSuperclass().getSuperclass();
-    }
-}
--- a/langtools/test/tools/apt/mirror/type/EnumTyp.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450
- * @summary EnumType tests
- * @library ../../lib
- * @compile -source 1.5 EnumTyp.java
- * @run main/othervm EnumTyp
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class EnumTyp extends Tester {
-
-    public static void main(String[] args) {
-        (new EnumTyp()).run();
-    }
-
-
-    // Declarations used by tests
-
-    enum Suit {
-        CIVIL,
-        CRIMINAL
-    }
-
-    private Suit s;
-
-
-    private EnumType e;         // an enum type
-
-    protected void init() {
-        e = (EnumType) getField("s").getType();
-    }
-
-
-    // TypeMirror methods
-
-    @Test(result="enum")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        e.accept(new SimpleTypeVisitor() {
-            public void visitTypeMirror(TypeMirror t) {
-                res.add("type");
-            }
-            public void visitReferenceType(ReferenceType t) {
-                res.add("ref type");
-            }
-            public void visitClassType(ClassType t) {
-                res.add("class");
-            }
-            public void visitEnumType(EnumType t) {
-                res.add("enum");
-            }
-            public void visitInterfaceType(InterfaceType t) {
-                res.add("interface");
-            }
-        });
-        return res;
-    }
-
-
-    // EnumType method
-
-    @Test(result="EnumTyp.Suit")
-    EnumDeclaration getDeclaration() {
-        return e.getDeclaration();
-    }
-}
--- a/langtools/test/tools/apt/mirror/type/InterfaceTyp.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 5055963
- * @summary InterfaceType tests
- * @library ../../lib
- * @run main/othervm InterfaceTyp
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class InterfaceTyp<T1,T2> extends Tester {
-
-    public static void main(String[] args) {
-        (new InterfaceTyp()).run();
-    }
-
-
-    // Declarations used by tests
-
-    interface I1<S> extends Set<String> {
-        interface I2<R> {
-        }
-    }
-
-
-    // Generate some interface types to test
-    private I1<T1> f0;
-    private I1<String> f1;
-    private I1 f2;
-    private I1.I2<String> f3;
-    private I1.I2 f4;
-    private I1<T1> f5;
-    private I3<T1> f6;
-    private static final int NUMTYPES = 7;
-
-    // Type mirrors corresponding to the types of the above fields
-    private InterfaceType[] t = new InterfaceType[NUMTYPES];
-
-    protected void init() {
-        for (int i = 0; i < t.length; i++) {
-            t[i] = (InterfaceType) getField("f"+i).getType();
-        }
-    }
-
-
-    // TypeMirror methods
-
-    @Test(result="interface")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        t[0].accept(new SimpleTypeVisitor() {
-            public void visitReferenceType(ReferenceType t) {
-                res.add("ref type");
-            }
-            public void visitClassType(ClassType t) {
-                res.add("class");
-            }
-            public void visitInterfaceType(InterfaceType t) {
-                res.add("interface");
-            }
-        });
-        return res;
-    }
-
-    @Test(result="true")
-    boolean equals1() {
-        return t[0].equals(t[0]);
-    }
-
-    @Test(result="false")
-    boolean equals2() {
-        return t[0].equals(t[1]);
-    }
-
-    // Raw type is not same as type instantiated with unbounded type var.
-    @Test(result="false")
-    boolean equals3() {
-        return t[0].equals(t[2]);
-    }
-
-    // I1<T1> is same type as I1<T1>
-    @Test(result="true")
-    boolean equals4() {
-        return t[0].equals(t[5]);
-    }
-
-    @Test(result={
-              "InterfaceTyp.I1<T1>",
-              "InterfaceTyp.I1<java.lang.String>",
-              "InterfaceTyp.I1",
-              "InterfaceTyp.I1.I2<java.lang.String>",
-              "InterfaceTyp.I1.I2",
-              "InterfaceTyp.I1<T1>",
-              "I3<T1>"
-          },
-          ordered=true)
-    Collection<String> toStringTests() {
-        Collection<String> res = new ArrayList<String>();
-        for (InterfaceType i : t) {
-            res.add(i.toString());
-        }
-        return res;
-    }
-
-
-    // DeclaredType methods
-
-    @Test(result={"T1"})
-    Collection<TypeMirror> getActualTypeArguments1() {
-        return t[0].getActualTypeArguments();
-    }
-
-    @Test(result={})
-    Collection<TypeMirror> getActualTypeArguments2() {
-        return t[2].getActualTypeArguments();
-    }
-
-    @Test(result={"java.lang.String"})
-    Collection<TypeMirror> getActualTypeArguments3() {
-        return t[3].getActualTypeArguments();
-    }
-
-    @Test(result="InterfaceTyp")
-    DeclaredType getContainingType1() {
-        return t[0].getContainingType();
-    }
-
-    @Test(result="InterfaceTyp.I1")
-    DeclaredType getContainingType2() {
-        return t[3].getContainingType();
-    }
-
-    @Test(result="null")
-    DeclaredType getContainingTypeTopLevel() {
-        return t[6].getContainingType();
-    }
-
-    @Test(result={"java.util.Set<java.lang.String>"})
-    Collection<InterfaceType> getSuperinterfaces() {
-        return t[0].getSuperinterfaces();
-    }
-
-
-
-    // InterfaceType method
-
-    @Test(result="InterfaceTyp.I1<S>")
-    InterfaceDeclaration getDeclaration1() {
-        return t[0].getDeclaration();
-    }
-
-    @Test(result="InterfaceTyp.I1.I2<R>")
-    InterfaceDeclaration getDeclaration2a() {
-        return t[3].getDeclaration();
-    }
-
-    @Test(result="InterfaceTyp.I1.I2<R>")
-    InterfaceDeclaration getDeclaration2b() {
-        return t[4].getDeclaration();
-    }
-
-    @Test(result="true")
-    boolean getDeclarationCaching() {
-        return t[0].getDeclaration() == t[5].getDeclaration();
-    }
-}
-
-
-// A top-level interface used by tests.
-
-interface I3<T> {
-}
--- a/langtools/test/tools/apt/mirror/type/PrimitiveTyp.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450
- * @summary PrimitiveType tests
- * @library ../../lib
- * @compile -source 1.5 PrimitiveTyp.java
- * @run main/othervm PrimitiveTyp
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class PrimitiveTyp extends Tester {
-
-    public static void main(String[] args) {
-        (new PrimitiveTyp()).run();
-    }
-
-
-    // Declaration used by tests
-
-    private boolean b;
-
-
-    private PrimitiveType prim;         // a primitive type
-
-    protected void init() {
-        prim = (PrimitiveType) getField("b").getType();
-    }
-
-
-    // TypeMirror methods
-
-    @Test(result="primitive")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        prim.accept(new SimpleTypeVisitor() {
-            public void visitTypeMirror(TypeMirror t) {
-                res.add("type");
-            }
-            public void visitPrimitiveType(PrimitiveType t) {
-                res.add("primitive");
-            }
-            public void visitReferenceType(ReferenceType t) {
-                res.add("ref type");
-            }
-        });
-        return res;
-    }
-
-    @Test(result="boolean")
-    String toStringTest() {
-        return prim.toString();
-    }
-
-
-    // PrimitiveType method
-
-    @Test(result="BOOLEAN")
-    PrimitiveType.Kind getKind() {
-        return prim.getKind();
-    }
-}
--- a/langtools/test/tools/apt/mirror/type/TypeVar.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450
- * @summary TypeVariable tests
- * @library ../../lib
- * @compile -source 1.5 TypeVar.java
- * @run main/othervm TypeVar
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class TypeVar<T, S extends Number & Runnable> extends Tester {
-
-    public static void main(String[] args) {
-        (new TypeVar()).run();
-    }
-
-
-    // Declarations used by tests
-
-    private T t;
-    private S s;
-
-
-    private TypeVariable tvT;   // type variable T
-    private TypeVariable tvS;   // type variable S
-
-    protected void init() {
-        tvT = (TypeVariable) getField("t").getType();
-        tvS = (TypeVariable) getField("s").getType();
-    }
-
-
-    // TypeMirror methods
-
-    @Test(result="type var")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        tvT.accept(new SimpleTypeVisitor() {
-            public void visitTypeMirror(TypeMirror t) {
-                res.add("type");
-            }
-            public void visitReferenceType(ReferenceType t) {
-                res.add("ref type");
-            }
-            public void visitTypeVariable(TypeVariable t) {
-                res.add("type var");
-            }
-        });
-        return res;
-    }
-
-    @Test(result="T")
-    String toStringTest1() {
-        return tvT.toString();
-    }
-
-    @Test(result="S")
-    String toStringTest2() {
-        return tvS.toString();
-    }
-
-
-    // TypeVariable method
-
-    @Test(result="S extends java.lang.Number & java.lang.Runnable")
-    TypeParameterDeclaration getDeclaration() {
-        return tvS.getDeclaration();
-    }
-}
--- a/langtools/test/tools/apt/mirror/type/WildcardTyp.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 4853450 5009396 5010636 5031156
- * @summary WildcardType tests
- * @library ../../lib
- * @compile -source 1.5 WildcardTyp.java
- * @run main/othervm WildcardTyp
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class WildcardTyp extends Tester {
-
-    public static void main(String[] args) {
-        (new WildcardTyp()).run();
-    }
-
-
-    // Declarations to use for testing
-
-    interface G<T> {
-    }
-
-    interface G1<N extends Number & Runnable> {
-    }
-
-    interface G2<T extends G2<T>> {
-    }
-
-    // Some wildcard types to test.
-    private G<?> f0;                    // unbound
-    private G<? extends Number> f1;     // covariant
-    private G<? super Number> f2;       // contravariant
-    private G<? extends Object> f3;     // <sigh>
-    private G1<?> f4;   // "true" upper bound is an intersection type
-    private G2<?> f5;   // 'true" upper bound is a recursive F-bound and
-                        // not expressible
-    private static final int NUMTYPES = 6;
-
-    // Type mirrors corresponding to the wildcard types of the above fields
-    private WildcardType[] t = new WildcardType[NUMTYPES];
-
-
-    protected void init() {
-        for (int i = 0; i < t.length; i++) {
-            DeclaredType type = (DeclaredType) getField("f"+i).getType();
-            t[i] = (WildcardType)
-                type.getActualTypeArguments().iterator().next();
-        }
-    }
-
-    private WildcardType wildcardFor(String field) {
-        DeclaredType d = (DeclaredType) getField(field).getType();
-        return (WildcardType) d.getActualTypeArguments().iterator().next();
-    }
-
-
-    // TypeMirror methods
-
-    @Test(result="wild thing")
-    Collection<String> accept() {
-        final Collection<String> res = new ArrayList<String>();
-
-        t[0].accept(new SimpleTypeVisitor() {
-            public void visitTypeMirror(TypeMirror t) {
-                res.add("type");
-            }
-            public void visitReferenceType(ReferenceType t) {
-                res.add("ref type");
-            }
-            public void visitWildcardType(WildcardType t) {
-                res.add("wild thing");
-            }
-        });
-        return res;
-    }
-
-    @Test(result={
-                "?",
-                "? extends java.lang.Number",
-                "? super java.lang.Number",
-                "? extends java.lang.Object",
-                "?",
-                "?"
-          },
-          ordered=true)
-    Collection<String> toStringTests() {
-        Collection<String> res = new ArrayList<String>();
-        for (WildcardType w : t) {
-            res.add(w.toString());
-        }
-        return res;
-    }
-
-
-    // WildcardType methods
-
-    @Test(result={
-                "null",
-                "null",
-                "java.lang.Number",
-                "null",
-                "null",
-                "null"
-          },
-          ordered=true)
-    Collection<ReferenceType> getLowerBounds() {
-        Collection<ReferenceType> res = new ArrayList<ReferenceType>();
-        for (WildcardType w : t) {
-            Collection<ReferenceType> bounds = w.getLowerBounds();
-            int num = bounds.size();
-            if (num > 1) {
-                throw new AssertionError("Bounds abound");
-            }
-            res.add((num > 0) ? bounds.iterator().next() : null);
-        }
-        return res;
-    }
-
-    @Test(result={
-                "null",
-                "java.lang.Number",
-                "null",
-                "java.lang.Object",
-                "null",
-                "null"
-          },
-          ordered=true)
-    Collection<ReferenceType> getUpperBounds() {
-        Collection<ReferenceType> res = new ArrayList<ReferenceType>();
-        for (WildcardType w : t) {
-            Collection<ReferenceType> bounds = w.getUpperBounds();
-            int num = bounds.size();
-            if (num > 1) {
-                throw new AssertionError("Bounds abound");
-            }
-            res.add((num > 0) ? bounds.iterator().next() : null);
-        }
-        return res;
-    }
-}
--- a/langtools/test/tools/apt/mirror/util/Overrides.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,152 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 5037165
- * @summary Test the Declarations.overrides method
- * @library ../../lib
- * @run main/othervm Overrides
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-
-public class Overrides extends Tester {
-
-    public static void main(String[] args) {
-        (new Overrides()).run();
-    }
-
-
-    // Declarations used by tests
-
-    static class A {
-        void m1(int i) {};              // does not override itself
-        void m2(int i) {};
-        static void m3(int i) {};
-    }
-
-        static class B extends A {
-            void m1(int j) {};          // overrides A.m1
-            void m1(String i) {};       // does not override A.m1
-            void m4(int i) {};          // does not override A.m1
-        }
-
-            static class C extends B {
-                void m1(int i) {};      // overrides A.m1 and B.m1
-                void m2(int i) {};      // overrides A.m2
-            }
-
-        static class D extends A {
-            static void m3(int i) {};   // does not override A.m3
-        }
-
-    static class E {
-        void m1(int i) {};              // does not override A.m1
-    }
-
-
-
-    private Declarations decls;
-
-    private TypeDeclaration A;
-    private TypeDeclaration B;
-    private TypeDeclaration C;
-    private TypeDeclaration D;
-    private TypeDeclaration E;
-    private MethodDeclaration Am1;
-    private MethodDeclaration Am2;
-    private MethodDeclaration Am3;
-    private MethodDeclaration Bm1;
-    private MethodDeclaration Bm1b;
-    private MethodDeclaration Bm4;
-    private MethodDeclaration Cm1;
-    private MethodDeclaration Cm2;
-    private MethodDeclaration Dm3;
-    private MethodDeclaration Em1;
-
-    protected void init() {
-        decls = env.getDeclarationUtils();
-
-        A = env.getTypeDeclaration("Overrides.A");
-        B = env.getTypeDeclaration("Overrides.B");
-        C = env.getTypeDeclaration("Overrides.C");
-        D = env.getTypeDeclaration("Overrides.D");
-        E = env.getTypeDeclaration("Overrides.E");
-
-        Am1  = getMethod(A, "m1", "i");
-        Am2  = getMethod(A, "m2", "i");
-        Am3  = getMethod(A, "m3", "i");
-        Bm1  = getMethod(B, "m1", "j");
-        Bm1b = getMethod(B, "m1", "i");
-        Bm4  = getMethod(B, "m4", "i");
-        Cm1  = getMethod(C, "m1", "i");
-        Cm2  = getMethod(C, "m2", "i");
-        Dm3  = getMethod(D, "m3", "i");
-        Em1  = getMethod(E, "m1", "i");
-    }
-
-    private MethodDeclaration getMethod(TypeDeclaration t,
-                                        String methodName, String paramName) {
-        for (MethodDeclaration m : t.getMethods()) {
-            if (methodName.equals(m.getSimpleName()) &&
-                    paramName.equals(m.getParameters().iterator().next()
-                                                        .getSimpleName())) {
-                return m;
-            }
-        }
-        throw new AssertionError();
-    }
-
-
-    // Declarations methods
-
-    @Test(result={"false",
-                  "true",
-                  "false",
-                  "false",
-                  "true",
-                  "true",
-                  "true",
-                  "false",
-                  "false"},
-          ordered=true)
-    List<Boolean> overrides() {
-        return Arrays.asList(
-                decls.overrides(Am1, Am1),
-                decls.overrides(Bm1, Am1),
-                decls.overrides(Bm1b,Am1),
-                decls.overrides(Bm4, Am1),
-                decls.overrides(Cm1, Am1),
-                decls.overrides(Cm1, Bm1),
-                decls.overrides(Cm2, Am2),
-                decls.overrides(Dm3, Am3),
-                decls.overrides(Em1, Am1));
-    }
-}
--- a/langtools/test/tools/apt/mirror/util/TypeCreation.java	Tue Feb 21 05:44:29 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @bug 5033381
- * @summary Test the type creation methods in Types.
- * @library ../../lib
- * @run main/othervm TypeCreation
- */
-
-
-import java.util.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import static com.sun.mirror.type.PrimitiveType.Kind.*;
-
-
-public class TypeCreation extends Tester {
-
-    public static void main(String[] args) {
-        (new TypeCreation()).run();
-    }
-
-
-    // Declarations used by tests
-
-    class A {
-    }
-
-    class O<T> {
-        class I<S> {
-        }
-    }
-
-
-    private Types types;
-
-    private TypeDeclaration A;
-    private TypeDeclaration O;
-    private TypeDeclaration I;
-
-    private DeclaredType AType;
-
-    protected void init() {
-        types = env.getTypeUtils();
-        A = env.getTypeDeclaration("TypeCreation.A");
-        O = env.getTypeDeclaration("TypeCreation.O");
-        I = env.getTypeDeclaration("TypeCreation.O.I");
-
-        AType = types.getDeclaredType(A);
-    }
-
-
-    @Test(result="boolean")
-    PrimitiveType getPrimitiveType() {
-        return types.getPrimitiveType(BOOLEAN);
-    }
-
-    @Test(result="void")
-    VoidType getVoidType() {
-        return types.getVoidType();
-    }
-
-    @Test(result="boolean[]")
-    ArrayType getArrayType1() {
-        return types.getArrayType(
-                types.getPrimitiveType(BOOLEAN));
-    }
-
-    @Test(result="TypeCreation.A[]")
-    ArrayType getArrayType2() {
-        return types.getArrayType(AType);
-    }
-
-    @Test(result="? extends TypeCreation.A")
-    WildcardType getWildcardType() {
-        Collection<ReferenceType> uppers = new ArrayList<ReferenceType>();
-        Collection<ReferenceType> downers = new ArrayList<ReferenceType>();
-        uppers.add(AType);
-        return types.getWildcardType(uppers, downers);
-    }
-
-    @Test(result="TypeCreation.O<java.lang.String>")
-    DeclaredType getDeclaredType1() {
-        TypeDeclaration stringDecl = env.getTypeDeclaration("java.lang.String");
-        DeclaredType stringType = types.getDeclaredType(stringDecl);
-        return types.getDeclaredType(O, stringType);
-    }
-
-    @Test(result="TypeCreation.O<java.lang.String>.I<java.lang.Number>")
-    DeclaredType getDeclaredType2() {
-        TypeDeclaration numDecl = env.getTypeDeclaration("java.lang.Number");
-        DeclaredType numType = types.getDeclaredType(numDecl);
-        DeclaredType OType = getDeclaredType1();
-        return types.getDeclaredType(OType, I, numType);
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/7142086/T7142086.java	Wed Feb 22 16:52:50 2012 -0800
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7142086
+ * @summary performance problem in Check.checkOverrideClashes(...)
+ * @run main/timeout=10 T7142086
+ */
+
+import com.sun.source.util.JavacTask;
+import java.net.URI;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Locale;
+import javax.tools.Diagnostic;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.SimpleJavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
+
+public class T7142086 {
+
+    final static int N_METHODS = 1000;
+
+    static class TestClass extends SimpleJavaFileObject {
+
+        String methTemplate = "abstract void m(A#N p);";
+        String classTemplate = "abstract class Test { #M }";
+
+        String source;
+
+        public TestClass() {
+            super(URI.create("myfo:/Test.java"), JavaFileObject.Kind.SOURCE);
+            StringBuilder buf = new StringBuilder();
+            for (int i = 0 ; i < N_METHODS ; i++) {
+                buf.append(methTemplate.replace("#N", String.valueOf(i)));
+                buf.append("\n");
+            }
+            source = classTemplate.replace("#M", buf.toString());
+        }
+
+        @Override
+        public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+            return source;
+        }
+    }
+
+    static class AnSource extends SimpleJavaFileObject {
+
+        String classTemplate = "abstract class A#N { }";
+
+        String source;
+
+        public AnSource(int n) {
+            super(URI.create("myfo:/Test.java"), JavaFileObject.Kind.SOURCE);
+            source = classTemplate.replace("#N", String.valueOf(n));
+        }
+
+        @Override
+        public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+            return source;
+        }
+    }
+
+    public static void main(String... args) throws Exception {
+        ArrayList<JavaFileObject> sources = new ArrayList<>();
+        for (int i = 0 ; i < N_METHODS ; i++) {
+            sources.add(new AnSource(i));
+        }
+        sources.add(new TestClass());
+        new T7142086().run(sources);
+    }
+
+    void run(List<JavaFileObject> sources) throws Exception {
+        DiagnosticChecker dc = new DiagnosticChecker();
+        JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
+        StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+        JavacTask ct = (JavacTask)comp.getTask(null, fm, dc,
+                null, null, sources);
+        ct.analyze();
+    }
+
+    static class DiagnosticChecker implements javax.tools.DiagnosticListener<JavaFileObject> {
+
+        boolean errorFound;
+
+        public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+            if (diagnostic.getKind() == Diagnostic.Kind.ERROR) {
+                throw new AssertionError("unexpected diagnostic: " + diagnostic.getMessage(Locale.getDefault()));
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/T7142672/AnnoProcessor.java	Wed Feb 22 16:52:50 2012 -0800
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.util.Set;
+import javax.annotation.processing.*;
+import javax.lang.model.SourceVersion;
+import javax.lang.model.element.TypeElement;
+
+@SupportedAnnotationTypes("Anno")
+public class AnnoProcessor extends AbstractProcessor {
+    @Override
+    public SourceVersion getSupportedSourceVersion() {
+        return SourceVersion.latest();
+    }
+
+    @Override
+    public boolean process(Set<? extends TypeElement> set, RoundEnvironment re) {
+        System.out.println("RUNNING...");
+        if(set.isEmpty()) {
+            return false;
+        }
+        return false;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/T7142672/Bug.java	Wed Feb 22 16:52:50 2012 -0800
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7142672
+ * @summary Problems with the value passed to the 'classes' param of JavaCompiler.CompilationTask.getTask(...)
+ * @author holmlund
+ * @compile AnnoProcessor.java Bug.java Test3.java
+ * @run main Bug Test2.java
+ * @run main Bug Test2.foo
+ * @run main Bug Test3.java
+ */
+import java.io.*;
+import java.util.*;
+import javax.tools.*;
+
+// Each run should output the 'could not find class file' message, and not throw an AssertError.
+public class Bug {
+    public static void main(String... arg) throws Throwable {
+        String name = arg[0];
+        final String expectedMsg = "error: Could not find class file for '" + name + "'.";
+        JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
+        JavaCompiler.CompilationTask task2;
+        StringWriter sw = new StringWriter();
+        final PrintWriter pw = new PrintWriter(sw);
+
+
+        DiagnosticListener<? super javax.tools.JavaFileObject> dl =
+            new DiagnosticListener<javax.tools.JavaFileObject>() {
+            public void report(Diagnostic message) {
+                pw.print("Diagnostic:\n"+ message.toString()+"\n");
+                if (!message.toString().equals(expectedMsg)){
+                    System.err.println("Diagnostic:\n"+ message.toString()+"\n");
+                    System.err.println("--Failed: Unexpected diagnostic");
+                    System.exit(1);
+                }
+            }
+        };
+
+        StandardJavaFileManager sjfm = javac.getStandardFileManager(dl,null,null);
+
+        List<String> opts = new ArrayList<String>();
+        opts.add("-proc:only");
+        opts.add("-processor");
+        opts.add("AnnoProcessor");
+
+        boolean xxx;
+
+        System.err.println("\n-- " + name);
+        task2 = javac.getTask(pw, sjfm, dl, opts, Arrays.asList(name), null);
+        xxx = task2.call();
+
+        String out = sw.toString();
+        System.err.println(out);
+        if (out.contains("Assert")) {
+            System.err.println("--Failed: Assertion failure");
+            System.exit(1);
+        }
+        if (!out.contains(expectedMsg)) {
+            System.err.println("--Failed: Expected diagnostic not found");
+            System.exit(1);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/T7142672/Test2.java	Wed Feb 22 16:52:50 2012 -0800
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+class Test2 {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/T7142672/Test3.java	Wed Feb 22 16:52:50 2012 -0800
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+class Test3 {
+}