[java-1.7.0-openjdk/f16] Initial check-in

Deepak Bhole dbhole at fedoraproject.org
Wed Aug 3 16:16:03 UTC 2011


commit cfa4727ad8588049f7e45db95d056da463ded3a4
Author: Deepak Bhole <dbhole at redhat.com>
Date:   Wed Aug 3 12:13:29 2011 -0400

    Initial check-in

 .gitignore                                         |   11 +
 README.src                                         |    2 +
 alt-jar.patch                                      |   15 +
 boot-jdk-source-diamond.patch                      |  334 ++
 bootstrap-ant-javac.patch                          |   26 +
 bootstrap-break-processbuilder-dependency.patch    |  136 +
 bootstrap-corba-defs.patch                         |   35 +
 bootstrap-corba-dependencies.patch                 |   39 +
 bootstrap-corba-idlj.patch                         |   98 +
 bootstrap-corba-no-gen.patch                       |   12 +
 bootstrap-corba-orb.patch                          |   42 +
 bootstrap-demos.patch                              |   32 +
 bootstrap-ecj-autoboxing.patch                     |  287 +
 bootstrap-ecj-diamond.patch                        | 5809 ++++++++++++++++++++
 bootstrap-ecj-fphexconstants.patch                 |   60 +
 bootstrap-ecj-multicatch.patch                     |  115 +
 bootstrap-ecj-opts.patch                           |   12 +
 bootstrap-ecj-stringswitch.patch                   |  303 +
 bootstrap-ecj-trywithresources.patch               |  928 ++++
 bootstrap-fontconfig.patch                         |   16 +
 bootstrap-generated-comments.patch                 |   21 +
 bootstrap-genstubs-nofork.patch                    |   12 +
 bootstrap-hotspot-jdk-dependency.patch             |   25 +
 bootstrap-icedteart.patch                          |   41 +
 bootstrap-jar.patch                                |   43 +
 bootstrap-javah-xbootclasspath.patch               |   12 +
 bootstrap-javah.patch                              |   92 +
 bootstrap-jaxp-dependency.patch                    |   25 +
 bootstrap-jaxws-jdk-dependency.patch               |   43 +
 bootstrap-jaxws-langtools-dependency.patch         |   48 +
 bootstrap-jopt.patch                               |   26 +
 bootstrap-langtools-force-old-jdk.patch            |   16 +
 bootstrap-pr40188.patch                            |   15 +
 bootstrap-revert-6941137.patch                     |   12 +
 bootstrap-revert-6973616.patch                     |   12 +
 bootstrap-symbols.patch                            |   23 +
 bootstrap-test_gamma.patch                         |   46 +
 bootstrap-tobin.patch                              |   39 +
 bootstrap-tools.jar.patch                          |   14 +
 bootstrap-xbootclasspath.patch                     |  120 +
 bootstrap-xsltproc.patch                           |   54 +
 clean-crypto.patch                                 | 1078 ++++
 hotspot-gcc-pr36917.patch                          |    9 +
 java-1.7.0-openjdk-accessible-toolkit.patch        |   16 +
 java-1.7.0-openjdk-debugdocs.patch                 |   12 +
 java-1.7.0-openjdk-debuginfo.patch                 |   20 +
 java-1.7.0-openjdk-java-access-bridge-idlj.patch   |   71 +
 ...1.7.0-openjdk-java-access-bridge-security.patch |   11 +
 java-1.7.0-openjdk-java-access-bridge-tck.patch    |   25 +
 java-1.7.0-openjdk.spec                            | 1389 +++++
 javac-wrapper                                      |   61 +
 javafiles.patch                                    |  164 +
 jpegclasses.patch                                  |  647 +++
 jvmtiEnv.patch                                     |   12 +
 libraries.patch                                    | 1277 +++++
 make-warnings-nonfatal.patch                       |   24 +
 mauve_tests                                        | 2571 +++++++++
 nss.cfg                                            |    4 +
 override-redirect-metacity.patch                   |   11 +
 pulse-soundproperties.patch                        |   16 +
 rhino.patch                                        |  148 +
 sources                                            |   11 +
 systemtap-alloc-size-workaround.patch              |   12 +
 systemtap-gcc-4.5.patch                            |   11 +
 systemtap.patch                                    |  162 +
 text-relocations.patch                             |   63 +
 update-bootclasspath.patch                         |   13 +
 use-idx_t.patch                                    |   45 +
 68 files changed, 16934 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..a76a345 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,11 @@
+/class-rewriter.tar.gz
+/desktop-files.tar.gz
+/generated-files.tar.gz
+/icedtea-jdk7.tar.gz
+/java-access-bridge-1.23.0.tar.bz2
+/jaxp145_01.zip
+/jdk7-jaf-2010_08_19.zip
+/jdk7-jaxws2_2_4-b03-2011_05_27.zip
+/mauve-2008-10-22.tar.gz
+/pulseaudio.tar.gz
+/systemtap-tapset.tar.gz
diff --git a/README.src b/README.src
new file mode 100644
index 0000000..eef0423
--- /dev/null
+++ b/README.src
@@ -0,0 +1,2 @@
+The java-1.6.0-openjdk-src subpackage contains the complete IcedTea
+class library source code for use by IDE indexers and debuggers.
diff --git a/alt-jar.patch b/alt-jar.patch
new file mode 100644
index 0000000..a82786f
--- /dev/null
+++ b/alt-jar.patch
@@ -0,0 +1,15 @@
+--- openjdk.orig/jdk/make/common/shared/Defs-java.gmk	2008-05-30 03:50:36.000000000 -0400
++++ openjdk/jdk/make/common/shared/Defs-java.gmk	2008-08-06 11:18:26.000000000 -0400
+@@ -187,7 +181,11 @@
+ 
+ BOOT_JAVA_CMD      = $(BOOTDIR)/bin/java $(JAVA_TOOLS_FLAGS)
+ BOOT_JAVAC_CMD     = $(BOOTDIR)/bin/javac $(JAVAC_JVM_FLAGS) $(BOOT_JAVACFLAGS)
+-BOOT_JAR_CMD       = $(BOOTDIR)/bin/jar
++ifdef ALT_JAR_CMD
++  BOOT_JAR_CMD       = $(ALT_JAR_CMD)
++else
++  BOOT_JAR_CMD       = $(BOOTDIR)/bin/jar
++endif
+ BOOT_JARSIGNER_CMD = $(BOOTDIR)/bin/jarsigner
+ 
+ # Various tools we need to run (FIXUP: Are these the right ones?)
diff --git a/boot-jdk-source-diamond.patch b/boot-jdk-source-diamond.patch
new file mode 100644
index 0000000..7de09d4
--- /dev/null
+++ b/boot-jdk-source-diamond.patch
@@ -0,0 +1,334 @@
+diff -up openjdk/jdk/make/tools/src/build/tools/buildmetaindex/BuildMetaIndex.java.sav openjdk/jdk/make/tools/src/build/tools/buildmetaindex/BuildMetaIndex.java
+--- openjdk/jdk/make/tools/src/build/tools/buildmetaindex/BuildMetaIndex.java.sav	2011-07-29 12:20:59.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/buildmetaindex/BuildMetaIndex.java	2011-07-29 14:27:07.760531646 -0400
+@@ -171,7 +171,7 @@ class JarMetaIndex {
+      * A hashmap contains a mapping from the prefix string to
+      * a hashset which contains a set of the second level of prefix string.
+      */
+-    private HashMap<String, HashSet<String>> knownPrefixMap = new HashMap<>();
++    private HashMap<String, HashSet<String>> knownPrefixMap = new HashMap<String, HashSet<String>>();
+ 
+     /*
+      * We add maximum 5 second level entries to "sun", "java" and
+@@ -194,7 +194,7 @@ class JarMetaIndex {
+         if (indexSet == null) {
+             synchronized(this) {
+                 if (indexSet == null) {
+-                    indexSet = new HashSet<>();
++                    indexSet = new HashSet<String>();
+                     Enumeration<JarEntry> entries = jar.entries();
+                     boolean containsOnlyClass = true;
+                     boolean containsOnlyResource = true;
+diff -up openjdk/jdk/make/tools/src/build/tools/compileproperties/CompileProperties.java.sav openjdk/jdk/make/tools/src/build/tools/compileproperties/CompileProperties.java
+--- openjdk/jdk/make/tools/src/build/tools/compileproperties/CompileProperties.java.sav	2011-07-29 12:20:59.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/compileproperties/CompileProperties.java	2011-07-29 14:27:07.760531646 -0400
+@@ -222,7 +222,7 @@ public class CompileProperties {
+         if ( ok ) {
+             String packageName = inferPackageName(propertiesPath, outputPath);
+             System.out.println("inferred package name: " + packageName);
+-            List<String> sortedKeys = new ArrayList<>();
++            List<String> sortedKeys = new ArrayList<String>();
+             for ( Object key : p.keySet() ) {
+                 sortedKeys.add((String)key);
+             }
+diff -up openjdk/jdk/make/tools/src/build/tools/dirdiff/DirDiff.java.sav openjdk/jdk/make/tools/src/build/tools/dirdiff/DirDiff.java
+--- openjdk/jdk/make/tools/src/build/tools/dirdiff/DirDiff.java.sav	2011-07-29 12:20:59.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/dirdiff/DirDiff.java	2011-07-29 14:27:07.760531646 -0400
+@@ -164,7 +164,7 @@ public class DirDiff implements Runnable
+       }
+ 
+       File[] currentGoldenDirs = null;
+-      TreeSet<String> goldDirSet = new TreeSet<>();
++      TreeSet<String> goldDirSet = new TreeSet<String>();
+       if (goldenDir != null) {
+           currentGoldenDirs = goldenDir.listFiles();
+           for (int i=0; i<currentGoldenDirs.length; i++) {
+diff -up openjdk/jdk/make/tools/src/build/tools/dtdbuilder/DTDBuilder.java.sav openjdk/jdk/make/tools/src/build/tools/dtdbuilder/DTDBuilder.java
+--- openjdk/jdk/make/tools/src/build/tools/dtdbuilder/DTDBuilder.java.sav	2011-07-29 12:20:59.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/dtdbuilder/DTDBuilder.java	2011-07-29 14:27:07.761531631 -0400
+@@ -63,9 +63,9 @@ class DTDBuilder extends DTD {
+     static PublicMapping mapping = null;
+ 
+     // Hash from name to Integer
+-    private Hashtable<String, Integer> namesHash = new Hashtable<>();
++    private Hashtable<String, Integer> namesHash = new Hashtable<String, Integer>();
+     // Vector of all names
+-    private Vector<String> namesVector = new Vector<>();
++    private Vector<String> namesVector = new Vector<String>();
+ 
+     /**
+      * Create a new DTD.
+diff -up openjdk/jdk/make/tools/src/build/tools/dtdbuilder/DTDInputStream.java.sav openjdk/jdk/make/tools/src/build/tools/dtdbuilder/DTDInputStream.java
+--- openjdk/jdk/make/tools/src/build/tools/dtdbuilder/DTDInputStream.java.sav	2011-07-29 12:20:59.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/dtdbuilder/DTDInputStream.java	2011-07-29 14:27:07.761531631 -0400
+@@ -48,7 +48,7 @@ import java.net.URL;
+ public final
+ class DTDInputStream extends FilterReader implements DTDConstants {
+     public DTD dtd;
+-    public Stack<Object> stack = new Stack<>();
++    public Stack<Object> stack = new Stack<Object>();
+     public char str[] = new char[64];
+     public int replace = 0;
+     public int ln = 1;
+diff -up openjdk/jdk/make/tools/src/build/tools/dtdbuilder/DTDParser.java.sav openjdk/jdk/make/tools/src/build/tools/dtdbuilder/DTDParser.java
+--- openjdk/jdk/make/tools/src/build/tools/dtdbuilder/DTDParser.java.sav	2011-07-29 12:20:59.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/dtdbuilder/DTDParser.java	2011-07-29 14:27:07.761531631 -0400
+@@ -276,7 +276,7 @@ class DTDParser implements DTDConstants 
+      * Parse a list of identifiers.
+      */
+     Vector<String> parseIdentifierList(boolean lower) throws IOException {
+-        Vector<String> elems = new Vector<>();
++        Vector<String> elems = new Vector<String>();
+         skipSpace();
+         switch (ch) {
+           case '(':
+diff -up openjdk/jdk/make/tools/src/build/tools/dtdbuilder/PublicMapping.java.sav openjdk/jdk/make/tools/src/build/tools/dtdbuilder/PublicMapping.java
+--- openjdk/jdk/make/tools/src/build/tools/dtdbuilder/PublicMapping.java.sav	2011-07-29 12:20:59.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/dtdbuilder/PublicMapping.java	2011-07-29 14:27:07.761531631 -0400
+@@ -44,7 +44,7 @@ import java.util.Hashtable;
+ final class PublicMapping {
+ 
+     String baseStr;
+-    Hashtable<String, String> tab = new Hashtable<>();
++    Hashtable<String, String> tab = new Hashtable<String, String>();
+ 
+     /**
+      * Create a mapping.
+diff -up openjdk/jdk/make/tools/src/build/tools/generatebreakiteratordata/CharSet.java.sav openjdk/jdk/make/tools/src/build/tools/generatebreakiteratordata/CharSet.java
+--- openjdk/jdk/make/tools/src/build/tools/generatebreakiteratordata/CharSet.java.sav	2011-07-29 12:20:59.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/generatebreakiteratordata/CharSet.java	2011-07-29 14:27:07.761531631 -0400
+@@ -87,7 +87,7 @@ class CharSet {
+         if (result == null) {
+             result = doParseString(s);
+             if (expressionCache == null) {
+-                expressionCache = new Hashtable<>();
++                expressionCache = new Hashtable<String, CharSet>();
+             }
+             expressionCache.put(s, result);
+         }
+diff -up openjdk/jdk/make/tools/src/build/tools/generatebreakiteratordata/RuleBasedBreakIteratorBuilder.java.sav openjdk/jdk/make/tools/src/build/tools/generatebreakiteratordata/RuleBasedBreakIteratorBuilder.java
+--- openjdk/jdk/make/tools/src/build/tools/generatebreakiteratordata/RuleBasedBreakIteratorBuilder.java.sav	2011-07-29 12:20:59.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/generatebreakiteratordata/RuleBasedBreakIteratorBuilder.java	2011-07-29 14:27:07.762531617 -0400
+@@ -240,8 +240,8 @@ class RuleBasedBreakIteratorBuilder {
+         // set up a vector to contain the broken-up description (each entry in the
+         // vector is a separate rule) and a stack for keeping track of opening
+         // punctuation
+-        Vector<String> tempRuleList = new Vector<>();
+-        Stack<Character> parenStack = new Stack<>();
++        Vector<String> tempRuleList = new Vector<String>();
++        Stack<Character> parenStack = new Stack<Character>();
+ 
+         int p = 0;
+         int ruleStart = 0;
+@@ -561,7 +561,7 @@ class RuleBasedBreakIteratorBuilder {
+         // build hash table of every literal character or [] expression in the rule list
+         // and use CharSet.parseString() to derive a CharSet object representing the
+         // characters each refers to
+-        expressions = new Hashtable<>();
++        expressions = new Hashtable<String, Object>();
+         while (lineNum < tempRuleList.size()) {
+             String line = tempRuleList.elementAt(lineNum);
+             p = 0;
+@@ -619,7 +619,7 @@ class RuleBasedBreakIteratorBuilder {
+         CharSet.releaseExpressionCache();
+ 
+         // create the temporary category table (which is a vector of CharSet objects)
+-        categories = new Vector<>();
++        categories = new Vector<CharSet>();
+         if (ignoreChars != null) {
+             categories.addElement(ignoreChars);
+         }
+@@ -797,7 +797,7 @@ class RuleBasedBreakIteratorBuilder {
+         // state 0 is a dummy state that allows state 1 to be the starting state
+         // and 0 to represent "stop".  State 1 is added here to seed things
+         // before we start parsing
+-        tempStateTable = new Vector<>();
++        tempStateTable = new Vector<short[]>();
+         tempStateTable.addElement(new short[numCategories + 1]);
+         tempStateTable.addElement(new short[numCategories + 1]);
+ 
+@@ -891,10 +891,10 @@ class RuleBasedBreakIteratorBuilder {
+         int lastState = currentState;
+         String pendingChars = "";
+ 
+-        decisionPointStack = new Stack<>();
+-        decisionPointList = new Vector<>();
+-        loopingStates = new Vector<>();
+-        statesToBackfill = new Vector<>();
++        decisionPointStack = new Stack<Vector<Integer>>();
++        decisionPointList = new Vector<Integer>();
++        loopingStates = new Vector<Integer>();
++        statesToBackfill = new Vector<Integer>();
+ 
+         short[] state;
+         boolean sawEarlyBreak = false;
+@@ -1057,7 +1057,7 @@ class RuleBasedBreakIteratorBuilder {
+                 // on the character categories that caused us to enter this state
+                 if (c == '*') {
+                     for (int i = lastState + 1; i < tempStateTable.size(); i++) {
+-                        Vector<Integer> temp = new Vector<>();
++                        Vector<Integer> temp = new Vector<Integer>();
+                         temp.addElement(new Integer(i));
+                         updateStateTable(temp, pendingChars, (short)(lastState + 1));
+                     }
+@@ -1385,7 +1385,7 @@ class RuleBasedBreakIteratorBuilder {
+                     // add this pair of row numbers to the merge list (create it first
+                     // if we haven't created the merge list yet)
+                     if (mergeList == null) {
+-                        mergeList = new Vector<>();
++                        mergeList = new Vector<int[]>();
+                     }
+                     mergeList.addElement(new int[] { oldRowNum, newRowNum, combinedRowNum });
+ 
+@@ -1607,7 +1607,7 @@ class RuleBasedBreakIteratorBuilder {
+         backfillLoopingStates();
+ 
+         int[] rowNumMap = new int[tempStateTable.size()];
+-        Stack<Integer> rowsToFollow = new Stack<>();
++        Stack<Integer> rowsToFollow = new Stack<Integer>();
+         rowsToFollow.push(new Integer(1));
+         rowNumMap[1] = 1;
+ 
+@@ -1787,7 +1787,7 @@ class RuleBasedBreakIteratorBuilder {
+         // create the temporary state table and seed it with two rows (row 0
+         // isn't used for anything, and we have to create row 1 (the initial
+         // state) before we can do anything else
+-        tempStateTable = new Vector<>();
++        tempStateTable = new Vector<short[]>();
+         tempStateTable.addElement(new short[numCategories + 1]);
+         tempStateTable.addElement(new short[numCategories + 1]);
+ 
+diff -up openjdk/jdk/make/tools/src/build/tools/generatecharacter/SpecialCaseMap.java.sav openjdk/jdk/make/tools/src/build/tools/generatecharacter/SpecialCaseMap.java
+--- openjdk/jdk/make/tools/src/build/tools/generatecharacter/SpecialCaseMap.java.sav	2011-07-29 12:20:59.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/generatecharacter/SpecialCaseMap.java	2011-07-29 14:27:07.762531617 -0400
+@@ -55,7 +55,7 @@ public class SpecialCaseMap implements C
+      */
+ 
+     public static SpecialCaseMap[] readSpecFile(File file, int plane) throws FileNotFoundException {
+-        ArrayList<SpecialCaseMap> caseMaps = new ArrayList<>(150);
++        ArrayList<SpecialCaseMap> caseMaps = new ArrayList<SpecialCaseMap>(150);
+         int count = 0;
+         BufferedReader f = new BufferedReader(new FileReader(file));
+                 String line = null;
+diff -up openjdk/jdk/make/tools/src/build/tools/generatecharacter/UnicodeSpec.java.sav openjdk/jdk/make/tools/src/build/tools/generatecharacter/UnicodeSpec.java
+--- openjdk/jdk/make/tools/src/build/tools/generatecharacter/UnicodeSpec.java.sav	2011-07-29 12:20:59.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/generatecharacter/UnicodeSpec.java	2011-07-29 14:27:07.763531603 -0400
+@@ -391,7 +391,7 @@ public class UnicodeSpec {
+     */
+ 
+     public static UnicodeSpec[] readSpecFile(File file, int plane) throws FileNotFoundException {
+-        ArrayList<UnicodeSpec> list = new ArrayList<>(3000);
++        ArrayList<UnicodeSpec> list = new ArrayList<UnicodeSpec>(3000);
+         UnicodeSpec[] result = null;
+         int count = 0;
+         BufferedReader f = new BufferedReader(new FileReader(file));
+diff -up openjdk/jdk/make/tools/src/build/tools/generatecurrencydata/GenerateCurrencyData.java.sav openjdk/jdk/make/tools/src/build/tools/generatecurrencydata/GenerateCurrencyData.java
+--- openjdk/jdk/make/tools/src/build/tools/generatecurrencydata/GenerateCurrencyData.java.sav	2011-07-29 12:20:59.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/generatecurrencydata/GenerateCurrencyData.java	2011-07-29 14:27:07.763531603 -0400
+@@ -250,7 +250,7 @@ public class GenerateCurrencyData {
+         return Integer.parseInt(numericCode);
+     }
+ 
+-    static HashMap<String, Integer> specialCaseMap = new HashMap<>();
++    static HashMap<String, Integer> specialCaseMap = new HashMap<String, Integer>();
+ 
+     private static int makeSpecialCaseEntry(String currencyInfo) throws Exception {
+         Integer oldEntry = specialCaseMap.get(currencyInfo);
+diff -up openjdk/jdk/make/tools/src/build/tools/hasher/Hasher.java.sav openjdk/jdk/make/tools/src/build/tools/hasher/Hasher.java
+--- openjdk/jdk/make/tools/src/build/tools/hasher/Hasher.java.sav	2011-07-29 12:20:59.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/hasher/Hasher.java	2011-07-29 14:27:07.763531603 -0400
+@@ -51,8 +51,8 @@ public class Hasher {
+ 
+     boolean verbose = false;
+ 
+-    List<String> keys = new ArrayList<>();      // Key strings
+-    List<String> values = new ArrayList<>();    // Value expressions
++    List<String> keys = new ArrayList<String>();      // Key strings
++    List<String> values = new ArrayList<String>();    // Value expressions
+     String pkg = null;                          // Package prefix for generated class
+     String cln = null;                          // Name of generated class
+     String vtype = "String";                    // Value type
+diff -up openjdk/jdk/make/tools/src/build/tools/javazic/Simple.java.sav openjdk/jdk/make/tools/src/build/tools/javazic/Simple.java
+--- openjdk/jdk/make/tools/src/build/tools/javazic/Simple.java.sav	2011-07-29 12:20:59.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/javazic/Simple.java	2011-07-29 14:27:07.763531603 -0400
+@@ -48,19 +48,19 @@ class Simple extends BackEnd {
+     /**
+      * Zone records which are applied for given year.
+      */
+-    private static Map<String,ZoneRec> lastZoneRecs = new HashMap<>();
++    private static Map<String,ZoneRec> lastZoneRecs = new HashMap<String,ZoneRec>();
+ 
+     /**
+      * Rule records which are applied for given year.
+      */
+-    private static Map<String,List<RuleRec>> lastRules = new TreeMap<>();
++    private static Map<String,List<RuleRec>> lastRules = new TreeMap<String,List<RuleRec>>();
+ 
+     /**
+      * zone IDs sorted by their GMT offsets. If zone's GMT
+      * offset will change in the future, its last known offset is
+      * used.
+      */
+-    private SortedMap<Integer, Set<String>> zonesByOffset = new TreeMap<>();
++    private SortedMap<Integer, Set<String>> zonesByOffset = new TreeMap<Integer, Set<String>>();
+ 
+     /**
+      * Sets last Rule records and Zone records for given timezone to
+@@ -80,7 +80,7 @@ class Simple extends BackEnd {
+         int lastKnownOffset = tz.getRawOffset();
+         Set<String> set = zonesByOffset.get(lastKnownOffset);
+         if (set == null) {
+-            set = new TreeSet<>();
++            set = new TreeSet<String>();
+             zonesByOffset.put(lastKnownOffset, set);
+         }
+         set.add(zonename);
+diff -up openjdk/jdk/make/tools/src/build/tools/jdwpgen/ConstantSetNode.java.sav openjdk/jdk/make/tools/src/build/tools/jdwpgen/ConstantSetNode.java
+--- openjdk/jdk/make/tools/src/build/tools/jdwpgen/ConstantSetNode.java.sav	2011-07-29 12:21:00.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/jdwpgen/ConstantSetNode.java	2011-07-29 14:27:07.763531603 -0400
+@@ -33,10 +33,10 @@ class ConstantSetNode extends AbstractNa
+     /**
+      * The mapping between a constant and its value.
+      */
+-    protected static final Map<String, String> constantMap = new HashMap<>();
++    protected static final Map<String, String> constantMap = new HashMap<String, String>();
+ 
+     void prune() {
+-        List<Node> addons = new ArrayList<>();
++        List<Node> addons = new ArrayList<Node>();
+ 
+         if (!addons.isEmpty()) {
+             components.addAll(addons);
+diff -up openjdk/jdk/make/tools/src/build/tools/jdwpgen/Node.java.sav openjdk/jdk/make/tools/src/build/tools/jdwpgen/Node.java
+--- openjdk/jdk/make/tools/src/build/tools/jdwpgen/Node.java.sav	2011-07-29 12:21:00.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/jdwpgen/Node.java	2011-07-29 14:27:07.764531588 -0400
+@@ -34,7 +34,7 @@ abstract class Node {
+     String kind;
+     List<Node> components;
+     int lineno;
+-    List<String> commentList = new ArrayList<>();
++    List<String> commentList = new ArrayList<String>();
+     Node parent = null;
+     Context context = null;
+ 
+diff -up openjdk/jdk/make/tools/src/build/tools/makeclasslist/MakeClasslist.java.sav openjdk/jdk/make/tools/src/build/tools/makeclasslist/MakeClasslist.java
+--- openjdk/jdk/make/tools/src/build/tools/makeclasslist/MakeClasslist.java.sav	2011-07-29 12:21:00.000000000 -0400
++++ openjdk/jdk/make/tools/src/build/tools/makeclasslist/MakeClasslist.java	2011-07-29 14:27:07.764531588 -0400
+@@ -38,7 +38,7 @@ import java.util.jar.*;
+ 
+ public class MakeClasslist {
+   public static void main(String[] args) throws IOException {
+-    List<String> classes = new ArrayList<>();
++    List<String> classes = new ArrayList<String>();
+     String origJavaHome = System.getProperty("java.home");
+     String javaHome     = origJavaHome.toLowerCase();
+     if (javaHome.endsWith("jre")) {
+@@ -84,7 +84,7 @@ public class MakeClasslist {
+       }
+     }
+ 
+-    Set<String> seenClasses = new HashSet<>();
++    Set<String> seenClasses = new HashSet<String>();
+ 
+     for (String str : seenClasses) {
+       if (seenClasses.add(str)) {
diff --git a/bootstrap-ant-javac.patch b/bootstrap-ant-javac.patch
new file mode 100644
index 0000000..0c808b2
--- /dev/null
+++ b/bootstrap-ant-javac.patch
@@ -0,0 +1,26 @@
+diff -Nru openjdk-boot.orig/jaxp/build.xml openjdk-boot/jaxp/build.xml
+--- openjdk-boot.orig/jaxp/build.xml	2009-12-04 15:29:13.000000000 +0000
++++ openjdk-boot/jaxp/build.xml	2009-12-14 22:57:23.000000000 +0000
+@@ -122,7 +122,8 @@
+              memoryMaximumSize="${javac.memoryMaximumSize}"
+              source="${javac.source}"
+ 	     debug="${javac.debug}"
+-             target="${javac.target}">
++             target="${javac.target}"
++	     executable="${jdk.home}/bin/javac">
+             <compilerarg value="-J-Xbootclasspath/p:${javac.jar}"/>
+             <compilerarg line="${javac.version.opt} ${javac.lint.opts} ${javac.no.jdk.warnings}"/>
+             <src refid="src.dir.id"/>
+diff -Nru openjdk-boot.orig/jaxws/build.xml openjdk-boot/jaxws/build.xml
+--- openjdk-boot.orig/jaxws/build.xml	2009-12-04 15:35:01.000000000 +0000
++++ openjdk-boot/jaxws/build.xml	2009-12-14 22:57:41.000000000 +0000
+@@ -122,7 +122,8 @@
+              memoryMaximumSize="${javac.memoryMaximumSize}"
+              source="${javac.source}"
+ 	     debug="${javac.debug}"
+-             target="${javac.target}">
++             target="${javac.target}"
++             executable="${jdk.home}/bin/javac">
+             <compilerarg value="-J-Xbootclasspath/p:${javac.jar}"/>
+             <compilerarg line="${javac.version.opt} ${javac.lint.opts} ${javac.no.jdk.warnings}"/>
+             <src refid="src.dir.id"/>
diff --git a/bootstrap-break-processbuilder-dependency.patch b/bootstrap-break-processbuilder-dependency.patch
new file mode 100644
index 0000000..ce30f88
--- /dev/null
+++ b/bootstrap-break-processbuilder-dependency.patch
@@ -0,0 +1,136 @@
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux
+--- openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux	2010-09-01 22:21:08.815402468 +0100
++++ openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux	2010-09-01 22:23:19.572081778 +0100
+@@ -62,6 +62,32 @@
+     private /* final */ InputStream  stdout;
+     private /* final */ InputStream  stderr;
+ 
++    /**
++     * Required package-private classes taken from
++     * Oracle's java.lang.ProcessBuilder for bootstrapping.
++     */
++
++    /**
++     * Implements a <a href="#redirect-output">null input stream</a>.
++     */
++    static class NullInputStream extends InputStream {
++        static final NullInputStream INSTANCE = new NullInputStream();
++        private NullInputStream() {}
++        public int read()      { return -1; }
++        public int available() { return 0; }
++    }
++
++    /**
++     * Implements a <a href="#redirect-input">null output stream</a>.
++     */
++    static class NullOutputStream extends OutputStream {
++        static final NullOutputStream INSTANCE = new NullOutputStream();
++        private NullOutputStream() {}
++        public void write(int b) throws IOException {
++            throw new IOException("Stream closed");
++        }
++    }
++
+     /* this is for the reaping thread */
+     private native int waitForProcessExit(int pid);
+ 
+@@ -155,15 +181,15 @@
+ 
+     void initStreams(int[] fds) throws IOException {
+         stdin = (fds[0] == -1) ?
+-            ProcessBuilder.NullOutputStream.INSTANCE :
++            NullOutputStream.INSTANCE :
+             new ProcessPipeOutputStream(fds[0]);
+ 
+         stdout = (fds[1] == -1) ?
+-            ProcessBuilder.NullInputStream.INSTANCE :
++            NullInputStream.INSTANCE :
+             new ProcessPipeInputStream(fds[1]);
+ 
+         stderr = (fds[2] == -1) ?
+-            ProcessBuilder.NullInputStream.INSTANCE :
++            NullInputStream.INSTANCE :
+             new ProcessPipeInputStream(fds[2]);
+ 
+         processReaperExecutor.execute(new Runnable() {
+@@ -275,7 +301,7 @@
+                     byte[] stragglers = drainInputStream(in);
+                     in.close();
+                     this.in = (stragglers == null) ?
+-                        ProcessBuilder.NullInputStream.INSTANCE :
++                        NullInputStream.INSTANCE :
+                         new ByteArrayInputStream(stragglers);
+                     if (buf == null) // asynchronous close()?
+                         this.in = null;
+@@ -306,7 +332,7 @@
+                     // We know of no reason to get an IOException, but if
+                     // we do, there's nothing else to do but carry on.
+                 }
+-                this.out = ProcessBuilder.NullOutputStream.INSTANCE;
++                this.out = NullOutputStream.INSTANCE;
+             }
+         }
+     }
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris
+--- openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris	2010-09-01 22:21:08.815402468 +0100
++++ openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris	2010-09-01 22:22:33.204096111 +0100
+@@ -45,6 +45,32 @@
+     private DeferredCloseInputStream stdout_inner_stream;
+     private InputStream stderr_stream;
+ 
++    /**
++     * Required package-private classes taken from
++     * Oracle's java.lang.ProcessBuilder for bootstrapping.
++     */
++
++    /**
++     * Implements a <a href="#redirect-output">null input stream</a>.
++     */
++    static class NullInputStream extends InputStream {
++        static final NullInputStream INSTANCE = new NullInputStream();
++        private NullInputStream() {}
++        public int read()      { return -1; }
++        public int available() { return 0; }
++    }
++
++    /**
++     * Implements a <a href="#redirect-input">null output stream</a>.
++     */
++    static class NullOutputStream extends OutputStream {
++        static final NullOutputStream INSTANCE = new NullOutputStream();
++        private NullOutputStream() {}
++        public void write(int b) throws IOException {
++            throw new IOException("Stream closed");
++        }
++    }
++
+     /* this is for the reaping thread */
+     private native int waitForProcessExit(int pid);
+ 
+@@ -86,7 +112,7 @@
+         java.security.AccessController.doPrivileged(
+         new java.security.PrivilegedAction<Void>() { public Void run() {
+             if (std_fds[0] == -1)
+-                stdin_stream = ProcessBuilder.NullOutputStream.INSTANCE;
++                stdin_stream = NullOutputStream.INSTANCE;
+             else {
+                 FileDescriptor stdin_fd = new FileDescriptor();
+                 fdAccess.set(stdin_fd, std_fds[0]);
+@@ -95,7 +121,7 @@
+             }
+ 
+             if (std_fds[1] == -1)
+-                stdout_stream = ProcessBuilder.NullInputStream.INSTANCE;
++                stdout_stream = NullInputStream.INSTANCE;
+             else {
+                 FileDescriptor stdout_fd = new FileDescriptor();
+                 fdAccess.set(stdout_fd, std_fds[1]);
+@@ -104,7 +130,7 @@
+             }
+ 
+             if (std_fds[2] == -1)
+-                stderr_stream = ProcessBuilder.NullInputStream.INSTANCE;
++                stderr_stream = NullInputStream.INSTANCE;
+             else {
+                 FileDescriptor stderr_fd = new FileDescriptor();
+                 fdAccess.set(stderr_fd, std_fds[2]);
diff --git a/bootstrap-corba-defs.patch b/bootstrap-corba-defs.patch
new file mode 100644
index 0000000..fba3ebe
--- /dev/null
+++ b/bootstrap-corba-defs.patch
@@ -0,0 +1,35 @@
+diff -Nru openjdk.orig/corba/make/common/Defs.gmk openjdk/corba/make/common/Defs.gmk
+--- openjdk-boot.orig/corba/make/common/Defs.gmk	2010-11-12 01:18:17.000000000 +0000
++++ openjdk-boot/corba/make/common/Defs.gmk	2010-11-19 22:40:28.154937216 +0000
+@@ -53,6 +53,13 @@
+ 
+ _OUTPUTDIR=$(TOPDIR)/build/$(PLATFORM)-$(ARCH)
+ 
++
++ifdef ALT_LANGTOOLS_DIST
++  LANGTOOLS_DIST :=$(call FullPath,$(ALT_LANGTOOLS_DIST))
++else
++  LANGTOOLS_DIST =
++endif 
++
+ #
+ # Get platform definitions
+ #
+@@ -85,8 +92,6 @@
+ # for build tool jar files
+ BUILDTOOLJARDIR     = $(OUTPUTDIR)/btjars
+ ABS_BUILDTOOLJARDIR = $(ABS_OUTPUTDIR)/btjars
+-# for generated java source files
+-GENSRCDIR           = $(OUTPUTDIR)/gensrc
+ # for imported source files
+ IMPORTSRCDIR        = $(OUTPUTDIR)/impsrc
+ # for imported documents
+@@ -167,7 +172,7 @@
+ # We define an intermediate variable for Java files because
+ # we use its value later to help define $SOURCEPATH
+ 
+-VPATH0.java = $(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/classes
++VPATH0.java = $(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/classes
+ VPATH.java = $(VPATH0.java)
+ vpath %.java $(VPATH.java)
+ vpath %.class $(CLASSBINDIR)
diff --git a/bootstrap-corba-dependencies.patch b/bootstrap-corba-dependencies.patch
new file mode 100644
index 0000000..4212da9
--- /dev/null
+++ b/bootstrap-corba-dependencies.patch
@@ -0,0 +1,39 @@
+diff -Nru openjdk-boot.orig/corba/make/common/Defs.gmk openjdk-boot/corba/make/common/Defs.gmk
+--- openjdk-boot.orig/corba/make/common/Defs.gmk	2011-03-08 18:49:48.566665532 +0000
++++ openjdk-boot/corba/make/common/Defs.gmk	2011-03-08 18:47:51.734115218 +0000
+@@ -50,6 +50,9 @@
+ ifndef SHARE_SRC
+   SHARE_SRC    = $(TOPDIR)/src/share
+ endif
++ifndef JDK_SRC
++  JDK_SRC = $(JDK_TOPDIR)/src/share
++endif
+ 
+ _OUTPUTDIR=$(TOPDIR)/build/$(PLATFORM)-$(ARCH)
+ 
+@@ -172,7 +175,7 @@
+ # We define an intermediate variable for Java files because
+ # we use its value later to help define $SOURCEPATH
+ 
+-VPATH0.java = $(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/classes
++VPATH0.java = $(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/classes$(CLASSPATH_SEPARATOR)$(JDK_SRC)/classes
+ VPATH.java = $(VPATH0.java)
+ vpath %.java $(VPATH.java)
+ vpath %.class $(CLASSBINDIR)
+diff -Nru openjdk-boot.orig/corba/make/common/Rules.gmk openjdk-boot/corba/make/common/Rules.gmk
+--- openjdk-boot.orig/corba/make/common/Rules.gmk	2011-03-08 18:48:19.953282134 +0000
++++ openjdk-boot/corba/make/common/Rules.gmk	2011-03-08 18:48:05.453710200 +0000
+@@ -184,7 +184,12 @@
+ 	@$(MKDIR) -p $(CLASSDESTDIR)
+ 	if [ -s $(JAVA_SOURCE_LIST) ] ; then \
+ 	  $(CAT) $(JAVA_SOURCE_LIST); \
+-	  $(JAVAC_CMD) $(JAVAC_PREFER_SOURCE) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
++ 	  $(ECHO) $(JAVAC_CMD) -classpath $(ABS_OUTPUTDIR)/corba/classes \
++	  	 -classpath $(LANGTOOLS_DIST)/lib/classes.jar \
++ 		 -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
++ 	  $(JAVAC_CMD) -classpath $(ABS_OUTPUTDIR)/corba/classes \
++	  	 -classpath $(LANGTOOLS_DIST)/lib/classes.jar \
++ 		 -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
+ 	fi
+ 	@$(java-vm-cleanup)
+ 
diff --git a/bootstrap-corba-idlj.patch b/bootstrap-corba-idlj.patch
new file mode 100644
index 0000000..5cbe867
--- /dev/null
+++ b/bootstrap-corba-idlj.patch
@@ -0,0 +1,98 @@
+diff -Nru ../openjdk.orig/openjdk-boot/corba/make/org/omg/sources/Makefile openjdk-boot/corba/make/org/omg/sources/Makefile
+--- ../openjdk.orig/openjdk-boot/corba/make/org/omg/sources/Makefile	2009-03-30 17:13:01.000000000 +0100
++++ openjdk-boot/corba/make/org/omg/sources/Makefile	2009-10-30 16:59:16.000000000 +0000
+@@ -93,8 +93,6 @@
+ POAHELHOLFILES =    $(POA_GENERATED_HELP_HOL_java:%=$(GENSRCDIR)/%)
+ 
+ $(POAGENERATEDFILES):: $(POA.IDL)
+-	$(IDLJ) -td "$(GENSRCDIR)" -i "$(SRC_DIR)/org/omg/PortableServer" -i "$(SRC_DIR)/org/omg/PortableInterceptor" -corba 3.0 -fall -pkgPrefix PortableServer org.omg $(POA.IDL)
+-	$(RM) -r $(POAHELHOLFILES)
+ 
+ poa.compile: $(POAGENERATEDFILES)
+ 
+@@ -110,10 +108,6 @@
+ 
+ # Generating and deleting unused files to reduce images size
+ $(DYNANYFILES): $(DYNAMIC_ANY.IDL)
+-	$(IDLJ) -td "$(GENSRCDIR)" $(DYNANY_IDLJ_FLAGS) $(DYNAMIC_ANY.IDL)
+-	$(RM) $(DYNANY_DIR)/*POA*
+-	$(RM) $(DYNANY_DIR)/*Holder*
+-	$(RM) $(DYNANYDELETEFILES)
+ 
+ dynany.compile: $(DYNANYFILES)
+ 
+@@ -125,12 +119,6 @@
+ TR_IDLJ_FLAGS =-i "$(SRC_DIR)/org/omg/PortableInterceptor" -i "$(SRC_DIR)/org/omg/PortableServer" -i "$(SRC_DIR)/org/omg/CosTransactions"
+ 
+ $(TRGENERATEDFILES):: $(COSTRANSACTIONS.IDL) $(COSTSINTEROP.IDL)
+-	$(IDLJ) -td "$(GENSRCDIR)" $(TR_IDLJ_FLAGS) -D CORBA3 -corba 3.0 -fall -pkgPrefix CORBA org.omg -pkgPrefix CosTransactions org.omg $(COSTRANSACTIONS.IDL)
+-	$(IDLJ) -td "$(GENSRCDIR)" $(TR_IDLJ_FLAGS) -D CORBA3 -corba 3.0 -fall -pkgPrefix CORBA org.omg -pkgPrefix CosTSInteroperation org.omg $(COSTSINTEROP.IDL)
+-#	$(IDLJ) -td "$(GENSRCDIR)" $(TR_IDLJ_FLAGS) -D CORBA3 -corba 3.0 -fall -pkgPrefix CORBA org.omg $(TRANSACTIONS.IDL)
+-#	$(IDLJ) -td "$(GENSRCDIR)" $(TR_IDLJ_FLAGS) -D CORBA3 -corba 3.0 -fallTIE -pkgPrefix CORBA org.omg $(TRANSACTIONS.IDL)
+-#	$(IDLJ) -td "$(GENSRCDIR)" $(TR_IDLJ_FLAGS) -D CORBA3 -corba 3.0 -fall -pkgPrefix CORBA org.omg $(TRANSACTIONS.IDL)
+-#	$(IDLJ) -td "$(GENSRCDIR)" $(TR_IDLJ_FLAGS) -D CORBA3 -corba 3.0 -fallTIE -pkgPrefix CORBA org.omg $(TRANSACTIONS.IDL)
+ 
+ tr.compile: $(TRGENERATEDFILES)
+ 
+@@ -144,7 +132,6 @@
+ # _NamingContextImplBase.java and _BindingIteratorImplBase.java files
+ # to GENSRC directory. Note that these two classes are deprecated.
+ $(NSGENERATEDFILES): $(NAMESERVICE.IDL)
+-	$(IDLJ) -td "$(GENSRCDIR)" -i $(NAMESERVICEDIR) -fall -pkgPrefix CosNaming org.omg $(NAMESERVICE.IDL)
+ 
+ ns.compile: $(NSGENERATEDFILES)
+ 
+@@ -156,8 +143,6 @@
+ IOPDELETEFILES =    $(IOP_TO_DELETE_FILES:%=$(GENSRCDIR)/%)
+ 
+ $(IOPGENERATEDFILES):: $(IOP.IDL)
+-	$(IDLJ) -td "$(GENSRCDIR)" -i "$(SRC_DIR)/org/omg/PortableInterceptor" -i $(CORBA_IDL_DIR) -fall -corba 3.0 -D CORBA3 -pkgPrefix IOP org.omg $(IOP.IDL)
+-	$(RM) -r $(IOPDELETEFILES)
+ 
+ iop.compile: $(IOPGENERATEDFILES)
+ 
+@@ -169,8 +154,6 @@
+ CORBAXDUPLICATEFILES = $(CORBA_DUPLICATE_java:%=$(GENSRCDIR)/%)
+ 
+ $(CORBAXGENERATEDFILES):: $(CORBAX.IDL)
+-	$(IDLJ) -td "$(GENSRCDIR)" -i "$(SRC_DIR)/org/omg/PortableInterceptor" -i $(CORBA_IDL_DIR) -fall -corba 3.0 $(CORBAX.IDL)
+-	$(RM) $(CORBAXDUPLICATEFILES)
+ 
+ corbax.compile: $(CORBAXGENERATEDFILES)
+ 
+@@ -181,7 +164,6 @@
+ MESSAGINGGENERATEDFILES = $(Messaging_java:%=$(GENSRCDIR)/%)
+ 
+ $(MESSAGINGGENERATEDFILES):: $(MESSAGING.IDL)
+-	$(IDLJ) -td "$(GENSRCDIR)" -i "$(SRC_DIR)/org/omg/PortableInterceptor" -i $(CORBA_IDL_DIR) -fall -corba 3.0 -pkgPrefix Messaging org.omg $(MESSAGING.IDL)
+ 
+ messaging.compile: $(MESSAGINGGENERATEDFILES)
+ 
+@@ -195,8 +177,6 @@
+ PIHELHOLFILES = $(PI_GENERATED_HELP_HOL_java:%=$(GENSRCDIR)/%)
+ 
+ $(PIGENERATEDFILES):: $(INTERCEPTORS.IDL)
+-	$(IDLJ) -td "$(GENSRCDIR)" -i "$(SRC_DIR)/org/omg/PortableInterceptor" -i $(CORBA_IDL_DIR) -fall -pkgPrefix PortableInterceptor org.omg -pkgPrefix Dynamic org.omg -pkgPrefix IOP org.omg -corba 3.0 -D CORBA3 $(INTERCEPTORS.IDL)
+-	$(RM) $(PIHELHOLFILES)
+ 
+ pi.compile: $(PIGENERATEDFILES)
+ 
+diff -Nru ../openjdk.orig/openjdk-boot/corba/make/sun/rmi/corbalogsources/Makefile openjdk-boot/corba/make/sun/rmi/corbalogsources/Makefile
+--- ../openjdk.orig/openjdk-boot/corba/make/sun/rmi/corbalogsources/Makefile	2009-03-30 23:07:09.000000000 +0100
++++ openjdk-boot/corba/make/sun/rmi/corbalogsources/Makefile	2009-10-30 16:59:16.000000000 +0000
+@@ -172,7 +172,6 @@
+ ACTIVATIONFILES = $(com_sun_corba_se_spi_activation_java:%=$(GENSRCDIR)/%)
+ 
+ $(ACTIVATIONFILES): $(ACTIVATION.IDL)
+-	$(IDLJ) -td $(GENSRCDIR) -i $(ACTIVATIONFILEDIR) -fall -oldImplBase -pkgPrefix activation com.sun.corba.se.spi $(ACTIVATION.IDL)
+ 
+ activation.idl.compile: $(ACTIVATIONFILES)
+ 
+@@ -195,7 +194,6 @@
+ 
+ # REVISIT: remove -oldImplBase
+ $(PORTABLEACTIVATIONFILES): $(PORTABLEACTIVATION.IDL)
+-	$(IDLJ) -td $(GENSRCDIR) $(PORTABLEACTIVATION_INCLUDES) $(PORTABLEACTIVATION_PKG_PREFIXES) -fall -oldImplBase -corba 3.0 -D CORBA3 $(PORTABLEACTIVATION.IDL)
+ 
+ portableactivation.idl.compile: $(PORTABLEACTIVATIONFILES)
+ 
diff --git a/bootstrap-corba-no-gen.patch b/bootstrap-corba-no-gen.patch
new file mode 100644
index 0000000..aaacc14
--- /dev/null
+++ b/bootstrap-corba-no-gen.patch
@@ -0,0 +1,12 @@
+diff -Nru ../openjdk.orig/openjdk-boot/corba/make/com/sun/corba/se/Makefile openjdk-boot/corba/make/com/sun/corba/se/Makefile
+--- ../openjdk.orig/openjdk-boot/corba/make/com/sun/corba/se/Makefile	2009-03-30 17:13:01.000000000 +0100
++++ openjdk-boot/corba/make/com/sun/corba/se/Makefile	2009-10-30 16:59:16.000000000 +0000
+@@ -42,7 +42,7 @@
+ # the rmic iiop backend needs some classes that are part of the impl/util
+ # package.  These classes use log wrappers, so they must be built after
+ # pept and before rmi.
+-SUBDIRS = sources pept corespi core spi impl rmi
++SUBDIRS = org pept corespi core spi impl rmi
+ all build clean clobber::
+ 	$(SUBDIRS-loop)
+ 
diff --git a/bootstrap-corba-orb.patch b/bootstrap-corba-orb.patch
new file mode 100644
index 0000000..f6aab98
--- /dev/null
+++ b/bootstrap-corba-orb.patch
@@ -0,0 +1,42 @@
+diff -Nru ../openjdk.orig/openjdk-boot/corba/make/com/sun/corba/se/org/Makefile openjdk-boot/corba/make/com/sun/corba/se/org/Makefile
+--- ../openjdk.orig/openjdk-boot/corba/make/com/sun/corba/se/org/Makefile	1970-01-01 01:00:00.000000000 +0100
++++ openjdk-boot/corba/make/com/sun/corba/se/org/Makefile	2009-10-30 16:59:16.000000000 +0000
+@@ -0,0 +1,38 @@
++#
++# Copyright 2001-2005 Sun Microsystems, Inc.  All Rights Reserved.
++# 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.  Sun designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
++# CA 95054 USA or visit www.sun.com if you need additional information or
++# have any questions.
++#
++
++BUILDDIR = ../../../../..
++PACKAGE = com.sun.corba.se
++PRODUCT = org
++
++include $(BUILDDIR)/common/Defs.gmk
++
++FILES_java=\
++	com/sun/corba/se/org/omg/CORBA/ORB.java
++
++#
++# Include
++#
++include $(BUILDDIR)/common/Classes.gmk
diff --git a/bootstrap-demos.patch b/bootstrap-demos.patch
new file mode 100644
index 0000000..89c2e1a
--- /dev/null
+++ b/bootstrap-demos.patch
@@ -0,0 +1,32 @@
+diff -Nru openjdk.orig/jdk/make/common/Release.gmk openjdk/jdk/make/common/Release.gmk
+--- openjdk-boot.orig/jdk/make/common/Release.gmk	2011-03-16 20:59:31.000000000 +0000
++++ openjdk-boot/jdk/make/common/Release.gmk	2011-03-16 21:29:40.269191529 +0000
+@@ -1071,16 +1071,6 @@
+ 	$(CP) $(PLATFORM_SRC)/bin/java_md.h $(JDK_IMAGE_DIR)/src/launcher
+ 	$(CD) $(JDK_IMAGE_DIR)/src && $(ZIPEXE) -qr ../src.zip *
+ 	$(RM) -r $(JDK_IMAGE_DIR)/src
+-	@#
+-	@# demo, include
+-	@#
+-	$(CP) -r -f $(DEMODIR) $(JDK_IMAGE_DIR)
+-	$(CP) -r -f $(SAMPLEDIR) $(JDK_IMAGE_DIR)
+-	$(CP) -r $(INCLUDEDIR) $(JDK_IMAGE_DIR)
+-	@#
+-	@# Swing BeanInfo generation
+-	@#
+-	$(CD) javax/swing/beaninfo && $(MAKE) swing-1.2-beans
+ ifneq ($(PLATFORM), windows)
+ 	$(call copy-man-pages,$(JDK_IMAGE_DIR),$(JDK_MAN_PAGES))
+ endif # !windows
+diff -Nru openjdk.orig/jdk/make/Makefile openjdk/jdk/make/Makefile
+--- openjdk-boot.orig/jdk/make/Makefile	2011-03-14 22:10:30.000000000 +0000
++++ openjdk-boot/jdk/make/Makefile	2011-03-16 21:29:40.269191529 +0000
+@@ -238,7 +238,7 @@
+ 
+ SUBDIRS       = tools java javax sun com
+ SUBDIRS_tools = launchers
+-SUBDIRS_misc  = org sunw jpda mkdemo mksample
++SUBDIRS_misc  = org sunw jpda mksample
+ 
+ # Alternate classes implementation
+ ifndef OPENJDK
diff --git a/bootstrap-ecj-autoboxing.patch b/bootstrap-ecj-autoboxing.patch
new file mode 100644
index 0000000..dbd4627
--- /dev/null
+++ b/bootstrap-ecj-autoboxing.patch
@@ -0,0 +1,287 @@
+diff -up ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/CallSite.java.sav ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/CallSite.java
+--- ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/CallSite.java.sav	2011-06-27 13:28:34.000000000 -0400
++++ ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/CallSite.java	2011-07-06 13:14:16.239382320 -0400
+@@ -329,7 +329,7 @@ public class CallSite {
+ 
+     private static Object maybeReBox(Object x) {
+         if (x instanceof Integer) {
+-            int xi = (int) x;
++            int xi = (Integer) x;
+             if (xi == (byte) xi)
+                 x = xi;  // must rebox; see JLS 5.1.7
+         }
+diff -up ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/FromGeneric.java.sav ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/FromGeneric.java
+--- ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/FromGeneric.java.sav	2011-06-27 13:28:35.000000000 -0400
++++ ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/FromGeneric.java	2011-07-06 13:14:16.240382297 -0400
+@@ -505,10 +505,10 @@ class genclasses {
+         protected A0 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+                         { return new A0(e, i, c, t); }
+         protected Object invoke_L0() throws Throwable { return convert_L((Object)invoker.invokeExact(target)); }
+-        protected Object invoke_I0() throws Throwable { return convert_I((int)   invoker.invokeExact(target)); }
+-        protected Object invoke_J0() throws Throwable { return convert_J((long)  invoker.invokeExact(target)); }
+-        protected Object invoke_F0() throws Throwable { return convert_F((float) invoker.invokeExact(target)); }
+-        protected Object invoke_D0() throws Throwable { return convert_D((double)invoker.invokeExact(target)); }
++        protected Object invoke_I0() throws Throwable { return convert_I((Integer)   invoker.invokeExact(target)); }
++        protected Object invoke_J0() throws Throwable { return convert_J((Long)  invoker.invokeExact(target)); }
++        protected Object invoke_F0() throws Throwable { return convert_F((Float) invoker.invokeExact(target)); }
++        protected Object invoke_D0() throws Throwable { return convert_D((Double)invoker.invokeExact(target)); }
+     }
+     static class A1 extends Adapter {
+         protected A1(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
+@@ -517,10 +517,10 @@ class genclasses {
+         protected A1 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+                         { return new A1(e, i, c, t); }
+         protected Object invoke_L1(Object a0) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0)); }
+-        protected Object invoke_I1(Object a0) throws Throwable { return convert_I((int)   invoker.invokeExact(target, a0)); }
+-        protected Object invoke_J1(Object a0) throws Throwable { return convert_J((long)  invoker.invokeExact(target, a0)); }
+-        protected Object invoke_F1(Object a0) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0)); }
+-        protected Object invoke_D1(Object a0) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0)); }
++        protected Object invoke_I1(Object a0) throws Throwable { return convert_I((Integer)   invoker.invokeExact(target, a0)); }
++        protected Object invoke_J1(Object a0) throws Throwable { return convert_J((Long)  invoker.invokeExact(target, a0)); }
++        protected Object invoke_F1(Object a0) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0)); }
++        protected Object invoke_D1(Object a0) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0)); }
+     }
+     static class A2 extends Adapter {
+         protected A2(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
+@@ -529,10 +529,10 @@ class genclasses {
+         protected A2 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+                         { return new A2(e, i, c, t); }
+         protected Object invoke_L2(Object a0, Object a1) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1)); }
+-        protected Object invoke_I2(Object a0, Object a1) throws Throwable { return convert_I((int)   invoker.invokeExact(target, a0, a1)); }
+-        protected Object invoke_J2(Object a0, Object a1) throws Throwable { return convert_J((long)  invoker.invokeExact(target, a0, a1)); }
+-        protected Object invoke_F2(Object a0, Object a1) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1)); }
+-        protected Object invoke_D2(Object a0, Object a1) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1)); }
++        protected Object invoke_I2(Object a0, Object a1) throws Throwable { return convert_I((Integer)   invoker.invokeExact(target, a0, a1)); }
++        protected Object invoke_J2(Object a0, Object a1) throws Throwable { return convert_J((Long)  invoker.invokeExact(target, a0, a1)); }
++        protected Object invoke_F2(Object a0, Object a1) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1)); }
++        protected Object invoke_D2(Object a0, Object a1) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1)); }
+     }
+     static class A3 extends Adapter {
+         protected A3(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
+@@ -541,10 +541,10 @@ class genclasses {
+         protected A3 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+                         { return new A3(e, i, c, t); }
+         protected Object invoke_L3(Object a0, Object a1, Object a2) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2)); }
+-        protected Object invoke_I3(Object a0, Object a1, Object a2) throws Throwable { return convert_I((int)   invoker.invokeExact(target, a0, a1, a2)); }
+-        protected Object invoke_J3(Object a0, Object a1, Object a2) throws Throwable { return convert_J((long)  invoker.invokeExact(target, a0, a1, a2)); }
+-        protected Object invoke_F3(Object a0, Object a1, Object a2) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2)); }
+-        protected Object invoke_D3(Object a0, Object a1, Object a2) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2)); }
++        protected Object invoke_I3(Object a0, Object a1, Object a2) throws Throwable { return convert_I((Integer)   invoker.invokeExact(target, a0, a1, a2)); }
++        protected Object invoke_J3(Object a0, Object a1, Object a2) throws Throwable { return convert_J((Long)  invoker.invokeExact(target, a0, a1, a2)); }
++        protected Object invoke_F3(Object a0, Object a1, Object a2) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2)); }
++        protected Object invoke_D3(Object a0, Object a1, Object a2) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2)); }
+     }
+     static class A4 extends Adapter {
+         protected A4(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
+@@ -553,10 +553,10 @@ class genclasses {
+         protected A4 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+                         { return new A4(e, i, c, t); }
+         protected Object invoke_L4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3)); }
+-        protected Object invoke_I4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_I((int)   invoker.invokeExact(target, a0, a1, a2, a3)); }
+-        protected Object invoke_J4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_J((long)  invoker.invokeExact(target, a0, a1, a2, a3)); }
+-        protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3)); }
+-        protected Object invoke_D4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3)); }
++        protected Object invoke_I4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_I((Integer)   invoker.invokeExact(target, a0, a1, a2, a3)); }
++        protected Object invoke_J4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_J((Long)  invoker.invokeExact(target, a0, a1, a2, a3)); }
++        protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2, a3)); }
++        protected Object invoke_D4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2, a3)); }
+     }
+     static class A5 extends Adapter {
+         protected A5(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
+@@ -565,10 +565,10 @@ class genclasses {
+         protected A5 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+                         { return new A5(e, i, c, t); }
+         protected Object invoke_L5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
+-        protected Object invoke_I5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_I((int)   invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
+-        protected Object invoke_J5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_J((long)  invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
+-        protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
+-        protected Object invoke_D5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
++        protected Object invoke_I5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_I((Integer)   invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
++        protected Object invoke_J5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_J((Long)  invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
++        protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
++        protected Object invoke_D5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
+     }
+     static class A6 extends Adapter {
+         protected A6(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
+@@ -577,10 +577,10 @@ class genclasses {
+         protected A6 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+                         { return new A6(e, i, c, t); }
+         protected Object invoke_L6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
+-        protected Object invoke_I6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_I((int)   invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
+-        protected Object invoke_J6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_J((long)  invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
+-        protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
+-        protected Object invoke_D6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
++        protected Object invoke_I6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_I((Integer)   invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
++        protected Object invoke_J6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_J((Long)  invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
++        protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
++        protected Object invoke_D6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
+     }
+     static class A7 extends Adapter {
+         protected A7(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
+@@ -589,10 +589,10 @@ class genclasses {
+         protected A7 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+                         { return new A7(e, i, c, t); }
+         protected Object invoke_L7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
+-        protected Object invoke_I7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_I((int)   invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
+-        protected Object invoke_J7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_J((long)  invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
+-        protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
+-        protected Object invoke_D7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
++        protected Object invoke_I7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_I((Integer)   invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
++        protected Object invoke_J7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_J((Long)  invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
++        protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
++        protected Object invoke_D7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
+     }
+     static class A8 extends Adapter {
+         protected A8(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
+@@ -601,10 +601,10 @@ class genclasses {
+         protected A8 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+                         { return new A8(e, i, c, t); }
+         protected Object invoke_L8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
+-        protected Object invoke_I8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_I((int)   invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
+-        protected Object invoke_J8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_J((long)  invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
+-        protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
+-        protected Object invoke_D8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
++        protected Object invoke_I8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_I((Integer)   invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
++        protected Object invoke_J8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_J((Long)  invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
++        protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
++        protected Object invoke_D8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
+     }
+     static class A9 extends Adapter {
+         protected A9(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
+@@ -613,10 +613,10 @@ class genclasses {
+         protected A9 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+                         { return new A9(e, i, c, t); }
+         protected Object invoke_L9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
+-        protected Object invoke_I9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_I((int)   invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
+-        protected Object invoke_J9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_J((long)  invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
+-        protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
+-        protected Object invoke_D9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
++        protected Object invoke_I9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_I((Integer)   invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
++        protected Object invoke_J9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_J((Long)  invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
++        protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
++        protected Object invoke_D9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
+     }
+     static class A10 extends Adapter {
+         protected A10(MethodHandle entryPoint) { super(entryPoint); }  // to build prototype
+@@ -625,9 +625,9 @@ class genclasses {
+         protected A10 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+                         { return new A10(e, i, c, t); }
+         protected Object invoke_L10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
+-        protected Object invoke_I10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_I((int)   invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
+-        protected Object invoke_J10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_J((long)  invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
+-        protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
+-        protected Object invoke_D10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
++        protected Object invoke_I10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_I((Integer)   invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
++        protected Object invoke_J10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_J((Long)  invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
++        protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
++        protected Object invoke_D10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
+     }
+ }
+diff -up ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java.sav ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java
+--- ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java.sav	2011-06-27 13:28:36.000000000 -0400
++++ ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java	2011-07-06 13:14:16.240382297 -0400
+@@ -956,52 +956,52 @@ import static java.lang.invoke.MethodHan
+             return addTypeString(target, this);
+         }
+         private Object invoke_V(Object... av) throws Throwable {
+-            if ((boolean) test.invokeExact(av))
++            if ((Boolean) test.invokeExact(av))
+                 return target.invokeExact(av);
+             return fallback.invokeExact(av);
+         }
+         private Object invoke_L0() throws Throwable {
+-            if ((boolean) test.invokeExact())
++            if ((Boolean) test.invokeExact())
+                 return target.invokeExact();
+             return fallback.invokeExact();
+         }
+         private Object invoke_L1(Object a0) throws Throwable {
+-            if ((boolean) test.invokeExact(a0))
++            if ((Boolean) test.invokeExact(a0))
+                 return target.invokeExact(a0);
+             return fallback.invokeExact(a0);
+         }
+         private Object invoke_L2(Object a0, Object a1) throws Throwable {
+-            if ((boolean) test.invokeExact(a0, a1))
++            if ((Boolean) test.invokeExact(a0, a1))
+                 return target.invokeExact(a0, a1);
+             return fallback.invokeExact(a0, a1);
+         }
+         private Object invoke_L3(Object a0, Object a1, Object a2) throws Throwable {
+-            if ((boolean) test.invokeExact(a0, a1, a2))
++            if ((Boolean) test.invokeExact(a0, a1, a2))
+                 return target.invokeExact(a0, a1, a2);
+             return fallback.invokeExact(a0, a1, a2);
+         }
+         private Object invoke_L4(Object a0, Object a1, Object a2, Object a3) throws Throwable {
+-            if ((boolean) test.invokeExact(a0, a1, a2, a3))
++            if ((Boolean) test.invokeExact(a0, a1, a2, a3))
+                 return target.invokeExact(a0, a1, a2, a3);
+             return fallback.invokeExact(a0, a1, a2, a3);
+         }
+         private Object invoke_L5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable {
+-            if ((boolean) test.invokeExact(a0, a1, a2, a3, a4))
++            if ((Boolean) test.invokeExact(a0, a1, a2, a3, a4))
+                 return target.invokeExact(a0, a1, a2, a3, a4);
+             return fallback.invokeExact(a0, a1, a2, a3, a4);
+         }
+         private Object invoke_L6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable {
+-            if ((boolean) test.invokeExact(a0, a1, a2, a3, a4, a5))
++            if ((Boolean) test.invokeExact(a0, a1, a2, a3, a4, a5))
+                 return target.invokeExact(a0, a1, a2, a3, a4, a5);
+             return fallback.invokeExact(a0, a1, a2, a3, a4, a5);
+         }
+         private Object invoke_L7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable {
+-            if ((boolean) test.invokeExact(a0, a1, a2, a3, a4, a5, a6))
++            if ((Boolean) test.invokeExact(a0, a1, a2, a3, a4, a5, a6))
+                 return target.invokeExact(a0, a1, a2, a3, a4, a5, a6);
+             return fallback.invokeExact(a0, a1, a2, a3, a4, a5, a6);
+         }
+         private Object invoke_L8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable {
+-            if ((boolean) test.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7))
++            if ((Boolean) test.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7))
+                 return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7);
+             return fallback.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7);
+         }
+diff -up ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/ToGeneric.java.sav ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/ToGeneric.java
+--- ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/ToGeneric.java.sav	2011-06-27 13:28:38.000000000 -0400
++++ ./openjdk-boot/jdk/src/share/classes/java/lang/invoke/ToGeneric.java	2011-07-06 13:14:16.241382276 -0400
+@@ -394,10 +394,10 @@ class ToGeneric {
+ 
+         // Code to run when the generic target has finished and produced a value.
+         protected Object return_L(Object res) throws Throwable { return (Object)convert.invokeExact(res); }
+-        protected int    return_I(Object res) throws Throwable { return (int)   convert.invokeExact(res); }
+-        protected long   return_J(Object res) throws Throwable { return (long)  convert.invokeExact(res); }
+-        protected float  return_F(Object res) throws Throwable { return (float) convert.invokeExact(res); }
+-        protected double return_D(Object res) throws Throwable { return (double)convert.invokeExact(res); }
++        protected int    return_I(Object res) throws Throwable { return (Integer)   convert.invokeExact(res); }
++        protected long   return_J(Object res) throws Throwable { return (Long)  convert.invokeExact(res); }
++        protected float  return_F(Object res) throws Throwable { return (Float) convert.invokeExact(res); }
++        protected double return_D(Object res) throws Throwable { return (Double)convert.invokeExact(res); }
+ 
+         static private final String CLASS_PREFIX; // "java.lang.invoke.ToGeneric$"
+         static {
+diff -up ./openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java.sav ./openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java
+--- ./openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java.sav	2011-06-27 13:36:46.000000000 -0400
++++ ./openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java	2011-07-06 13:14:30.892131655 -0400
+@@ -223,9 +223,9 @@ public class ValueConversions {
+         if (x instanceof Number) {
+             res = (Number) x;
+         } else if (x instanceof Boolean) {
+-            res = ((boolean)x ? ONE_INT : ZERO_INT);
++            res = ((Boolean)x ? ONE_INT : ZERO_INT);
+         } else if (x instanceof Character) {
+-            res = (int)(char)x;
++            res = (int)(Character)x;
+         } else {
+             // this will fail with the required ClassCastException:
+             res = (Number) x;
+@@ -386,7 +386,7 @@ public class ValueConversions {
+ 
+     static int unboxRawInteger(Object x) {
+         if (x instanceof Integer)
+-            return (int) x;
++            return (Integer) x;
+         else
+             return (int) unboxLong(x, false);
+     }
diff --git a/bootstrap-ecj-diamond.patch b/bootstrap-ecj-diamond.patch
new file mode 100644
index 0000000..31ac17f
--- /dev/null
+++ b/bootstrap-ecj-diamond.patch
@@ -0,0 +1,5809 @@
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java.sav	2011-07-29 12:21:02.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java	2011-07-29 14:27:07.764531588 -0400
+@@ -103,9 +103,9 @@ class Attribute implements Comparable<At
+         return this.def.compareTo(that.def);
+     }
+ 
+-    private static final Map<List<Attribute>, List<Attribute>> canonLists = new HashMap<>();
+-    private static final Map<Layout, Attribute> attributes = new HashMap<>();
+-    private static final Map<Layout, Attribute> standardDefs = new HashMap<>();
++    private static final Map<List<Attribute>, List<Attribute>> canonLists = new HashMap<List<Attribute>, List<Attribute>>();
++    private static final Map<Layout, Attribute> attributes = new HashMap<Layout, Attribute>();
++    private static final Map<Layout, Attribute> standardDefs = new HashMap<Layout, Attribute>();
+ 
+     // Canonicalized lists of trivial attrs (Deprecated, etc.)
+     // are used by trimToSize, in order to reduce footprint
+@@ -115,7 +115,7 @@ class Attribute implements Comparable<At
+         synchronized (canonLists) {
+             List<Attribute> cl = canonLists.get(al);
+             if (cl == null) {
+-                cl = new ArrayList<>(al.size());
++                cl = new ArrayList<Attribute>(al.size());
+                 cl.addAll(al);
+                 cl = Collections.unmodifiableList(cl);
+                 canonLists.put(al, cl);
+@@ -336,9 +336,9 @@ class Attribute implements Comparable<At
+ 
+         public void addAttribute(Attribute a) {
+             if (attributes == null)
+-                attributes = new ArrayList<>(3);
++                attributes = new ArrayList<Attribute>(3);
+             else if (!(attributes instanceof ArrayList))
+-                attributes = new ArrayList<>(attributes);  // unfreeze it
++                attributes = new ArrayList<Attribute>(attributes);  // unfreeze it
+             attributes.add(a);
+         }
+ 
+@@ -346,7 +346,7 @@ class Attribute implements Comparable<At
+             if (attributes == null)       return null;
+             if (!attributes.contains(a))  return null;
+             if (!(attributes instanceof ArrayList))
+-                attributes = new ArrayList<>(attributes);  // unfreeze it
++                attributes = new ArrayList<Attribute>(attributes);  // unfreeze it
+             attributes.remove(a);
+             return a;
+         }
+@@ -838,7 +838,7 @@ class Attribute implements Comparable<At
+     */
+     static //private
+     Layout.Element[] tokenizeLayout(Layout self, int curCble, String layout) {
+-        List<Layout.Element> col = new ArrayList<>(layout.length());
++        List<Layout.Element> col = new ArrayList<Layout.Element>(layout.length());
+         tokenizeLayout(self, curCble, layout, col);
+         Layout.Element[] res = new Layout.Element[col.size()];
+         col.toArray(res);
+@@ -903,7 +903,7 @@ class Attribute implements Comparable<At
+             case 'T': // union: 'T' any_int union_case* '(' ')' '[' body ']'
+                 kind = EK_UN;
+                 i = tokenizeSInt(e, layout, i);
+-                List<Layout.Element> cases = new ArrayList<>();
++                List<Layout.Element> cases = new ArrayList<Layout.Element>();
+                 for (;;) {
+                     // Keep parsing cases until we hit the default case.
+                     if (layout.charAt(i++) != '(')
+@@ -1057,7 +1057,7 @@ class Attribute implements Comparable<At
+     }
+     static //private
+     String[] splitBodies(String layout) {
+-        List<String> bodies = new ArrayList<>();
++        List<String> bodies = new ArrayList<String>();
+         // Parse several independent layout bodies:  "[foo][bar]...[baz]"
+         for (int i = 0; i < layout.length(); i++) {
+             if (layout.charAt(i++) != '[')
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java.sav	2011-07-29 14:27:01.425625667 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	2011-07-29 14:27:07.765531573 -0400
+@@ -257,7 +257,7 @@ class BandStructure {
+         assert(basicCodings[_meta_default] == null);
+         assert(basicCodings[_meta_canon_min] != null);
+         assert(basicCodings[_meta_canon_max] != null);
+-        Map<Coding, Integer> map = new HashMap<>();
++        Map<Coding, Integer> map = new HashMap<Coding, Integer>();
+         for (int i = 0; i < basicCodings.length; i++) {
+             Coding c = basicCodings[i];
+             if (c == null)  continue;
+@@ -1068,8 +1068,8 @@ class BandStructure {
+ 
+     // Bootstrap support for CPRefBands.  These are needed to record
+     // intended CP indexes, before the CP has been created.
+-    private final List<CPRefBand> allKQBands = new ArrayList<>();
+-    private List<Object[]> needPredefIndex = new ArrayList<>();
++    private final List<CPRefBand> allKQBands = new ArrayList<CPRefBand>();
++    private List<Object[]> needPredefIndex = new ArrayList<Object[]>();
+ 
+ 
+     int encodeRef(Entry e, Index ix) {
+@@ -1704,7 +1704,7 @@ class BandStructure {
+     protected int attrClassFileVersionMask;
+ 
+     // Mapping from Attribute.Layout to Band[] (layout element bands).
+-    protected Map<Attribute.Layout, Band[]> attrBandTable = new HashMap<>();
++    protected Map<Attribute.Layout, Band[]> attrBandTable = new HashMap<Attribute.Layout, Band[]>();
+ 
+     // Well-known attributes:
+     protected final Attribute.Layout attrCodeEmpty;
+@@ -1713,16 +1713,16 @@ class BandStructure {
+     protected final Attribute.Layout attrConstantValue;
+ 
+     // Mapping from Attribute.Layout to Integer (inverse of attrDefs)
+-    Map<Attribute.Layout, Integer> attrIndexTable = new HashMap<>();
++    Map<Attribute.Layout, Integer> attrIndexTable = new HashMap<Attribute.Layout, Integer>();
+ 
+     // Mapping from attribute index (<32 are flag bits) to attributes.
+     protected List<List<Attribute.Layout>> attrDefs =
+-            new FixedList<>(ATTR_CONTEXT_LIMIT);
++            new FixedList<List<Attribute.Layout>>(ATTR_CONTEXT_LIMIT);
+     {
+         for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) {
+             assert(attrIndexLimit[i] == 0);
+             attrIndexLimit[i] = 32;  // just for the sake of predefs.
+-            attrDefs.set(i, new ArrayList<>(Collections.nCopies(
++            attrDefs.set(i, new ArrayList<Attribute.Layout>(Collections.nCopies(
+                     attrIndexLimit[i], (Attribute.Layout)null)));
+ 
+         }
+@@ -1912,7 +1912,7 @@ class BandStructure {
+ 
+     protected List<Attribute.Layout> getPredefinedAttrs(int ctype) {
+         assert(attrIndexLimit[ctype] != 0);
+-        List<Attribute.Layout> res = new ArrayList<>(attrIndexLimit[ctype]);
++        List<Attribute.Layout> res = new ArrayList<Attribute.Layout>(attrIndexLimit[ctype]);
+         // Remove nulls and non-predefs.
+         for (int ai = 0; ai < attrIndexLimit[ctype]; ai++) {
+             if (testBit(attrDefSeen[ctype], 1L<<ai))  continue;
+@@ -2536,7 +2536,7 @@ class BandStructure {
+     // DEBUG ONLY:  Record something about the band order.
+     boolean notePrevForAssert(Band b, Band p) {
+         if (prevForAssertMap == null)
+-            prevForAssertMap = new HashMap<>();
++            prevForAssertMap = new HashMap<Band, Band>();
+         prevForAssertMap.put(b, p);
+         return true;
+     }
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java.sav	2011-07-29 12:21:02.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java	2011-07-29 14:27:07.765531573 -0400
+@@ -469,7 +469,7 @@ class ClassReader {
+ 
+     void readInnerClasses(Class cls) throws IOException {
+         int nc = readUnsignedShort();
+-        ArrayList<InnerClass> ics = new ArrayList<>(nc);
++        ArrayList<InnerClass> ics = new ArrayList<InnerClass>(nc);
+         for (int i = 0; i < nc; i++) {
+             InnerClass ic =
+                 new InnerClass(readClassRef(),
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java.sav	2011-07-29 12:21:02.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java	2011-07-29 14:27:07.766531558 -0400
+@@ -743,9 +743,9 @@ class CodingChooser {
+         // Steps 1/2/3 are interdependent, and may be iterated.
+         // Steps 4 and 5 may be decided independently afterward.
+         int[] LValuesCoded = PopulationCoding.LValuesCoded;
+-        List<Coding> bestFits = new ArrayList<>();
+-        List<Coding> fullFits = new ArrayList<>();
+-        List<Coding> longFits = new ArrayList<>();
++        List<Coding> bestFits = new ArrayList<Coding>();
++        List<Coding> fullFits = new ArrayList<Coding>();
++        List<Coding> longFits = new ArrayList<Coding>();
+         final int PACK_TO_MAX_S = 1;
+         if (bestPopFVC <= 255) {
+             bestFits.add(BandStructure.BYTE1);
+@@ -785,7 +785,7 @@ class CodingChooser {
+                 }
+             }
+         }
+-        List<Coding> allFits = new ArrayList<>();
++        List<Coding> allFits = new ArrayList<Coding>();
+         for (Iterator<Coding> i = bestFits.iterator(),
+                       j = fullFits.iterator(),
+                       k = longFits.iterator();
+@@ -1230,10 +1230,10 @@ class CodingChooser {
+         Histogram hist = getValueHistogram();
+         int fVlen = stressLen(hist.getTotalLength());
+         if (fVlen == 0)  return coding;
+-        List<Integer> popvals = new ArrayList<>();
++        List<Integer> popvals = new ArrayList<Integer>();
+         if (stress.nextBoolean()) {
+             // Build the population from the value list.
+-            Set<Integer> popset = new HashSet<>();
++            Set<Integer> popset = new HashSet<Integer>();
+             for (int i = start; i < end; i++) {
+                 if (popset.add(values[i]))  popvals.add(values[i]);
+             }
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java.sav	2011-07-29 12:21:02.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java	2011-07-29 14:27:07.766531558 -0400
+@@ -402,7 +402,7 @@ class Coding implements Comparable<Codin
+     private static Map<Coding, Coding> codeMap;
+ 
+     private static synchronized Coding of(int B, int H, int S, int del) {
+-        if (codeMap == null)  codeMap = new HashMap<>();
++        if (codeMap == null)  codeMap = new HashMap<Coding, Coding>();
+         Coding x0 = new Coding(B, H, S, del);
+         Coding x1 = codeMap.get(x0);
+         if (x1 == null)  codeMap.put(x0, x1 = x0);
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java.sav	2011-07-29 12:21:02.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java	2011-07-29 14:27:07.766531558 -0400
+@@ -915,7 +915,7 @@ class ConstantPool {
+     public static
+     Index[] partition(Index ix, int[] keys) {
+         // %%% Should move this into class Index.
+-        List<List<Entry>> parts = new ArrayList<>();
++        List<List<Entry>> parts = new ArrayList<List<Entry>>();
+         Entry[] cpMap = ix.cpMap;
+         assert(keys.length == cpMap.length);
+         for (int i = 0; i < keys.length; i++) {
+@@ -926,7 +926,7 @@ class ConstantPool {
+             }
+             List<Entry> part = parts.get(key);
+             if (part == null) {
+-                parts.set(key, part = new ArrayList<>());
++                parts.set(key, part = new ArrayList<Entry>());
+             }
+             part.add(cpMap[i]);
+         }
+@@ -1133,7 +1133,7 @@ class ConstantPool {
+     void completeReferencesIn(Set<Entry> cpRefs, boolean flattenSigs) {
+         cpRefs.remove(null);
+         for (ListIterator<Entry> work =
+-                 new ArrayList<>(cpRefs).listIterator(cpRefs.size());
++                 new ArrayList<Entry>(cpRefs).listIterator(cpRefs.size());
+              work.hasPrevious(); ) {
+             Entry e = work.previous();
+             work.remove();          // pop stack
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java.sav	2011-07-29 14:27:01.425625667 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2011-07-29 14:27:07.767531543 -0400
+@@ -59,7 +59,7 @@ class Driver {
+                 ResourceBundle.getBundle("com.sun.java.util.jar.pack.DriverResource");
+ 
+     public static void main(String[] ava) throws IOException {
+-        List<String> av = new ArrayList<>(Arrays.asList(ava));
++        List<String> av = new ArrayList<String>(Arrays.asList(ava));
+ 
+         boolean doPack   = true;
+         boolean doUnpack = false;
+@@ -84,7 +84,7 @@ class Driver {
+         }
+ 
+         // Collect engine properties here:
+-        Map<String,String> engProps = new HashMap<>();
++        Map<String,String> engProps = new HashMap<String, String>();
+         engProps.put(verboseProp, System.getProperty(verboseProp));
+ 
+         String optionMap;
+@@ -98,7 +98,7 @@ class Driver {
+         }
+ 
+         // Collect argument properties here:
+-        Map<String,String> avProps = new HashMap<>();
++        Map<String,String> avProps = new HashMap<String, String>();
+         try {
+             for (;;) {
+                 String state = parseCommandOptions(av, optionMap, avProps);
+@@ -537,7 +537,7 @@ class Driver {
+         String resultString = null;
+ 
+         // Convert options string into optLines dictionary.
+-        TreeMap<String,String[]> optmap = new TreeMap<>();
++        TreeMap<String,String[]> optmap = new TreeMap<String,String[]>();
+     loadOptmap:
+         for (String optline : options.split("\n")) {
+             String[] words = optline.split("\\p{Space}+");
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java.sav	2011-07-29 12:21:02.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java	2011-07-29 14:27:07.767531543 -0400
+@@ -45,7 +45,7 @@ final class FixedList<E> implements List
+     private final ArrayList<E> flist;
+ 
+     protected FixedList(int capacity) {
+-        flist = new ArrayList<>(capacity);
++        flist = new ArrayList<E>(capacity);
+         // initialize the list to null
+         for (int i = 0 ; i < capacity ; i++) {
+             flist.add(null);
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Fixups.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Fixups.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Fixups.java.sav	2011-07-29 14:27:56.374810200 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Fixups.java	2011-07-29 14:28:15.044533166 -0400
+@@ -126,11 +126,11 @@ final class Fixups extends AbstractColle
+     public void setBytes(byte[] newBytes) {
+         if (bytes == newBytes)  return;
+         ArrayList<Fixup> old = null;
+-        assert((old = new ArrayList<>(this)) != null);
++        assert((old = new ArrayList<Fixup>(this)) != null);
+         if (bytes == null || newBytes == null) {
+             // One or the other representations is deficient.
+             // Construct a checkpoint.
+-            ArrayList<Fixup> save = new ArrayList<>(this);
++            ArrayList<Fixup> save = new ArrayList<Fixup>(this);
+             clear();
+             bytes = newBytes;
+             addAll(save);
+@@ -138,7 +138,7 @@ final class Fixups extends AbstractColle
+             // assume newBytes is some sort of bitwise copy of the old bytes
+             bytes = newBytes;
+         }
+-        assert(old.equals(new ArrayList<>(this)));
++        assert(old.equals(new ArrayList<Fixup>(this)));
+     }
+ 
+     static final int LOC_SHIFT = 1;
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java.sav	2011-07-29 12:21:02.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java	2011-07-29 14:27:07.768531528 -0400
+@@ -112,7 +112,7 @@ class Package {
+     public static final Attribute.Layout attrSourceFileSpecial;
+     public static final Map<Attribute.Layout, Attribute> attrDefs;
+     static {
+-        Map<Layout, Attribute> ad = new HashMap<>(3);
++        Map<Layout, Attribute> ad = new HashMap<Layout, Attribute>(3);
+         attrCodeEmpty = Attribute.define(ad, ATTR_CONTEXT_METHOD,
+                                          "Code", "").layout();
+         attrInnerClassesEmpty = Attribute.define(ad, ATTR_CONTEXT_CLASS,
+@@ -181,7 +181,7 @@ class Package {
+         }
+     }
+ 
+-    ArrayList<Package.Class> classes = new ArrayList<>();
++    ArrayList<Package.Class> classes = new ArrayList<Package.Class>();
+ 
+     public List<Package.Class> getClasses() {
+         return classes;
+@@ -263,7 +263,7 @@ class Package {
+             if (olda == null)
+                 return;  // no SourceFile attr.
+             String obvious = getObviousSourceFile();
+-            List<Entry> ref = new ArrayList<>(1);
++            List<Entry> ref = new ArrayList<Entry>(1);
+             olda.visitRefs(this, VRM_PACKAGE, ref);
+             Utf8Entry sfName = (Utf8Entry) ref.get(0);
+             Attribute a = olda;
+@@ -291,7 +291,7 @@ class Package {
+             if (a != olda) {
+                 if (verbose > 2)
+                     Utils.log.fine("recoding obvious SourceFile="+obvious);
+-                List<Attribute> newAttrs = new ArrayList<>(getAttributes());
++                List<Attribute> newAttrs = new ArrayList<Attribute>(getAttributes());
+                 int where = newAttrs.indexOf(olda);
+                 newAttrs.set(where, a);
+                 setAttributes(newAttrs);
+@@ -321,7 +321,7 @@ class Package {
+         }
+ 
+         public void setInnerClasses(Collection<InnerClass> ics) {
+-            innerClasses = (ics == null) ? null : new ArrayList<>(ics);
++            innerClasses = (ics == null) ? null : new ArrayList<InnerClass>(ics);
+             // Edit the attribute list, if necessary.
+             Attribute a = getAttribute(attrInnerClassesEmpty);
+             if (innerClasses != null && a == null)
+@@ -340,7 +340,7 @@ class Package {
+          *  with that of Package.this.allInnerClasses.
+          */
+         public List<InnerClass> computeGloballyImpliedICs() {
+-            Set<Entry> cpRefs = new HashSet<>();
++            Set<Entry> cpRefs = new HashSet<Entry>();
+             {   // This block temporarily displaces this.innerClasses.
+                 ArrayList<InnerClass> innerClassesSaved = innerClasses;
+                 innerClasses = null;  // ignore for the moment
+@@ -349,7 +349,7 @@ class Package {
+             }
+             ConstantPool.completeReferencesIn(cpRefs, true);
+ 
+-            Set<Entry> icRefs = new HashSet<>();
++            Set<Entry> icRefs = new HashSet<Entry>();
+             for (Entry e : cpRefs) {
+                 // Restrict cpRefs to InnerClasses entries only.
+                 if (!(e instanceof ClassEntry))  continue;
+@@ -365,7 +365,7 @@ class Package {
+             // This loop is structured this way so as to accumulate
+             // entries into impliedICs in an order which reflects
+             // the order of allInnerClasses.
+-            ArrayList<InnerClass> impliedICs = new ArrayList<>();
++            ArrayList<InnerClass> impliedICs = new ArrayList<InnerClass>();
+             for (InnerClass ic : allInnerClasses) {
+                 // This one is locally relevant if it describes
+                 // a member of the current class, or if the current
+@@ -408,8 +408,8 @@ class Package {
+                 // Diff is A since I is empty.
+             }
+             // (I*A) is non-trivial
+-            Set<InnerClass> center = new HashSet<>(actualICs);
+-            center.retainAll(new HashSet<>(impliedICs));
++            Set<InnerClass> center = new HashSet<InnerClass>(actualICs);
++            center.retainAll(new HashSet<InnerClass>(impliedICs));
+             impliedICs.addAll(actualICs);
+             impliedICs.removeAll(center);
+             // Diff is now I^A = (I+A)-(I*A).
+@@ -538,7 +538,7 @@ class Package {
+                 super(flags, descriptor);
+                 assert(!descriptor.isMethod());
+                 if (fields == null)
+-                    fields = new ArrayList<>();
++                    fields = new ArrayList<Field>();
+                 boolean added = fields.add(this);
+                 assert(added);
+                 order = fields.size();
+@@ -563,7 +563,7 @@ class Package {
+                 super(flags, descriptor);
+                 assert(descriptor.isMethod());
+                 if (methods == null)
+-                    methods = new ArrayList<>();
++                    methods = new ArrayList<Method>();
+                 boolean added = methods.add(this);
+                 assert(added);
+             }
+@@ -728,14 +728,14 @@ class Package {
+     }
+ 
+     // What non-class files are in this unit?
+-    ArrayList<File> files = new ArrayList<>();
++    ArrayList<File> files = new ArrayList<File>();
+ 
+     public List<File> getFiles() {
+         return files;
+     }
+ 
+     public List<File> getClassStubs() {
+-        List<File> classStubs = new ArrayList<>(classes.size());
++        List<File> classStubs = new ArrayList<File>(classes.size());
+         for (Class cls : classes) {
+             assert(cls.file.isClassStub());
+             classStubs.add(cls.file);
+@@ -749,7 +749,7 @@ class Package {
+         int modtime = NO_MODTIME;
+         int options = 0;  // random flag bits, such as deflate_hint
+         Class stubClass;  // if this is a stub, here's the class
+-        ArrayList<byte[]> prepend = new ArrayList<>();  // list of byte[]
++        ArrayList<byte[]> prepend = new ArrayList<byte[]>();  // list of byte[]
+         java.io.ByteArrayOutputStream append = new ByteArrayOutputStream();
+ 
+         File(Utf8Entry name) {
+@@ -852,7 +852,7 @@ class Package {
+         public InputStream getInputStream() {
+             InputStream in = new ByteArrayInputStream(append.toByteArray());
+             if (prepend.isEmpty())  return in;
+-            List<InputStream> isa = new ArrayList<>(prepend.size()+1);
++            List<InputStream> isa = new ArrayList<InputStream>(prepend.size()+1);
+             for (byte[] bytes : prepend) {
+                 isa.add(new ByteArrayInputStream(bytes));
+             }
+@@ -888,7 +888,7 @@ class Package {
+     }
+ 
+     // Is there a globally declared table of inner classes?
+-    List<InnerClass> allInnerClasses = new ArrayList<>();
++    List<InnerClass> allInnerClasses = new ArrayList<InnerClass>();
+     Map<ClassEntry, InnerClass>   allInnerClassesByThis;
+ 
+     public
+@@ -903,7 +903,7 @@ class Package {
+         allInnerClasses.addAll(ics);
+ 
+         // Make an index:
+-        allInnerClassesByThis = new HashMap<>(allInnerClasses.size());
++        allInnerClassesByThis = new HashMap<ClassEntry,InnerClass>(allInnerClasses.size());
+         for (InnerClass ic : allInnerClasses) {
+             Object pic = allInnerClassesByThis.put(ic.thisClass, ic);
+             assert(pic == null);  // caller must ensure key uniqueness!
+@@ -1295,7 +1295,7 @@ class Package {
+ 
+     // Use this before writing the class files.
+     void ensureAllClassFiles() {
+-        Set<File> fileSet = new HashSet<>(files);
++        Set<File> fileSet = new HashSet<File>(files);
+         for (Class cls : classes) {
+             // Add to the end of ths list:
+             if (!fileSet.contains(cls.file))
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java.sav	2011-07-29 14:27:01.426625653 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	2011-07-29 14:27:07.768531528 -0400
+@@ -686,7 +686,7 @@ class PackageReader extends BandStructur
+         cp_Signature_classes.expectLength(getIntTotal(numSigClasses));
+         cp_Signature_classes.readFrom(in);
+         cp_Signature_classes.setIndex(getCPIndex(CONSTANT_Class));
+-        utf8Signatures = new HashMap<>();
++        utf8Signatures = new HashMap<Utf8Entry, SignatureEntry>();
+         for (int i = 0; i < cpMap.length; i++) {
+             Utf8Entry formRef = (Utf8Entry) cp_Signature_form.getRef();
+             ClassEntry[] classRefs = new ClassEntry[numSigClasses[i]];
+@@ -892,7 +892,7 @@ class PackageReader extends BandStructur
+         ic_name.expectLength(longICCount);
+         ic_name.readFrom(in);
+         ic_flags.resetForSecondPass();
+-        List<InnerClass> icList = new ArrayList<>(numInnerClasses);
++        List<InnerClass> icList = new ArrayList<InnerClass>(numInnerClasses);
+         for (int i = 0; i < numInnerClasses; i++) {
+             int flags = ic_flags.getInt();
+             boolean longForm = (flags & ACC_IC_LONG_FORM) != 0;
+@@ -934,7 +934,7 @@ class PackageReader extends BandStructur
+ 
+     void readLocalInnerClasses(Class cls) throws IOException {
+         int nc = class_InnerClasses_N.getInt();
+-        List<InnerClass> localICs = new ArrayList<>(nc);
++        List<InnerClass> localICs = new ArrayList<InnerClass>(nc);
+         for (int i = 0; i < nc; i++) {
+             ClassEntry thisClass = (ClassEntry) class_InnerClasses_RC.getRef();
+             int        flags     =              class_InnerClasses_F.getInt();
+@@ -1062,7 +1062,7 @@ class PackageReader extends BandStructur
+ 
+     Entry[] reconstructLocalCPMap(Class cls) {
+         Set<Entry> ldcRefs = ldcRefMap.get(cls);
+-        Set<Entry> cpRefs = new HashSet<>();
++        Set<Entry> cpRefs = new HashSet<Entry>();
+ 
+         // look for constant pool entries:
+         cls.visitRefs(VRM_CLASSIC, cpRefs);
+@@ -1167,7 +1167,7 @@ class PackageReader extends BandStructur
+         method_descr.expectLength(totalNM);
+         if (verbose > 1)  Utils.log.fine("expecting #fields="+totalNF+" and #methods="+totalNM+" in #classes="+numClasses);
+ 
+-        List<Class.Field> fields = new ArrayList<>(totalNF);
++        List<Class.Field> fields = new ArrayList<Class.Field>(totalNF);
+         field_descr.readFrom(in);
+         for (int i = 0; i < classes.length; i++) {
+             Class c = classes[i];
+@@ -1183,7 +1183,7 @@ class PackageReader extends BandStructur
+         countAndReadAttrs(ATTR_CONTEXT_FIELD, fields);
+         fields = null;  // release to GC
+ 
+-        List<Class.Method> methods = new ArrayList<>(totalNM);
++        List<Class.Method> methods = new ArrayList<Class.Method>(totalNM);
+         method_descr.readFrom(in);
+         for (int i = 0; i < classes.length; i++) {
+             Class c = classes[i];
+@@ -1206,10 +1206,10 @@ class PackageReader extends BandStructur
+ 
+     Code[] allCodes;
+     List<Code> codesWithFlags;
+-    Map<Class, Set<Entry>> ldcRefMap = new HashMap<>();
++    Map<Class, Set<Entry>> ldcRefMap = new HashMap<Class, Set<Entry>>();
+ 
+     Code[] buildCodeAttrs(List<Class.Method> methods) {
+-        List<Code> codes = new ArrayList<>(methods.size());
++        List<Code> codes = new ArrayList<Code>(methods.size());
+         for (Class.Method m : methods) {
+             if (m.getAttribute(attrCodeEmpty) != null) {
+                 m.code = new Code(m);
+@@ -1233,7 +1233,7 @@ class PackageReader extends BandStructur
+         boolean attrsOK = testBit(archiveOptions, AO_HAVE_ALL_CODE_FLAGS);
+         code_headers.expectLength(allCodes.length);
+         code_headers.readFrom(in);
+-        List<Code> longCodes = new ArrayList<>(allCodes.length / 10);
++        List<Code> longCodes = new ArrayList<Code>(allCodes.length / 10);
+         for (int i = 0; i < allCodes.length; i++) {
+             Code c = allCodes[i];
+             int sc = code_headers.getByte();
+@@ -1472,7 +1472,7 @@ class PackageReader extends BandStructur
+                 bits -= (1L<<ai);
+                 nfa += 1;
+             }
+-            List<Attribute> ha = new ArrayList<>(nfa + noa);
++            List<Attribute> ha = new ArrayList<Attribute>(nfa + noa);
+             h.attributes = ha;
+             bits = attrBits;  // iterate again
+             for (int ai = 0; bits != 0; ai++) {
+@@ -1596,7 +1596,7 @@ class PackageReader extends BandStructur
+     void readAttrs(int ctype, Collection<? extends Attribute.Holder> holders)
+             throws IOException {
+         // Decode band values into attributes.
+-        Set<Attribute.Layout> sawDefs = new HashSet<>();
++        Set<Attribute.Layout> sawDefs = new HashSet<Attribute.Layout>();
+         ByteArrayOutputStream buf = new ByteArrayOutputStream();
+         for (final Attribute.Holder h : holders) {
+             if (h.attributes == null)  continue;
+@@ -1799,7 +1799,7 @@ class PackageReader extends BandStructur
+         // scratch buffer for collecting code::
+         byte[] buf = new byte[1<<12];
+         // record of all switch opcodes (these are variable-length)
+-        List<Integer> allSwitchOps = new ArrayList<>();
++        List<Integer> allSwitchOps = new ArrayList<Integer>();
+         for (int k = 0; k < allCodes.length; k++) {
+             Code c = allCodes[k];
+         scanOneMethod:
+@@ -1915,7 +1915,7 @@ class PackageReader extends BandStructur
+ 
+             Set<Entry> ldcRefSet = ldcRefMap.get(curClass);
+             if (ldcRefSet == null)
+-                ldcRefMap.put(curClass, ldcRefSet = new HashSet<>());
++                ldcRefMap.put(curClass, ldcRefSet = new HashSet<Entry>());
+ 
+             ClassEntry thisClass  = curClass.thisClass;
+             ClassEntry superClass = curClass.superClass;
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java.sav	2011-07-29 14:27:01.427625638 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	2011-07-29 14:27:07.769531513 -0400
+@@ -116,7 +116,7 @@ class PackageWriter extends BandStructur
+     int[][]     attrCounts;       // count attr. occurences
+ 
+     void setup() {
+-        requiredEntries = new HashSet<>();
++        requiredEntries = new HashSet<Entry>();
+         setArchiveOptions();
+         trimClassAttributes();
+         collectAttributeLayouts();
+@@ -176,7 +176,7 @@ class PackageWriter extends BandStructur
+             }
+         }
+         // Decide on default version number (majority rule).
+-        Map<Integer, int[]> verCounts = new HashMap<>();
++        Map<Integer, int[]> verCounts = new HashMap<Integer, int[]>();
+         int bestCount = 0;
+         int bestVersion = -1;
+         for (Class cls : pkg.classes) {
+@@ -728,7 +728,7 @@ class PackageWriter extends BandStructur
+ 
+     void collectAttributeLayouts() {
+         maxFlags = new int[ATTR_CONTEXT_LIMIT];
+-        allLayouts = new FixedList<>(ATTR_CONTEXT_LIMIT);
++        allLayouts = new FixedList<Map<Attribute.Layout,int[]>>(ATTR_CONTEXT_LIMIT);
+         for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) {
+             allLayouts.set(i, new HashMap<Attribute.Layout, int[]>());
+         }
+@@ -773,7 +773,7 @@ class PackageWriter extends BandStructur
+         }
+         // Collect counts for both predefs. and custom defs.
+         // Decide on custom, local attribute definitions.
+-        backCountTable = new HashMap<>();
++        backCountTable = new HashMap<Attribute.Layout, int[]>();
+         attrCounts = new int[ATTR_CONTEXT_LIMIT][];
+         for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) {
+             // Now the remaining defs in allLayouts[i] need attr. indexes.
+@@ -888,7 +888,7 @@ class PackageWriter extends BandStructur
+     Attribute.Layout[] attrDefsWritten;
+ 
+     void writeAttrDefs() throws IOException {
+-        List<Object[]> defList = new ArrayList<>();
++        List<Object[]> defList = new ArrayList<Object[]>();
+         for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) {
+             int limit = attrDefs.get(i).size();
+             for (int j = 0; j < limit; j++) {
+@@ -1005,7 +1005,7 @@ class PackageWriter extends BandStructur
+     void collectInnerClasses() {
+         // Capture inner classes, removing them from individual classes.
+         // Irregular inner classes must stay local, though.
+-        Map<ClassEntry, InnerClass> allICMap = new HashMap<>();
++        Map<ClassEntry, InnerClass> allICMap = new HashMap<ClassEntry, InnerClass>();
+         // First, collect a consistent global set.
+         for (Class cls : pkg.classes) {
+             if (!cls.hasInnerClasses())  continue;
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java.sav	2011-07-29 12:21:02.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java	2011-07-29 14:27:07.769531513 -0400
+@@ -181,8 +181,8 @@ public class PackerImpl  extends TLGloba
+         final Map<Attribute.Layout, Attribute> attrDefs;
+         final Map<Attribute.Layout, String> attrCommands;
+         {
+-            Map<Attribute.Layout, Attribute> lattrDefs   = new HashMap<>();
+-            Map<Attribute.Layout, String>  lattrCommands = new HashMap<>();
++            Map<Attribute.Layout, Attribute> lattrDefs   = new HashMap<Attribute.Layout, Attribute>();
++            Map<Attribute.Layout, String>  lattrCommands = new HashMap<Attribute.Layout, String>();
+             String[] keys = {
+                 Pack200.Packer.CLASS_ATTRIBUTE_PFX,
+                 Pack200.Packer.FIELD_ATTRIBUTE_PFX,
+@@ -590,7 +590,7 @@ public class PackerImpl  extends TLGloba
+                 assert(pkg.files.containsAll(pkg.getClassStubs()));
+                 // Order of stubs in file list must agree with classes.
+                 List<Package.File> res = pkg.files;
+-                assert((res = new ArrayList<>(pkg.files))
++                assert((res = new ArrayList<Package.File>(pkg.files))
+                        .retainAll(pkg.getClassStubs()) || true);
+                 assert(res.equals(pkg.getClassStubs()));
+             }
+@@ -623,7 +623,7 @@ public class PackerImpl  extends TLGloba
+ 
+         List<InFile> scanJar(JarFile jf) throws IOException {
+             // Collect jar entries, preserving order.
+-            List<InFile> inFiles = new ArrayList<>();
++            List<InFile> inFiles = new ArrayList<InFile>();
+             try {
+                 for (JarEntry je : Collections.list(jf.entries())) {
+                     InFile inFile = new InFile(jf, je);
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java.sav	2011-07-29 12:21:02.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java	2011-07-29 14:27:07.769531513 -0400
+@@ -309,7 +309,7 @@ class PopulationCoding implements Coding
+         // As each new value is added, we assert that the value
+         // was not already in the set.
+         Set<Integer> uniqueValuesForDebug = null;
+-        assert((uniqueValuesForDebug = new HashSet<>()) != null);
++        assert((uniqueValuesForDebug = new HashSet<Integer>()) != null);
+         int fillp = 1;
+         maxForDebug += fillp;
+         int min = Integer.MIN_VALUE;  // farthest from the center
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java.sav	2011-07-29 14:27:01.427625638 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	2011-07-29 14:27:07.770531498 -0400
+@@ -47,8 +47,8 @@ import java.util.jar.Pack200;
+  */
+ 
+ final class PropMap implements SortedMap<String, String>  {
+-    private final TreeMap<String, String> theMap = new TreeMap<>();;
+-    private final List<PropertyChangeListener> listenerList = new ArrayList<>(1);
++    private final TreeMap<String, String> theMap = new TreeMap<String, String>();;
++    private final List<PropertyChangeListener> listenerList = new ArrayList<PropertyChangeListener>(1);
+ 
+     void addListener(PropertyChangeListener listener) {
+         listenerList.add(listener);
+@@ -187,7 +187,7 @@ final class PropMap implements SortedMap
+     // Get sequence of props for "prefix", and "prefix.*".
+     List<String> getProperties(String prefix) {
+         Collection<String> values = prefixMap(prefix).values();
+-        List<String> res = new ArrayList<>(values.size());
++        List<String> res = new ArrayList<String>(values.size());
+         res.addAll(values);
+         while (res.remove(null));
+         return res;
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java.sav	2011-07-29 12:21:02.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java	2011-07-29 14:27:07.770531498 -0400
+@@ -58,12 +58,12 @@ class TLGlobals {
+     private final Map<String, MemberEntry> memberEntries;
+ 
+     TLGlobals() {
+-        utf8Entries = new HashMap<>();
+-        classEntries = new HashMap<>();
+-        literalEntries = new HashMap<>();
+-        signatureEntries = new HashMap<>();
+-        descriptorEntries = new HashMap<>();
+-        memberEntries = new HashMap<>();
++        utf8Entries = new HashMap<String,Utf8Entry>();
++        classEntries = new HashMap<String,ClassEntry>();
++        literalEntries = new HashMap<Object,LiteralEntry>();
++        signatureEntries = new HashMap<String,SignatureEntry>();
++        descriptorEntries = new HashMap<String,DescriptorEntry>();
++        memberEntries = new HashMap<String,MemberEntry>();
+         props = new PropMap();
+     }
+ 
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java.sav	2011-07-29 14:27:01.427625638 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	2011-07-29 14:27:07.770531498 -0400
+@@ -232,7 +232,7 @@ public class UnpackerImpl extends TLGlob
+             props.setProperty(java.util.jar.Pack200.Unpacker.PROGRESS,"50");
+             pkg.ensureAllClassFiles();
+             // Now write out the files.
+-            Set<Package.Class> classesToWrite = new HashSet<>(pkg.getClasses());
++            Set<Package.Class> classesToWrite = new HashSet<Package.Class>(pkg.getClasses());
+             for (Package.File file : pkg.getFiles()) {
+                 String name = file.nameString;
+                 JarEntry je = new JarEntry(Utils.getJarEntryName(name));
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java.sav	2011-07-29 14:27:01.427625638 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	2011-07-29 14:27:07.770531498 -0400
+@@ -132,7 +132,7 @@ class Utils {
+     // Keep a TLS point to the global data and environment.
+     // This makes it simpler to supply environmental options
+     // to the engine code, especially the native code.
+-    static final ThreadLocal<TLGlobals> currentInstance = new ThreadLocal<>();
++    static final ThreadLocal<TLGlobals> currentInstance = new ThreadLocal<TLGlobals>();
+ 
+     // convenience methods to access the TL globals
+     static TLGlobals getTLGlobals() {
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/jndi/dns/DnsContextFactory.java.sav openjdk-boot/jdk/src/share/classes/com/sun/jndi/dns/DnsContextFactory.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/jndi/dns/DnsContextFactory.java.sav	2011-07-29 12:21:04.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/jndi/dns/DnsContextFactory.java	2011-07-29 14:27:07.770531498 -0400
+@@ -135,7 +135,7 @@ public class DnsContextFactory implement
+             throw new ConfigurationException("DNS pseudo-URL required");
+         }
+ 
+-        List<String> servers = new ArrayList<>();
++        List<String> servers = new ArrayList<String>();
+ 
+         for (int i = 0; i < urls.length; i++) {
+             String server = urls[i].getHost();
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java.sav openjdk-boot/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java.sav	2011-07-29 12:21:06.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java	2011-07-29 14:27:07.773531453 -0400
+@@ -1284,7 +1284,7 @@ public class CachedRowSetImpl extends Ba
+      */
+     public Collection<?> toCollection() throws SQLException {
+ 
+-        TreeMap<Integer, Object> tMap = new TreeMap<>();
++        TreeMap<Integer, Object> tMap = new TreeMap<Integer, Object>();
+ 
+         for (int i = 0; i<numRows; i++) {
+             tMap.put(Integer.valueOf(i), rvh.get(i));
+@@ -1314,7 +1314,7 @@ public class CachedRowSetImpl extends Ba
+     public Collection<?> toCollection(int column) throws SQLException {
+ 
+         int nRows = numRows;
+-        Vector<Object> vec = new Vector<>(nRows);
++        Vector<Object> vec = new Vector<Object>(nRows);
+ 
+         // create a copy
+         CachedRowSetImpl crsTemp;
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java.sav openjdk-boot/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java.sav	2011-07-29 12:21:06.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java	2011-07-29 14:27:07.774531438 -0400
+@@ -222,7 +222,7 @@ public class JoinRowSetImpl extends WebR
+            // either of the setter methods have been set.
+            if(boolColId){
+               //
+-              ArrayList<Integer> indices = new ArrayList<>();
++              ArrayList<Integer> indices = new ArrayList<Integer>();
+               for(int i=0;i<cRowset.getMatchColumnNames().length;i++) {
+                   if( (strMatchKey = (cRowset.getMatchColumnNames())[i]) != null) {
+                       iMatchKey = cRowset.findColumn(strMatchKey);
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java.sav openjdk-boot/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java.sav	2011-07-29 12:21:06.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java	2011-07-29 14:27:07.774531438 -0400
+@@ -99,10 +99,10 @@ public class DialogCallbackHandler imple
+         throws UnsupportedCallbackException
+     {
+         /* Collect messages to display in the dialog */
+-        final List<Object> messages = new ArrayList<>(3);
++        final List<Object> messages = new ArrayList<Object>(3);
+ 
+         /* Collection actions to perform if the user clicks OK */
+-        final List<Action> okActions = new ArrayList<>(2);
++        final List<Action> okActions = new ArrayList<Action>(2);
+ 
+         ConfirmationInfo confirmation = new ConfirmationInfo();
+ 
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java.sav openjdk-boot/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java.sav	2011-07-29 12:21:06.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java	2011-07-29 14:27:07.774531438 -0400
+@@ -152,7 +152,7 @@ public class ConfigFile extends javax.se
+ 
+         // new configuration
+         HashMap<String, LinkedList<AppConfigurationEntry>> newConfig =
+-                new HashMap<>();
++            new HashMap<String, LinkedList<AppConfigurationEntry>>();
+ 
+         if (url != null) {
+ 
+@@ -392,7 +392,7 @@ public class ConfigFile extends javax.se
+         String moduleClass;
+         String sflag;
+         AppConfigurationEntry.LoginModuleControlFlag controlFlag;
+-        LinkedList<AppConfigurationEntry> configEntries = new LinkedList<>();
++        LinkedList<AppConfigurationEntry> configEntries = new LinkedList<AppConfigurationEntry>();
+ 
+         // application name
+         appName = st.sval;
+@@ -432,7 +432,7 @@ public class ConfigFile extends javax.se
+             }
+ 
+             // get the args
+-            HashMap<String, String> options = new HashMap<>();
++            HashMap<String, String> options = new HashMap<String, String>();
+             String key;
+             String value;
+             while (peek(";") == false) {
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java.sav openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java.sav	2011-07-29 12:21:06.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java	2011-07-29 14:27:07.775531424 -0400
+@@ -184,7 +184,7 @@ public class JndiLoginModule implements 
+     private UnixNumericUserPrincipal UIDPrincipal;
+     private UnixNumericGroupPrincipal GIDPrincipal;
+     private LinkedList<UnixNumericGroupPrincipal> supplementaryGroups =
+-                                new LinkedList<>();
++                                new LinkedList<UnixNumericGroupPrincipal>();
+ 
+     // initial state
+     private Subject subject;
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java.sav openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java.sav	2011-07-29 12:21:06.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java	2011-07-29 14:27:07.775531424 -0400
+@@ -658,7 +658,7 @@ public class KeyStoreLoginModule impleme
+                 throw new FailedLoginException(
+                     "Unable to find X.509 certificate chain in keystore");
+             } else {
+-                LinkedList<Certificate> certList = new LinkedList<>();
++                LinkedList<Certificate> certList = new LinkedList<Certificate>();
+                 for (int i=0; i < fromKeyStore.length; i++) {
+                     certList.add(fromKeyStore[i]);
+                 }
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java.sav openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java.sav	2011-07-29 12:21:06.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java	2011-07-29 14:27:07.775531424 -0400
+@@ -76,7 +76,7 @@ public class SolarisLoginModule implemen
+     private SolarisNumericUserPrincipal UIDPrincipal;
+     private SolarisNumericGroupPrincipal GIDPrincipal;
+     private LinkedList<SolarisNumericGroupPrincipal> supplementaryGroups =
+-                new LinkedList<>();
++                new LinkedList<SolarisNumericGroupPrincipal>();
+ 
+     /**
+      * Initialize this <code>LoginModule</code>.
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java.sav openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java.sav	2011-07-29 12:21:06.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java	2011-07-29 14:27:07.775531424 -0400
+@@ -70,7 +70,7 @@ public class UnixLoginModule implements 
+     private UnixNumericUserPrincipal UIDPrincipal;
+     private UnixNumericGroupPrincipal GIDPrincipal;
+     private LinkedList<UnixNumericGroupPrincipal> supplementaryGroups =
+-                new LinkedList<>();
++                new LinkedList<UnixNumericGroupPrincipal>();
+ 
+     /**
+      * Initialize this <code>LoginModule</code>.
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java.sav openjdk-boot/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java.sav	2011-07-29 12:21:06.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java	2011-07-29 14:27:07.775531424 -0400
+@@ -1180,7 +1180,7 @@ public class PolicyFile extends javax.se
+             // Done
+             return certs;
+ 
+-        ArrayList<Certificate> userCertList = new ArrayList<>();
++        ArrayList<Certificate> userCertList = new ArrayList<Certificate>();
+         i = 0;
+         while (i < certs.length) {
+             userCertList.add(certs[i]);
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java.sav openjdk-boot/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java.sav	2011-07-29 14:27:35.063126457 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java	2011-07-29 14:27:43.454001938 -0400
+@@ -50,7 +50,7 @@ public class EventThread extends Thread 
+ 
+     // Maps ThreadReference to ThreadTrace instances
+     private Map<ThreadReference, ThreadTrace> traceMap =
+-       new HashMap<>();
++       new HashMap<ThreadReference, ThreadTrace>();
+ 
+     EventThread(VirtualMachine vm, String[] excludes, PrintWriter writer) {
+         super("event-handler");
+diff -up openjdk-boot/jdk/src/share/classes/java/io/DeleteOnExitHook.java.sav openjdk-boot/jdk/src/share/classes/java/io/DeleteOnExitHook.java
+--- openjdk-boot/jdk/src/share/classes/java/io/DeleteOnExitHook.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/io/DeleteOnExitHook.java	2011-07-29 14:27:07.775531424 -0400
+@@ -34,7 +34,7 @@ import java.io.File;
+  */
+ 
+ class DeleteOnExitHook {
+-    private static LinkedHashSet<String> files = new LinkedHashSet<>();
++    private static LinkedHashSet<String> files = new LinkedHashSet<String>();
+     static {
+         // DeleteOnExitHook must be the last shutdown hook to be invoked.
+         // Application shutdown hooks may add the first file to the
+@@ -71,7 +71,7 @@ class DeleteOnExitHook {
+             files = null;
+         }
+ 
+-        ArrayList<String> toBeDeleted = new ArrayList<>(theFiles);
++        ArrayList<String> toBeDeleted = new ArrayList<String>(theFiles);
+ 
+         // reverse the list to maintain previous jdk deletion order.
+         // Last in first deleted.
+diff -up openjdk-boot/jdk/src/share/classes/java/io/FileInputStream.java.sav openjdk-boot/jdk/src/share/classes/java/io/FileInputStream.java
+--- openjdk-boot/jdk/src/share/classes/java/io/FileInputStream.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/io/FileInputStream.java	2011-07-29 14:27:07.775531424 -0400
+@@ -57,7 +57,7 @@ class FileInputStream extends InputStrea
+     private volatile boolean closed = false;
+ 
+     private static final ThreadLocal<Boolean> runningFinalize =
+-        new ThreadLocal<>();
++        new ThreadLocal<Boolean>();
+ 
+     private static boolean isRunningFinalize() {
+         Boolean val;
+diff -up openjdk-boot/jdk/src/share/classes/java/io/File.java.sav openjdk-boot/jdk/src/share/classes/java/io/File.java
+--- openjdk-boot/jdk/src/share/classes/java/io/File.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/io/File.java	2011-07-29 14:27:07.776531410 -0400
+@@ -1082,7 +1082,7 @@ public class File
+         if ((names == null) || (filter == null)) {
+             return names;
+         }
+-        List<String> v = new ArrayList<>();
++        List<String> v = new ArrayList<String>();
+         for (int i = 0 ; i < names.length ; i++) {
+             if (filter.accept(this, names[i])) {
+                 v.add(names[i]);
+@@ -1173,7 +1173,7 @@ public class File
+     public File[] listFiles(FilenameFilter filter) {
+         String ss[] = list();
+         if (ss == null) return null;
+-        ArrayList<File> files = new ArrayList<>();
++        ArrayList<File> files = new ArrayList<File>();
+         for (String s : ss)
+             if ((filter == null) || filter.accept(this, s))
+                 files.add(new File(s, this));
+@@ -1211,7 +1211,7 @@ public class File
+     public File[] listFiles(FileFilter filter) {
+         String ss[] = list();
+         if (ss == null) return null;
+-        ArrayList<File> files = new ArrayList<>();
++        ArrayList<File> files = new ArrayList<File>();
+         for (String s : ss) {
+             File f = new File(s, this);
+             if ((filter == null) || filter.accept(f))
+diff -up openjdk-boot/jdk/src/share/classes/java/io/FileOutputStream.java.sav openjdk-boot/jdk/src/share/classes/java/io/FileOutputStream.java
+--- openjdk-boot/jdk/src/share/classes/java/io/FileOutputStream.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/io/FileOutputStream.java	2011-07-29 14:27:07.776531410 -0400
+@@ -70,7 +70,7 @@ class FileOutputStream extends OutputStr
+     private final Object closeLock = new Object();
+     private volatile boolean closed = false;
+     private static final ThreadLocal<Boolean> runningFinalize =
+-        new ThreadLocal<>();
++        new ThreadLocal<Boolean>();
+ 
+     private static boolean isRunningFinalize() {
+         Boolean val;
+diff -up openjdk-boot/jdk/src/share/classes/java/io/FilePermission.java.sav openjdk-boot/jdk/src/share/classes/java/io/FilePermission.java
+--- openjdk-boot/jdk/src/share/classes/java/io/FilePermission.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/io/FilePermission.java	2011-07-29 14:27:07.776531410 -0400
+@@ -725,7 +725,7 @@ implements Serializable {
+      */
+ 
+     public FilePermissionCollection() {
+-        perms = new ArrayList<>();
++        perms = new ArrayList<Permission>();
+     }
+ 
+     /**
+@@ -830,7 +830,7 @@ implements Serializable {
+         // Don't call out.defaultWriteObject()
+ 
+         // Write out Vector
+-        Vector<Permission> permissions = new Vector<>(perms.size());
++        Vector<Permission> permissions = new Vector<Permission>(perms.size());
+         synchronized (this) {
+             permissions.addAll(perms);
+         }
+@@ -853,7 +853,7 @@ implements Serializable {
+ 
+         // Get the one we want
+         Vector<Permission> permissions = (Vector<Permission>)gfields.get("permissions", null);
+-        perms = new ArrayList<>(permissions.size());
++        perms = new ArrayList<Permission>(permissions.size());
+         perms.addAll(permissions);
+     }
+ }
+diff -up openjdk-boot/jdk/src/share/classes/java/io/ObjectInputStream.java.sav openjdk-boot/jdk/src/share/classes/java/io/ObjectInputStream.java
+--- openjdk-boot/jdk/src/share/classes/java/io/ObjectInputStream.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/io/ObjectInputStream.java	2011-07-29 14:27:07.776531410 -0400
+@@ -213,7 +213,7 @@ public class ObjectInputStream
+ 
+     /** table mapping primitive type names to corresponding class objects */
+     private static final HashMap<String, Class<?>> primClasses
+-        = new HashMap<>(8, 1.0F);
++        = new HashMap<String, Class<?>>(8, 1.0F);
+     static {
+         primClasses.put("boolean", boolean.class);
+         primClasses.put("byte", byte.class);
+@@ -229,11 +229,11 @@ public class ObjectInputStream
+     private static class Caches {
+         /** cache of subclass security audit results */
+         static final ConcurrentMap<WeakClassKey,Boolean> subclassAudits =
+-            new ConcurrentHashMap<>();
++            new ConcurrentHashMap<WeakClassKey,Boolean>();
+ 
+         /** queue for WeakReferences to audited subclasses */
+         static final ReferenceQueue<Class<?>> subclassAuditsQueue =
+-            new ReferenceQueue<>();
++            new ReferenceQueue<Class<?>>();
+     }
+ 
+     /** filter stream for handling block data conversion */
+diff -up openjdk-boot/jdk/src/share/classes/java/io/ObjectOutputStream.java.sav openjdk-boot/jdk/src/share/classes/java/io/ObjectOutputStream.java
+--- openjdk-boot/jdk/src/share/classes/java/io/ObjectOutputStream.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/io/ObjectOutputStream.java	2011-07-29 14:27:07.776531410 -0400
+@@ -165,11 +165,11 @@ public class ObjectOutputStream
+     private static class Caches {
+         /** cache of subclass security audit results */
+         static final ConcurrentMap<WeakClassKey,Boolean> subclassAudits =
+-            new ConcurrentHashMap<>();
++            new ConcurrentHashMap<WeakClassKey,Boolean>();
+ 
+         /** queue for WeakReferences to audited subclasses */
+         static final ReferenceQueue<Class<?>> subclassAuditsQueue =
+-            new ReferenceQueue<>();
++            new ReferenceQueue<Class<?>>();
+     }
+ 
+     /** filter stream for handling block data conversion */
+@@ -2413,7 +2413,7 @@ public class ObjectOutputStream
+         private final List<String> stack;
+ 
+         DebugTraceInfoStack() {
+-            stack = new ArrayList<>();
++            stack = new ArrayList<String>();
+         }
+ 
+         /**
+diff -up openjdk-boot/jdk/src/share/classes/java/io/ObjectStreamClass.java.sav openjdk-boot/jdk/src/share/classes/java/io/ObjectStreamClass.java
+--- openjdk-boot/jdk/src/share/classes/java/io/ObjectStreamClass.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/io/ObjectStreamClass.java	2011-07-29 14:27:07.777531395 -0400
+@@ -84,18 +84,18 @@ public class ObjectStreamClass implement
+     private static class Caches {
+         /** cache mapping local classes -> descriptors */
+         static final ConcurrentMap<WeakClassKey,Reference<?>> localDescs =
+-            new ConcurrentHashMap<>();
++            new ConcurrentHashMap<WeakClassKey,Reference<?>>();
+ 
+         /** cache mapping field group/local desc pairs -> field reflectors */
+         static final ConcurrentMap<FieldReflectorKey,Reference<?>> reflectors =
+-            new ConcurrentHashMap<>();
++            new ConcurrentHashMap<FieldReflectorKey,Reference<?>>();
+ 
+         /** queue for WeakReferences to local classes */
+         private static final ReferenceQueue<Class<?>> localDescsQueue =
+-            new ReferenceQueue<>();
++            new ReferenceQueue<Class<?>>();
+         /** queue for WeakReferences to field reflectors keys */
+         private static final ReferenceQueue<Class<?>> reflectorsQueue =
+-            new ReferenceQueue<>();
++            new ReferenceQueue<Class<?>>();
+     }
+ 
+     /** class associated with this descriptor (if any) */
+@@ -290,7 +290,7 @@ public class ObjectStreamClass implement
+         EntryFuture future = null;
+         if (entry == null) {
+             EntryFuture newEntry = new EntryFuture();
+-            Reference<?> newRef = new SoftReference<>(newEntry);
++            Reference<?> newRef = new SoftReference<EntryFuture>(newEntry);
+             do {
+                 if (ref != null) {
+                     Caches.localDescs.remove(key, ref);
+@@ -1130,7 +1130,7 @@ public class ObjectStreamClass implement
+     private ClassDataSlot[] getClassDataLayout0()
+         throws InvalidClassException
+     {
+-        ArrayList<ClassDataSlot> slots = new ArrayList<>();
++        ArrayList<ClassDataSlot> slots = new ArrayList<ClassDataSlot>();
+         Class<?> start = cl, end = cl;
+ 
+         // locate closest non-serializable superclass
+@@ -1566,7 +1566,7 @@ public class ObjectStreamClass implement
+ 
+         ObjectStreamField[] boundFields =
+             new ObjectStreamField[serialPersistentFields.length];
+-        Set<String> fieldNames = new HashSet<>(serialPersistentFields.length);
++        Set<String> fieldNames = new HashSet<String>(serialPersistentFields.length);
+ 
+         for (int i = 0; i < serialPersistentFields.length; i++) {
+             ObjectStreamField spf = serialPersistentFields[i];
+@@ -1604,7 +1604,7 @@ public class ObjectStreamClass implement
+      */
+     private static ObjectStreamField[] getDefaultSerialFields(Class<?> cl) {
+         Field[] clFields = cl.getDeclaredFields();
+-        ArrayList<ObjectStreamField> list = new ArrayList<>();
++        ArrayList<ObjectStreamField> list = new ArrayList<ObjectStreamField>();
+         int mask = Modifier.STATIC | Modifier.TRANSIENT;
+ 
+         for (int i = 0; i < clFields.length; i++) {
+@@ -1855,8 +1855,8 @@ public class ObjectStreamClass implement
+             writeKeys = new long[nfields];
+             offsets = new int[nfields];
+             typeCodes = new char[nfields];
+-            ArrayList<Class<?>> typeList = new ArrayList<>();
+-            Set<Long> usedKeys = new HashSet<>();
++            ArrayList<Class<?>> typeList = new ArrayList<Class<?>>();
++            Set<Long> usedKeys = new HashSet<Long>();
+ 
+ 
+             for (int i = 0; i < nfields; i++) {
+@@ -2092,7 +2092,7 @@ public class ObjectStreamClass implement
+         EntryFuture future = null;
+         if (entry == null) {
+             EntryFuture newEntry = new EntryFuture();
+-            Reference<?> newRef = new SoftReference<>(newEntry);
++            Reference<?> newRef = new SoftReference<EntryFuture>(newEntry);
+             do {
+                 if (ref != null) {
+                     Caches.reflectors.remove(key, ref);
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java.sav openjdk-boot/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java	2011-07-29 14:27:07.777531395 -0400
+@@ -47,7 +47,7 @@ class ApplicationShutdownHooks {
+                     }
+                 }
+             );
+-            hooks = new IdentityHashMap<>();
++            hooks = new IdentityHashMap<Thread, Thread>();
+         } catch (IllegalStateException e) {
+             // application shutdown hooks cannot be added if
+             // shutdown is in progress.
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/Character.java.sav openjdk-boot/jdk/src/share/classes/java/lang/Character.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/Character.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/Character.java	2011-07-29 14:27:07.777531395 -0400
+@@ -646,7 +646,8 @@ class Character implements java.io.Seria
+      */
+     public static final class UnicodeBlock extends Subset {
+ 
+-        private static Map<String, UnicodeBlock> map = new HashMap<>(256);
++        private static Map<String, UnicodeBlock> map
++            = new HashMap<String, UnicodeBlock>(256);
+ 
+         /**
+          * Creates a UnicodeBlock with the given identifier name.
+@@ -4175,7 +4176,7 @@ class Character implements java.io.Seria
+ 
+         private static HashMap<String, Character.UnicodeScript> aliases;
+         static {
+-            aliases = new HashMap<>(128);
++            aliases = new HashMap<String, UnicodeScript>(128);
+             aliases.put("ARAB", ARABIC);
+             aliases.put("ARMI", IMPERIAL_ARAMAIC);
+             aliases.put("ARMN", ARMENIAN);
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/CharacterName.java.sav openjdk-boot/jdk/src/share/classes/java/lang/CharacterName.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/CharacterName.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/CharacterName.java	2011-07-29 14:27:07.777531395 -0400
+@@ -81,7 +81,7 @@ class CharacterName {
+             } while (cpOff < cpEnd);
+             strPool = new byte[total - cpEnd];
+             dis.readFully(strPool);
+-            refStrPool = new SoftReference<>(strPool);
++            refStrPool = new SoftReference<byte[]>(strPool);
+         } catch (Exception x) {
+             throw new InternalError(x.getMessage());
+         } finally {
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/Class.java.sav openjdk-boot/jdk/src/share/classes/java/lang/Class.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/Class.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/Class.java	2011-07-29 14:27:07.778531380 -0400
+@@ -1308,7 +1308,7 @@ public final
+         return java.security.AccessController.doPrivileged(
+             new java.security.PrivilegedAction<Class<?>[]>() {
+                 public Class[] run() {
+-                    List<Class<?>> list = new ArrayList<>();
++                    List<Class<?>> list = new ArrayList<Class<?>>();
+                     Class<?> currentClass = Class.this;
+                     while (currentClass != null) {
+                         Class<?>[] members = currentClass.getDeclaredClasses();
+@@ -2308,9 +2308,9 @@ public final
+         res = Reflection.filterFields(this, getDeclaredFields0(publicOnly));
+         if (useCaches) {
+             if (publicOnly) {
+-                declaredPublicFields = new SoftReference<>(res);
++                declaredPublicFields = new SoftReference<Field[]>(res);
+             } else {
+-                declaredFields = new SoftReference<>(res);
++                declaredFields = new SoftReference<Field[]>(res);
+             }
+         }
+         return res;
+@@ -2332,9 +2332,9 @@ public final
+ 
+         // No cached value available; compute value recursively.
+         // Traverse in correct order for getField().
+-        List<Field> fields = new ArrayList<>();
++        List<Field> fields = new ArrayList<Field>();
+         if (traversedInterfaces == null) {
+-            traversedInterfaces = new HashSet<>();
++            traversedInterfaces = new HashSet<Class<?>>();
+         }
+ 
+         // Local fields
+@@ -2360,7 +2360,7 @@ public final
+         res = new Field[fields.size()];
+         fields.toArray(res);
+         if (useCaches) {
+-            publicFields = new SoftReference<>(res);
++            publicFields = new SoftReference<Field[]>(res);
+         }
+         return res;
+     }
+@@ -2405,9 +2405,9 @@ public final
+         }
+         if (useCaches) {
+             if (publicOnly) {
+-                publicConstructors = new SoftReference<>(res);
++                publicConstructors = new SoftReference<Constructor<T>[]>(res);
+             } else {
+-                declaredConstructors = new SoftReference<>(res);
++                declaredConstructors = new SoftReference<Constructor<T>[]>(res);
+             }
+         }
+         return res;
+@@ -2442,9 +2442,9 @@ public final
+         res = Reflection.filterMethods(this, getDeclaredMethods0(publicOnly));
+         if (useCaches) {
+             if (publicOnly) {
+-                declaredPublicMethods = new SoftReference<>(res);
++                declaredPublicMethods = new SoftReference<Method[]>(res);
+             } else {
+-                declaredMethods = new SoftReference<>(res);
++                declaredMethods = new SoftReference<Method[]>(res);
+             }
+         }
+         return res;
+@@ -2600,7 +2600,7 @@ public final
+         methods.compactAndTrim();
+         res = methods.getArray();
+         if (useCaches) {
+-            publicMethods = new SoftReference<>(res);
++            publicMethods = new SoftReference<Method[]>(res);
+         }
+         return res;
+     }
+@@ -2979,7 +2979,7 @@ public final
+             if (universe == null)
+                 throw new IllegalArgumentException(
+                     getName() + " is not an enum type");
+-            Map<String, T> m = new HashMap<>(2 * universe.length);
++            Map<String, T> m = new HashMap<String, T>(2 * universe.length);
+             for (T constant : universe)
+                 m.put(((Enum<?>)constant).name(), constant);
+             enumConstantDirectory = m;
+@@ -3092,7 +3092,7 @@ public final
+         if (superClass == null) {
+             annotations = declaredAnnotations;
+         } else {
+-            annotations = new HashMap<>();
++            annotations = new HashMap<Class<? extends Annotation>, Annotation>();
+             superClass.initAnnotationsIfNecessary();
+             for (Map.Entry<Class<? extends Annotation>, Annotation> e : superClass.annotations.entrySet()) {
+                 Class<? extends Annotation> annotationClass = e.getKey();
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/ClassLoader.java.sav openjdk-boot/jdk/src/share/classes/java/lang/ClassLoader.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/ClassLoader.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/ClassLoader.java	2011-07-29 14:27:07.778531380 -0400
+@@ -246,7 +246,7 @@ public abstract class ClassLoader {
+ 
+     // The classes loaded by this class loader. The only purpose of this table
+     // is to keep the classes from being GC'ed until the loader is GC'ed.
+-    private final Vector<Class<?>> classes = new Vector<>();
++    private final Vector<Class<?>> classes = new Vector<Class<?>>();
+ 
+     // The "default" domain. Set as the default ProtectionDomain on newly
+     // created classes.
+@@ -265,7 +265,8 @@ public abstract class ClassLoader {
+     // The packages defined in this class loader.  Each package name is mapped
+     // to its corresponding Package object.
+     // @GuardedBy("itself")
+-    private final HashMap<String, Package> packages = new HashMap<>();
++    private final HashMap<String, Package> packages =
++        new HashMap<String, Package>();
+ 
+     private static Void checkCreateClassLoader() {
+         SecurityManager security = System.getSecurityManager();
+@@ -278,16 +279,16 @@ public abstract class ClassLoader {
+     private ClassLoader(Void unused, ClassLoader parent) {
+         this.parent = parent;
+         if (ParallelLoaders.isRegistered(this.getClass())) {
+-            parallelLockMap = new ConcurrentHashMap<>();
+-            package2certs = new ConcurrentHashMap<>();
++            parallelLockMap = new ConcurrentHashMap<String, Object>();
++            package2certs = new ConcurrentHashMap<String, Certificate[]>();
+             domains =
+                 Collections.synchronizedSet(new HashSet<ProtectionDomain>());
+             assertionLock = new Object();
+         } else {
+             // no finer-grained lock; lock on the classloader instance
+             parallelLockMap = null;
+-            package2certs = new Hashtable<>();
+-            domains = new HashSet<>();
++            package2certs = new Hashtable<String, Certificate[]>();
++            domains = new HashSet<ProtectionDomain>();
+             assertionLock = this;
+         }
+     }
+@@ -1175,7 +1176,7 @@ public abstract class ClassLoader {
+         }
+         tmp[1] = findResources(name);
+ 
+-        return new CompoundEnumeration<>(tmp);
++        return new CompoundEnumeration<URL>(tmp);
+     }
+ 
+     /**
+@@ -1657,7 +1658,7 @@ public abstract class ClassLoader {
+     protected Package[] getPackages() {
+         Map<String, Package> map;
+         synchronized (packages) {
+-            map = new HashMap<>(packages);
++            map = new HashMap<String, Package>(packages);
+         }
+         Package[] pkgs;
+         if (parent != null) {
+@@ -1764,17 +1765,20 @@ public abstract class ClassLoader {
+     }
+ 
+     // All native library names we've loaded.
+-    private static Vector<String> loadedLibraryNames = new Vector<>();
++    private static Vector<String> loadedLibraryNames
++        = new Vector<String>();
+ 
+     // Native libraries belonging to system classes.
+     private static Vector<NativeLibrary> systemNativeLibraries
+-        = new Vector<>();
++        = new Vector<NativeLibrary>();
+ 
+     // Native libraries associated with the class loader.
+-    private Vector<NativeLibrary> nativeLibraries = new Vector<>();
++    private Vector<NativeLibrary> nativeLibraries
++        = new Vector<NativeLibrary>();
+ 
+     // native libraries being loaded/unloaded.
+-    private static Stack<NativeLibrary> nativeLibraryContext = new Stack<>();
++    private static Stack<NativeLibrary> nativeLibraryContext
++        = new Stack<NativeLibrary>();
+ 
+     // The paths searched for libraries
+     private static String usr_paths[];
+@@ -2097,8 +2101,8 @@ public abstract class ClassLoader {
+          * them to empty maps, effectively ignoring any present settings.
+          */
+         synchronized (assertionLock) {
+-            classAssertionStatus = new HashMap<>();
+-            packageAssertionStatus = new HashMap<>();
++            classAssertionStatus = new HashMap<String, Boolean>();
++            packageAssertionStatus = new HashMap<String, Boolean>();
+             defaultAssertionStatus = false;
+         }
+     }
+@@ -2160,8 +2164,8 @@ public abstract class ClassLoader {
+     private void initializeJavaAssertionMaps() {
+         // assert Thread.holdsLock(assertionLock);
+ 
+-        classAssertionStatus = new HashMap<>();
+-        packageAssertionStatus = new HashMap<>();
++        classAssertionStatus = new HashMap<String, Boolean>();
++        packageAssertionStatus = new HashMap<String, Boolean>();
+         AssertionStatusDirectives directives = retrieveDirectives();
+ 
+         for(int i = 0; i < directives.classes.length; i++)
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java.sav openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java.sav	2011-07-29 12:21:11.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java	2011-07-29 14:27:07.778531380 -0400
+@@ -787,7 +787,7 @@ public class ManagementFactory {
+            getPlatformManagementInterfaces()
+     {
+         Set<Class<? extends PlatformManagedObject>> result =
+-            new TreeSet<>();
++            new TreeSet<Class<? extends PlatformManagedObject>>();
+         for (PlatformComponent component: PlatformComponent.values()) {
+             result.add(component.getMXBeanInterface());
+         }
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/management/PlatformComponent.java.sav openjdk-boot/jdk/src/share/classes/java/lang/management/PlatformComponent.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/management/PlatformComponent.java.sav	2011-07-29 12:21:11.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/management/PlatformComponent.java	2011-07-29 14:27:07.778531380 -0400
+@@ -287,7 +287,7 @@ enum PlatformComponent {
+             List<T> getGcMXBeanList(Class<T> gcMXBeanIntf) {
+         List<GarbageCollectorMXBean> list =
+             ManagementFactoryHelper.getGarbageCollectorMXBeans();
+-        List<T> result = new ArrayList<>(list.size());
++        List<T> result = new ArrayList<T>(list.size());
+         for (GarbageCollectorMXBean m : list) {
+             if (gcMXBeanIntf.isInstance(m)) {
+                 result.add(gcMXBeanIntf.cast(m));
+@@ -342,7 +342,7 @@ enum PlatformComponent {
+     }
+ 
+     private static Set<String> keyProperties(String... keyNames) {
+-        Set<String> set = new HashSet<>();
++        Set<String> set = new HashSet<String>();
+         set.add("type");
+         for (String s : keyNames) {
+             set.add(s);
+@@ -407,7 +407,7 @@ enum PlatformComponent {
+             List<T> getMXBeans(MBeanServerConnection mbs, Class<T> mxbeanInterface)
+         throws java.io.IOException
+     {
+-        List<T> result = new ArrayList<>();
++        List<T> result = new ArrayList<T>();
+         for (ObjectName on : getObjectNames(mbs)) {
+             result.add(ManagementFactory.
+                 newPlatformMXBeanProxy(mbs,
+@@ -438,7 +438,7 @@ enum PlatformComponent {
+     private static Map<String, PlatformComponent> enumMap;
+     private static synchronized void ensureInitialized() {
+         if (enumMap == null) {
+-            enumMap = new HashMap<>();
++            enumMap = new HashMap<String,PlatformComponent>();
+             for (PlatformComponent pc: PlatformComponent.values()) {
+                 // Use String as the key rather than Class<?> to avoid
+                 // causing unnecessary class loading of management interface
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/Package.java.sav openjdk-boot/jdk/src/share/classes/java/lang/Package.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/Package.java.sav	2011-07-29 14:27:01.428625623 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/Package.java	2011-07-29 14:27:07.779531365 -0400
+@@ -596,13 +596,16 @@ public class Package implements java.lan
+     }
+ 
+     // The map of loaded system packages
+-    private static Map<String, Package> pkgs = new HashMap<>(31);
++    private static Map<String, Package> pkgs
++        = new HashMap<String, Package>(31);
+ 
+     // Maps each directory or zip file name to its corresponding url
+-    private static Map<String, URL> urls = new HashMap<>(10);
++    private static Map<String, URL> urls
++        = new HashMap<String, URL>(10);
+ 
+     // Maps each code source url for a jar file to its manifest
+-    private static Map<String, Manifest> mans = new HashMap<>(10);
++    private static Map<String, Manifest> mans
++        = new HashMap<String, Manifest>(10);
+ 
+     private static native String getSystemPackage0(String name);
+     private static native String[] getSystemPackages0();
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java.sav openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java	2011-07-29 14:27:07.779531365 -0400
+@@ -214,7 +214,7 @@ public final class ProcessBuilder
+      * @param command a string array containing the program and its arguments
+      */
+     public ProcessBuilder(String... command) {
+-        this.command = new ArrayList<>(command.length);
++        this.command = new ArrayList<String>(command.length);
+         for (String arg : command)
+             this.command.add(arg);
+     }
+@@ -251,7 +251,7 @@ public final class ProcessBuilder
+      * @return this process builder
+      */
+     public ProcessBuilder command(String... command) {
+-        this.command = new ArrayList<>(command.length);
++        this.command = new ArrayList<String>(command.length);
+         for (String arg : command)
+             this.command.add(arg);
+         return this;
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/reflect/Constructor.java.sav openjdk-boot/jdk/src/share/classes/java/lang/reflect/Constructor.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/reflect/Constructor.java.sav	2011-07-29 12:21:11.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/Constructor.java	2011-07-29 14:27:07.779531365 -0400
+@@ -136,7 +136,7 @@ public final
+         // which implicitly requires that new java.lang.reflect
+         // objects be fabricated for each reflective call on Class
+         // objects.)
+-        Constructor<T> res = new Constructor<>(clazz,
++        Constructor<T> res = new Constructor<T>(clazz,
+                                                 parameterTypes,
+                                                 exceptionTypes, modifiers, slot,
+                                                 signature,
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java.sav openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java.sav	2011-07-29 12:21:11.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java	2011-07-29 14:27:07.779531365 -0400
+@@ -232,7 +232,7 @@ public class Proxy implements java.io.Se
+ 
+     /** maps a class loader to the proxy class cache for that loader */
+     private static Map<ClassLoader, Map<List<String>, Object>> loaderToCache
+-        = new WeakHashMap<>();
++        = new WeakHashMap<ClassLoader, Map<List<String>, Object>>();
+ 
+     /** marks that a particular proxy class is currently being generated */
+     private static Object pendingGenerationMarker = new Object();
+@@ -356,7 +356,7 @@ public class Proxy implements java.io.Se
+         String[] interfaceNames = new String[interfaces.length];
+ 
+         // for detecting duplicates
+-        Set<Class<?>> interfaceSet = new HashSet<>();
++        Set<Class<?>> interfaceSet = new HashSet<Class<?>>();
+ 
+         for (int i = 0; i < interfaces.length; i++) {
+             /*
+@@ -413,7 +413,7 @@ public class Proxy implements java.io.Se
+         synchronized (loaderToCache) {
+             cache = loaderToCache.get(loader);
+             if (cache == null) {
+-                cache = new HashMap<>();
++                cache = new HashMap<List<String>, Object>();
+                 loaderToCache.put(loader, cache);
+             }
+             /*
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java.sav openjdk-boot/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java.sav	2011-07-29 12:21:11.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java	2011-07-29 14:27:07.779531365 -0400
+@@ -84,7 +84,7 @@ class ReflectAccess implements sun.refle
+                                              byte[] annotations,
+                                              byte[] parameterAnnotations)
+     {
+-        return new Constructor<>(declaringClass,
++        return new Constructor<T>(declaringClass,
+                                   parameterTypes,
+                                   checkedExceptions,
+                                   modifiers,
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/StringCoding.java.sav openjdk-boot/jdk/src/share/classes/java/lang/StringCoding.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/StringCoding.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/StringCoding.java	2011-07-29 14:27:07.779531365 -0400
+@@ -53,9 +53,9 @@ class StringCoding {
+ 
+     /** The cached coders for each thread */
+     private final static ThreadLocal<SoftReference<StringDecoder>> decoder =
+-        new ThreadLocal<>();
++        new ThreadLocal<SoftReference<StringDecoder>>();
+     private final static ThreadLocal<SoftReference<StringEncoder>> encoder =
+-        new ThreadLocal<>();
++        new ThreadLocal<SoftReference<StringEncoder>>();
+ 
+     private static boolean warnUnsupportedCharset = true;
+ 
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/String.java.sav openjdk-boot/jdk/src/share/classes/java/lang/String.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/String.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/String.java	2011-07-29 14:27:07.779531365 -0400
+@@ -2330,7 +2330,7 @@ public final class String
+             int off = 0;
+             int next = 0;
+             boolean limited = limit > 0;
+-            ArrayList<String> list = new ArrayList<>();
++            ArrayList<String> list = new ArrayList<String>();
+             while ((next = indexOf(ch, off)) != -1) {
+                 if (!limited || list.size() < limit - 1) {
+                     list.add(substring(off, next));
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/Thread.java.sav openjdk-boot/jdk/src/share/classes/java/lang/Thread.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/Thread.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/Thread.java	2011-07-29 14:27:07.780531350 -0400
+@@ -1616,7 +1616,8 @@ class Thread implements Runnable {
+         // Get a snapshot of the list of all threads
+         Thread[] threads = getThreads();
+         StackTraceElement[][] traces = dumpThreads(threads);
+-        Map<Thread, StackTraceElement[]> m = new HashMap<>(threads.length);
++        Map<Thread, StackTraceElement[]> m
++            = new HashMap<Thread, StackTraceElement[]>(threads.length);
+         for (int i = 0; i < threads.length; i++) {
+             StackTraceElement[] stackTrace = traces[i];
+             if (stackTrace != null) {
+@@ -1637,11 +1638,11 @@ class Thread implements Runnable {
+     private static class Caches {
+         /** cache of subclass security audit results */
+         static final ConcurrentMap<WeakClassKey,Boolean> subclassAudits =
+-            new ConcurrentHashMap<>();
++            new ConcurrentHashMap<WeakClassKey,Boolean>();
+ 
+         /** queue for WeakReferences to audited subclasses */
+         static final ReferenceQueue<Class<?>> subclassAuditsQueue =
+-            new ReferenceQueue<>();
++            new ReferenceQueue<Class<?>>();
+     }
+ 
+     /**
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/Throwable.java.sav openjdk-boot/jdk/src/share/classes/java/lang/Throwable.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/Throwable.java.sav	2011-07-29 12:21:10.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/Throwable.java	2011-07-29 14:27:07.780531350 -0400
+@@ -917,7 +917,7 @@ public class Throwable implements Serial
+                 // Use the sentinel for a zero-length list
+                 suppressed = SUPPRESSED_SENTINEL;
+             } else { // Copy Throwables to new list
+-                suppressed = new ArrayList<>(1);
++                suppressed = new ArrayList<Throwable>(1);
+                 for (Throwable t : suppressedExceptions) {
+                     // Enforce constraints on suppressed exceptions in
+                     // case of corrupt or malicious stream.
+@@ -1048,7 +1048,7 @@ public class Throwable implements Serial
+             return;
+ 
+         if (suppressedExceptions == SUPPRESSED_SENTINEL)
+-            suppressedExceptions = new ArrayList<>(1);
++            suppressedExceptions = new ArrayList<Throwable>(1);
+ 
+         suppressedExceptions.add(exception);
+     }
+diff -up openjdk-boot/jdk/src/share/classes/java/net/InetAddress.java.sav openjdk-boot/jdk/src/share/classes/java/net/InetAddress.java
+--- openjdk-boot/jdk/src/share/classes/java/net/InetAddress.java.sav	2011-07-29 12:21:11.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/net/InetAddress.java	2011-07-29 14:27:07.780531350 -0400
+@@ -677,7 +677,7 @@ class InetAddress implements java.io.Ser
+ 
+     static InetAddressImpl  impl;
+ 
+-    private static final HashMap<String, Void> lookupTable = new HashMap<>();
++    private static final HashMap<String, Void> lookupTable = new HashMap<String, Void>();
+ 
+     /**
+      * Represents a cache entry
+@@ -736,7 +736,7 @@ class InetAddress implements java.io.Ser
+ 
+                 // As we iterate in insertion order we can
+                 // terminate when a non-expired entry is found.
+-                LinkedList<String> expired = new LinkedList<>();
++                LinkedList<String> expired = new LinkedList<String>();
+                 long now = System.currentTimeMillis();
+                 for (String key : cache.keySet()) {
+                     CacheEntry entry = cache.get(key);
+diff -up openjdk-boot/jdk/src/share/classes/java/net/URLClassLoader.java.sav openjdk-boot/jdk/src/share/classes/java/net/URLClassLoader.java
+--- openjdk-boot/jdk/src/share/classes/java/net/URLClassLoader.java.sav	2011-07-29 12:21:11.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/net/URLClassLoader.java	2011-07-29 14:27:07.780531350 -0400
+@@ -205,7 +205,7 @@ public class URLClassLoader extends Secu
+      */
+ 
+     private WeakHashMap<Closeable,Void>
+-        closeables = new WeakHashMap<>();
++        closeables = new WeakHashMap<Closeable, Void>();
+ 
+     /**
+      * Returns an input stream for reading the specified resource.
+diff -up openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java.sav openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java
+--- openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java.sav	2011-07-29 14:27:01.429625608 -0400
++++ openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java	2011-07-29 14:27:07.780531350 -0400
+@@ -1487,7 +1487,7 @@ public final class Files {
+             return AccessController
+                 .doPrivileged(new PrivilegedAction<List<FileTypeDetector>>() {
+                     @Override public List<FileTypeDetector> run() {
+-                        List<FileTypeDetector> list = new ArrayList<>();
++                        List<FileTypeDetector> list = new ArrayList<FileTypeDetector>();
+                         ServiceLoader<FileTypeDetector> loader = ServiceLoader
+                             .load(FileTypeDetector.class, ClassLoader.getSystemClassLoader());
+                         for (FileTypeDetector detector: loader) {
+@@ -3008,7 +3008,7 @@ public final class Files {
+         BufferedReader reader = null;
+         try {
+             reader = newBufferedReader(path, cs);
+-            List<String> result = new ArrayList<>();
++            List<String> result = new ArrayList<String>();
+             for (;;) {
+                 String line = reader.readLine();
+                 if (line == null)
+diff -up openjdk-boot/jdk/src/share/classes/java/security/AccessControlContext.java.sav openjdk-boot/jdk/src/share/classes/java/security/AccessControlContext.java
+--- openjdk-boot/jdk/src/share/classes/java/security/AccessControlContext.java.sav	2011-07-29 12:21:12.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/security/AccessControlContext.java	2011-07-29 14:27:07.781531335 -0400
+@@ -124,7 +124,7 @@ public final class AccessControlContext 
+                 this.context = null;
+             }
+         } else {
+-            List<ProtectionDomain> v = new ArrayList<>(context.length);
++            List<ProtectionDomain> v = new ArrayList<ProtectionDomain>(context.length);
+             for (int i =0; i< context.length; i++) {
+                 if ((context[i] != null) &&  (!v.contains(context[i])))
+                     v.add(context[i]);
+diff -up openjdk-boot/jdk/src/share/classes/java/security/BasicPermission.java.sav openjdk-boot/jdk/src/share/classes/java/security/BasicPermission.java
+--- openjdk-boot/jdk/src/share/classes/java/security/BasicPermission.java.sav	2011-07-29 12:21:12.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/security/BasicPermission.java	2011-07-29 14:27:07.781531335 -0400
+@@ -515,7 +515,7 @@ implements java.io.Serializable
+ 
+         // Copy perms into a Hashtable
+         Hashtable<String, Permission> permissions =
+-                new Hashtable<>(perms.size()*2);
++            new Hashtable<String, Permission>(perms.size()*2);
+ 
+         synchronized (this) {
+             permissions.putAll(perms);
+diff -up openjdk-boot/jdk/src/share/classes/java/security/CodeSource.java.sav openjdk-boot/jdk/src/share/classes/java/security/CodeSource.java
+--- openjdk-boot/jdk/src/share/classes/java/security/CodeSource.java.sav	2011-07-29 12:21:12.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/security/CodeSource.java	2011-07-29 14:27:07.781531335 -0400
+@@ -188,7 +188,7 @@ public class CodeSource implements java.
+         } else if (signers != null) {
+             // Convert the code signers to certs
+             ArrayList<java.security.cert.Certificate> certChains =
+-                        new ArrayList<>();
++                        new ArrayList<java.security.cert.Certificate>();
+             for (int i = 0; i < signers.length; i++) {
+                 certChains.addAll(
+                     signers[i].getSignerCertPath().getCertificates());
+@@ -606,10 +606,10 @@ public class CodeSource implements java.
+ 
+             // Iterate through all the certificates
+             int i = 0;
+-            List<CodeSigner> signers = new ArrayList<>();
++            List<CodeSigner> signers = new ArrayList<CodeSigner>();
+             while (i < certs.length) {
+                 List<java.security.cert.Certificate> certChain =
+-                        new ArrayList<>();
++                        new ArrayList<java.security.cert.Certificate>();
+                 certChain.add(certs[i++]); // first cert is an end-entity cert
+                 int j = i;
+ 
+diff -up openjdk-boot/jdk/src/share/classes/java/security/Permissions.java.sav openjdk-boot/jdk/src/share/classes/java/security/Permissions.java
+--- openjdk-boot/jdk/src/share/classes/java/security/Permissions.java.sav	2011-07-29 12:21:12.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/security/Permissions.java	2011-07-29 14:27:07.781531335 -0400
+@@ -362,7 +362,7 @@ implements Serializable
+ 
+         // Copy perms into a Hashtable
+         Hashtable<Class<?>, PermissionCollection> perms =
+-            new Hashtable<>(permsMap.size()*2); // no sync; estimate
++            new Hashtable<Class<?>, PermissionCollection>(permsMap.size()*2); // no sync; estimate
+         synchronized (this) {
+             perms.putAll(permsMap);
+         }
+@@ -567,7 +567,7 @@ implements Serializable
+ 
+         // Copy perms into a Hashtable
+         Hashtable<Permission, Permission> perms =
+-                new Hashtable<>(permsMap.size()*2);
++            new Hashtable<Permission, Permission>(permsMap.size()*2);
+         synchronized (this) {
+             perms.putAll(permsMap);
+         }
+diff -up openjdk-boot/jdk/src/share/classes/java/security/ProtectionDomain.java.sav openjdk-boot/jdk/src/share/classes/java/security/ProtectionDomain.java
+--- openjdk-boot/jdk/src/share/classes/java/security/ProtectionDomain.java.sav	2011-07-29 12:21:12.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/security/ProtectionDomain.java	2011-07-29 14:27:07.781531335 -0400
+@@ -368,8 +368,8 @@ public class ProtectionDomain {
+         int swag = 32;
+         int vcap = 8;
+         Enumeration<Permission> e;
+-        List<Permission> pdVector = new ArrayList<>(vcap);
+-        List<Permission> plVector = new ArrayList<>(swag);
++        List<Permission> pdVector = new ArrayList<Permission>(vcap);
++        List<Permission> plVector = new ArrayList<Permission>(swag);
+ 
+         //
+         // Build a vector of domain permissions for subsequent merge
+diff -up openjdk-boot/jdk/src/share/classes/java/security/Provider.java.sav openjdk-boot/jdk/src/share/classes/java/security/Provider.java
+--- openjdk-boot/jdk/src/share/classes/java/security/Provider.java.sav	2011-07-29 12:21:12.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/security/Provider.java	2011-07-29 14:27:07.781531335 -0400
+@@ -437,7 +437,7 @@ public abstract class Provider extends P
+ 
+     private void readObject(ObjectInputStream in)
+                 throws IOException, ClassNotFoundException {
+-        Map<Object,Object> copy = new HashMap<>();
++        Map<Object,Object> copy = new HashMap<Object,Object>();
+         for (Map.Entry<Object,Object> entry : super.entrySet()) {
+             copy.put(entry.getKey(), entry.getValue());
+         }
+@@ -719,7 +719,7 @@ public abstract class Provider extends P
+         }
+         if (serviceSet == null) {
+             ensureLegacyParsed();
+-            Set<Service> set = new LinkedHashSet<>();
++            Set<Service> set = new LinkedHashSet<Service>();
+             if (serviceMap != null) {
+                 set.addAll(serviceMap.values());
+             }
+@@ -1395,7 +1395,7 @@ public abstract class Provider extends P
+                     if (s != null) {
+                         String[] classNames = s.split("\\|");
+                         List<Class> classList =
+-                            new ArrayList<>(classNames.length);
++                            new ArrayList<Class>(classNames.length);
+                         for (String className : classNames) {
+                             Class clazz = getKeyClass(className);
+                             if (clazz != null) {
+diff -up openjdk-boot/jdk/src/share/classes/java/security/SecureClassLoader.java.sav openjdk-boot/jdk/src/share/classes/java/security/SecureClassLoader.java
+--- openjdk-boot/jdk/src/share/classes/java/security/SecureClassLoader.java.sav	2011-07-29 12:21:12.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/security/SecureClassLoader.java	2011-07-29 14:27:07.781531335 -0400
+@@ -50,7 +50,7 @@ public class SecureClassLoader extends C
+     // HashMap that maps CodeSource to ProtectionDomain
+     // @GuardedBy("pdcache")
+     private final HashMap<CodeSource, ProtectionDomain> pdcache =
+-                        new HashMap<>(11);
++        new HashMap<CodeSource, ProtectionDomain>(11);
+ 
+     private static final Debug debug = Debug.getInstance("scl");
+ 
+diff -up openjdk-boot/jdk/src/share/classes/java/security/Security.java.sav openjdk-boot/jdk/src/share/classes/java/security/Security.java
+--- openjdk-boot/jdk/src/share/classes/java/security/Security.java.sav	2011-07-29 12:21:12.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/security/Security.java	2011-07-29 14:27:07.781531335 -0400
+@@ -546,7 +546,7 @@ public final class Security {
+             value = filter.substring(index + 1);
+         }
+ 
+-        Hashtable<String, String> hashtableFilter = new Hashtable<>(1);
++        Hashtable<String, String> hashtableFilter = new Hashtable<String, String>(1);
+         hashtableFilter.put(key, value);
+ 
+         return (getProviders(hashtableFilter));
+@@ -606,7 +606,7 @@ public final class Security {
+         // Then only return those providers who satisfy the selection criteria.
+         Provider[] allProviders = Security.getProviders();
+         Set<String> keySet = filter.keySet();
+-        LinkedHashSet<Provider> candidates = new LinkedHashSet<>(5);
++        LinkedHashSet<Provider> candidates = new LinkedHashSet<Provider>(5);
+ 
+         // Returns all installed providers
+         // if the selection criteria is null.
+@@ -660,7 +660,7 @@ public final class Security {
+     }
+ 
+     // Map containing cached Spi Class objects of the specified type
+-    private static final Map<String, Class> spiMap = new ConcurrentHashMap<>();
++    private static final Map<String, Class> spiMap = new ConcurrentHashMap<String, Class>();
+ 
+     /**
+      * Return the Class object for the given engine type
+@@ -884,7 +884,7 @@ public final class Security {
+                                                 String attrName,
+                                                 String filterValue,
+                                                 Provider[] allProviders) {
+-        LinkedHashSet<Provider> candidates = new LinkedHashSet<>(5);
++        LinkedHashSet<Provider> candidates = new LinkedHashSet<Provider>(5);
+         for (int i = 0; i < allProviders.length; i++) {
+             if (isCriterionSatisfied(allProviders[i], serviceName,
+                                      algName,
+@@ -1081,7 +1081,7 @@ public final class Security {
+             return Collections.EMPTY_SET;
+         }
+ 
+-        HashSet<String> result = new HashSet<>();
++        HashSet<String> result = new HashSet<String>();
+         Provider[] providers = Security.getProviders();
+ 
+         for (int i = 0; i < providers.length; i++) {
+diff -up openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java.sav openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java
+--- openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java.sav	2011-07-29 12:21:12.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java	2011-07-29 14:27:07.782531320 -0400
+@@ -119,7 +119,7 @@ implements java.io.Serializable
+ 
+     public Enumeration<Permission> elements() {
+         List<Permission> results =
+-            new ArrayList<>(); // where results are stored
++            new ArrayList<Permission>(); // where results are stored
+ 
+         // Get iterator of Map values (which are lists of permissions)
+         synchronized (this) {
+@@ -161,7 +161,7 @@ implements java.io.Serializable
+ 
+         // Copy perms into a Hashtable
+         Hashtable<String, Vector<UnresolvedPermission>> permissions =
+-            new Hashtable<>(perms.size()*2);
++            new Hashtable<String, Vector<UnresolvedPermission>>(perms.size()*2);
+ 
+         // Convert each entry (List) into a Vector
+         synchronized (this) {
+@@ -169,7 +169,7 @@ implements java.io.Serializable
+             for (Map.Entry<String, List<UnresolvedPermission>> e : set) {
+                 // Convert list into Vector
+                 List<UnresolvedPermission> list = e.getValue();
+-                Vector<UnresolvedPermission> vec = new Vector<>(list.size());
++                Vector<UnresolvedPermission> vec = new Vector<UnresolvedPermission>(list.size());
+                 synchronized (list) {
+                     vec.addAll(list);
+                 }
+@@ -206,7 +206,7 @@ implements java.io.Serializable
+         for (Map.Entry<String, Vector<UnresolvedPermission>> e : set) {
+             // Convert Vector into ArrayList
+             Vector<UnresolvedPermission> vec = e.getValue();
+-            List<UnresolvedPermission> list = new ArrayList<>(vec.size());
++            List<UnresolvedPermission> list = new ArrayList<UnresolvedPermission>(vec.size());
+             list.addAll(vec);
+ 
+             // Add to Hashtable being serialized
+diff -up openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermission.java.sav openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermission.java
+--- openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermission.java.sav	2011-07-29 12:21:12.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermission.java	2011-07-29 14:27:07.782531320 -0400
+@@ -198,7 +198,7 @@ implements java.io.Serializable
+                 if (this.certs == null) {
+                     // extract the signer certs
+                     ArrayList<java.security.cert.Certificate> signerCerts =
+-                        new ArrayList<>();
++                        new ArrayList<java.security.cert.Certificate>();
+                     i = 0;
+                     while (i < certs.length) {
+                         signerCerts.add(certs[i]);
+diff -up openjdk-boot/jdk/src/share/classes/java/util/AbstractList.java.sav openjdk-boot/jdk/src/share/classes/java/util/AbstractList.java
+--- openjdk-boot/jdk/src/share/classes/java/util/AbstractList.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/AbstractList.java	2011-07-29 14:27:07.782531320 -0400
+@@ -482,8 +482,8 @@ public abstract class AbstractList<E> ex
+      */
+     public List<E> subList(int fromIndex, int toIndex) {
+         return (this instanceof RandomAccess ?
+-                new RandomAccessSubList<>(this, fromIndex, toIndex) :
+-                new SubList<>(this, fromIndex, toIndex));
++                new RandomAccessSubList<E>(this, fromIndex, toIndex) :
++                new SubList<E>(this, fromIndex, toIndex));
+     }
+ 
+     // Comparison and hashing
+@@ -747,7 +747,7 @@ class SubList<E> extends AbstractList<E>
+     }
+ 
+     public List<E> subList(int fromIndex, int toIndex) {
+-        return new SubList<>(this, fromIndex, toIndex);
++        return new SubList<E>(this, fromIndex, toIndex);
+     }
+ 
+     private void rangeCheck(int index) {
+@@ -776,6 +776,6 @@ class RandomAccessSubList<E> extends Sub
+     }
+ 
+     public List<E> subList(int fromIndex, int toIndex) {
+-        return new RandomAccessSubList<>(this, fromIndex, toIndex);
++        return new RandomAccessSubList<E>(this, fromIndex, toIndex);
+     }
+ }
+diff -up openjdk-boot/jdk/src/share/classes/java/util/Arrays.java.sav openjdk-boot/jdk/src/share/classes/java/util/Arrays.java
+--- openjdk-boot/jdk/src/share/classes/java/util/Arrays.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/Arrays.java	2011-07-29 14:27:07.782531320 -0400
+@@ -2825,7 +2825,7 @@ public class Arrays {
+      */
+     @SafeVarargs
+     public static <T> List<T> asList(T... a) {
+-        return new ArrayList<>(a);
++        return new ArrayList<T>(a);
+     }
+ 
+     /**
+diff -up openjdk-boot/jdk/src/share/classes/java/util/Collections.java.sav openjdk-boot/jdk/src/share/classes/java/util/Collections.java
+--- openjdk-boot/jdk/src/share/classes/java/util/Collections.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/Collections.java	2011-07-29 14:27:07.783531305 -0400
+@@ -1035,7 +1035,7 @@ public class Collections {
+      * @return an unmodifiable view of the specified collection.
+      */
+     public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) {
+-        return new UnmodifiableCollection<>(c);
++        return new UnmodifiableCollection<T>(c);
+     }
+ 
+     /**
+@@ -1109,7 +1109,7 @@ public class Collections {
+      * @return an unmodifiable view of the specified set.
+      */
+     public static <T> Set<T> unmodifiableSet(Set<? extends T> s) {
+-        return new UnmodifiableSet<>(s);
++        return new UnmodifiableSet<T>(s);
+     }
+ 
+     /**
+@@ -1141,7 +1141,7 @@ public class Collections {
+      * @return an unmodifiable view of the specified sorted set.
+      */
+     public static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s) {
+-        return new UnmodifiableSortedSet<>(s);
++        return new UnmodifiableSortedSet<T>(s);
+     }
+ 
+     /**
+@@ -1158,13 +1158,13 @@ public class Collections {
+         public Comparator<? super E> comparator() {return ss.comparator();}
+ 
+         public SortedSet<E> subSet(E fromElement, E toElement) {
+-            return new UnmodifiableSortedSet<>(ss.subSet(fromElement,toElement));
++            return new UnmodifiableSortedSet<E>(ss.subSet(fromElement,toElement));
+         }
+         public SortedSet<E> headSet(E toElement) {
+-            return new UnmodifiableSortedSet<>(ss.headSet(toElement));
++            return new UnmodifiableSortedSet<E>(ss.headSet(toElement));
+         }
+         public SortedSet<E> tailSet(E fromElement) {
+-            return new UnmodifiableSortedSet<>(ss.tailSet(fromElement));
++            return new UnmodifiableSortedSet<E>(ss.tailSet(fromElement));
+         }
+ 
+         public E first()                   {return ss.first();}
+@@ -1188,8 +1188,8 @@ public class Collections {
+      */
+     public static <T> List<T> unmodifiableList(List<? extends T> list) {
+         return (list instanceof RandomAccess ?
+-                new UnmodifiableRandomAccessList<>(list) :
+-                new UnmodifiableList<>(list));
++                new UnmodifiableRandomAccessList<T>(list) :
++                new UnmodifiableList<T>(list));
+     }
+ 
+     /**
+@@ -1250,7 +1250,7 @@ public class Collections {
+         }
+ 
+         public List<E> subList(int fromIndex, int toIndex) {
+-            return new UnmodifiableList<>(list.subList(fromIndex, toIndex));
++            return new UnmodifiableList<E>(list.subList(fromIndex, toIndex));
+         }
+ 
+         /**
+@@ -1267,7 +1267,7 @@ public class Collections {
+          */
+         private Object readResolve() {
+             return (list instanceof RandomAccess
+-                    ? new UnmodifiableRandomAccessList<>(list)
++                    ? new UnmodifiableRandomAccessList<E>(list)
+                     : this);
+         }
+     }
+@@ -1283,7 +1283,7 @@ public class Collections {
+         }
+ 
+         public List<E> subList(int fromIndex, int toIndex) {
+-            return new UnmodifiableRandomAccessList<>(
++            return new UnmodifiableRandomAccessList<E>(
+                 list.subList(fromIndex, toIndex));
+         }
+ 
+@@ -1296,7 +1296,7 @@ public class Collections {
+          * deserialization.
+          */
+         private Object writeReplace() {
+-            return new UnmodifiableList<>(list);
++            return new UnmodifiableList<E>(list);
+         }
+     }
+ 
+@@ -1315,7 +1315,7 @@ public class Collections {
+      * @return an unmodifiable view of the specified map.
+      */
+     public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K, ? extends V> m) {
+-        return new UnmodifiableMap<>(m);
++        return new UnmodifiableMap<K,V>(m);
+     }
+ 
+     /**
+@@ -1363,7 +1363,7 @@ public class Collections {
+ 
+         public Set<Map.Entry<K,V>> entrySet() {
+             if (entrySet==null)
+-                entrySet = new UnmodifiableEntrySet<>(m.entrySet());
++                entrySet = new UnmodifiableEntrySet<K,V>(m.entrySet());
+             return entrySet;
+         }
+ 
+@@ -1400,7 +1400,7 @@ public class Collections {
+                         return i.hasNext();
+                     }
+                     public Map.Entry<K,V> next() {
+-                        return new UnmodifiableEntry<>(i.next());
++                        return new UnmodifiableEntry<K,V>(i.next());
+                     }
+                     public void remove() {
+                         throw new UnsupportedOperationException();
+@@ -1411,7 +1411,7 @@ public class Collections {
+             public Object[] toArray() {
+                 Object[] a = c.toArray();
+                 for (int i=0; i<a.length; i++)
+-                    a[i] = new UnmodifiableEntry<>((Map.Entry<K,V>)a[i]);
++                    a[i] = new UnmodifiableEntry<K,V>((Map.Entry<K,V>)a[i]);
+                 return a;
+             }
+ 
+@@ -1422,7 +1422,7 @@ public class Collections {
+                 Object[] arr = c.toArray(a.length==0 ? a : Arrays.copyOf(a, 0));
+ 
+                 for (int i=0; i<arr.length; i++)
+-                    arr[i] = new UnmodifiableEntry<>((Map.Entry<K,V>)arr[i]);
++                    arr[i] = new UnmodifiableEntry<K,V>((Map.Entry<K,V>)arr[i]);
+ 
+                 if (arr.length > a.length)
+                     return (T[])arr;
+@@ -1443,7 +1443,7 @@ public class Collections {
+                 if (!(o instanceof Map.Entry))
+                     return false;
+                 return c.contains(
+-                    new UnmodifiableEntry<>((Map.Entry<?,?>) o));
++                    new UnmodifiableEntry<Object,Object>((Map.Entry<?,?>) o));
+             }
+ 
+             /**
+@@ -1517,7 +1517,7 @@ public class Collections {
+      * @return an unmodifiable view of the specified sorted map.
+      */
+     public static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K, ? extends V> m) {
+-        return new UnmodifiableSortedMap<>(m);
++        return new UnmodifiableSortedMap<K,V>(m);
+     }
+ 
+     /**
+@@ -1535,13 +1535,13 @@ public class Collections {
+         public Comparator<? super K> comparator() {return sm.comparator();}
+ 
+         public SortedMap<K,V> subMap(K fromKey, K toKey) {
+-            return new UnmodifiableSortedMap<>(sm.subMap(fromKey, toKey));
++            return new UnmodifiableSortedMap<K,V>(sm.subMap(fromKey, toKey));
+         }
+         public SortedMap<K,V> headMap(K toKey) {
+-            return new UnmodifiableSortedMap<>(sm.headMap(toKey));
++            return new UnmodifiableSortedMap<K,V>(sm.headMap(toKey));
+         }
+         public SortedMap<K,V> tailMap(K fromKey) {
+-            return new UnmodifiableSortedMap<>(sm.tailMap(fromKey));
++            return new UnmodifiableSortedMap<K,V>(sm.tailMap(fromKey));
+         }
+ 
+         public K firstKey()           {return sm.firstKey();}
+@@ -1583,11 +1583,11 @@ public class Collections {
+      * @return a synchronized view of the specified collection.
+      */
+     public static <T> Collection<T> synchronizedCollection(Collection<T> c) {
+-        return new SynchronizedCollection<>(c);
++        return new SynchronizedCollection<T>(c);
+     }
+ 
+     static <T> Collection<T> synchronizedCollection(Collection<T> c, Object mutex) {
+-        return new SynchronizedCollection<>(c, mutex);
++        return new SynchronizedCollection<T>(c, mutex);
+     }
+ 
+     /**
+@@ -1686,11 +1686,11 @@ public class Collections {
+      * @return a synchronized view of the specified set.
+      */
+     public static <T> Set<T> synchronizedSet(Set<T> s) {
+-        return new SynchronizedSet<>(s);
++        return new SynchronizedSet<T>(s);
+     }
+ 
+     static <T> Set<T> synchronizedSet(Set<T> s, Object mutex) {
+-        return new SynchronizedSet<>(s, mutex);
++        return new SynchronizedSet<T>(s, mutex);
+     }
+ 
+     /**
+@@ -1754,7 +1754,7 @@ public class Collections {
+      * @return a synchronized view of the specified sorted set.
+      */
+     public static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s) {
+-        return new SynchronizedSortedSet<>(s);
++        return new SynchronizedSortedSet<T>(s);
+     }
+ 
+     /**
+@@ -1783,18 +1783,18 @@ public class Collections {
+ 
+         public SortedSet<E> subSet(E fromElement, E toElement) {
+             synchronized (mutex) {
+-                return new SynchronizedSortedSet<>(
++                return new SynchronizedSortedSet<E>(
+                     ss.subSet(fromElement, toElement), mutex);
+             }
+         }
+         public SortedSet<E> headSet(E toElement) {
+             synchronized (mutex) {
+-                return new SynchronizedSortedSet<>(ss.headSet(toElement), mutex);
++                return new SynchronizedSortedSet<E>(ss.headSet(toElement), mutex);
+             }
+         }
+         public SortedSet<E> tailSet(E fromElement) {
+             synchronized (mutex) {
+-               return new SynchronizedSortedSet<>(ss.tailSet(fromElement),mutex);
++               return new SynchronizedSortedSet<E>(ss.tailSet(fromElement),mutex);
+             }
+         }
+ 
+@@ -1833,14 +1833,14 @@ public class Collections {
+      */
+     public static <T> List<T> synchronizedList(List<T> list) {
+         return (list instanceof RandomAccess ?
+-                new SynchronizedRandomAccessList<>(list) :
+-                new SynchronizedList<>(list));
++                new SynchronizedRandomAccessList<T>(list) :
++                new SynchronizedList<T>(list));
+     }
+ 
+     static <T> List<T> synchronizedList(List<T> list, Object mutex) {
+         return (list instanceof RandomAccess ?
+-                new SynchronizedRandomAccessList<>(list, mutex) :
+-                new SynchronizedList<>(list, mutex));
++                new SynchronizedRandomAccessList<T>(list, mutex) :
++                new SynchronizedList<T>(list, mutex));
+     }
+ 
+     /**
+@@ -1903,7 +1903,7 @@ public class Collections {
+ 
+         public List<E> subList(int fromIndex, int toIndex) {
+             synchronized (mutex) {
+-                return new SynchronizedList<>(list.subList(fromIndex, toIndex),
++                return new SynchronizedList<E>(list.subList(fromIndex, toIndex),
+                                             mutex);
+             }
+         }
+@@ -1922,7 +1922,7 @@ public class Collections {
+          */
+         private Object readResolve() {
+             return (list instanceof RandomAccess
+-                    ? new SynchronizedRandomAccessList<>(list)
++                    ? new SynchronizedRandomAccessList<E>(list)
+                     : this);
+         }
+     }
+@@ -1944,7 +1944,7 @@ public class Collections {
+ 
+         public List<E> subList(int fromIndex, int toIndex) {
+             synchronized (mutex) {
+-                return new SynchronizedRandomAccessList<>(
++                return new SynchronizedRandomAccessList<E>(
+                     list.subList(fromIndex, toIndex), mutex);
+             }
+         }
+@@ -1958,7 +1958,7 @@ public class Collections {
+          * deserialization.
+          */
+         private Object writeReplace() {
+-            return new SynchronizedList<>(list);
++            return new SynchronizedList<E>(list);
+         }
+     }
+ 
+@@ -1990,7 +1990,7 @@ public class Collections {
+      * @return a synchronized view of the specified map.
+      */
+     public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) {
+-        return new SynchronizedMap<>(m);
++        return new SynchronizedMap<K,V>(m);
+     }
+ 
+     /**
+@@ -2051,7 +2051,7 @@ public class Collections {
+         public Set<K> keySet() {
+             synchronized (mutex) {
+                 if (keySet==null)
+-                    keySet = new SynchronizedSet<>(m.keySet(), mutex);
++                    keySet = new SynchronizedSet<K>(m.keySet(), mutex);
+                 return keySet;
+             }
+         }
+@@ -2059,7 +2059,7 @@ public class Collections {
+         public Set<Map.Entry<K,V>> entrySet() {
+             synchronized (mutex) {
+                 if (entrySet==null)
+-                    entrySet = new SynchronizedSet<>(m.entrySet(), mutex);
++                    entrySet = new SynchronizedSet<Map.Entry<K,V>>(m.entrySet(), mutex);
+                 return entrySet;
+             }
+         }
+@@ -2067,7 +2067,7 @@ public class Collections {
+         public Collection<V> values() {
+             synchronized (mutex) {
+                 if (values==null)
+-                    values = new SynchronizedCollection<>(m.values(), mutex);
++                    values = new SynchronizedCollection<V>(m.values(), mutex);
+                 return values;
+             }
+         }
+@@ -2129,7 +2129,7 @@ public class Collections {
+      * @return a synchronized view of the specified sorted map.
+      */
+     public static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m) {
+-        return new SynchronizedSortedMap<>(m);
++        return new SynchronizedSortedMap<K,V>(m);
+     }
+ 
+ 
+@@ -2159,18 +2159,18 @@ public class Collections {
+ 
+         public SortedMap<K,V> subMap(K fromKey, K toKey) {
+             synchronized (mutex) {
+-                return new SynchronizedSortedMap<>(
++                return new SynchronizedSortedMap<K,V>(
+                     sm.subMap(fromKey, toKey), mutex);
+             }
+         }
+         public SortedMap<K,V> headMap(K toKey) {
+             synchronized (mutex) {
+-                return new SynchronizedSortedMap<>(sm.headMap(toKey), mutex);
++                return new SynchronizedSortedMap<K,V>(sm.headMap(toKey), mutex);
+             }
+         }
+         public SortedMap<K,V> tailMap(K fromKey) {
+             synchronized (mutex) {
+-               return new SynchronizedSortedMap<>(sm.tailMap(fromKey),mutex);
++               return new SynchronizedSortedMap<K,V>(sm.tailMap(fromKey),mutex);
+             }
+         }
+ 
+@@ -2246,7 +2246,7 @@ public class Collections {
+      */
+     public static <E> Collection<E> checkedCollection(Collection<E> c,
+                                                       Class<E> type) {
+-        return new CheckedCollection<>(c, type);
++        return new CheckedCollection<E>(c, type);
+     }
+ 
+     @SuppressWarnings("unchecked")
+@@ -2378,7 +2378,7 @@ public class Collections {
+      * @since 1.5
+      */
+     public static <E> Set<E> checkedSet(Set<E> s, Class<E> type) {
+-        return new CheckedSet<>(s, type);
++        return new CheckedSet<E>(s, type);
+     }
+ 
+     /**
+@@ -2424,7 +2424,7 @@ public class Collections {
+      */
+     public static <E> SortedSet<E> checkedSortedSet(SortedSet<E> s,
+                                                     Class<E> type) {
+-        return new CheckedSortedSet<>(s, type);
++        return new CheckedSortedSet<E>(s, type);
+     }
+ 
+     /**
+@@ -2484,8 +2484,8 @@ public class Collections {
+      */
+     public static <E> List<E> checkedList(List<E> list, Class<E> type) {
+         return (list instanceof RandomAccess ?
+-                new CheckedRandomAccessList<>(list, type) :
+-                new CheckedList<>(list, type));
++                new CheckedRandomAccessList<E>(list, type) :
++                new CheckedList<E>(list, type));
+     }
+ 
+     /**
+@@ -2550,7 +2550,7 @@ public class Collections {
+         }
+ 
+         public List<E> subList(int fromIndex, int toIndex) {
+-            return new CheckedList<>(list.subList(fromIndex, toIndex), type);
++            return new CheckedList<E>(list.subList(fromIndex, toIndex), type);
+         }
+     }
+ 
+@@ -2567,7 +2567,7 @@ public class Collections {
+         }
+ 
+         public List<E> subList(int fromIndex, int toIndex) {
+-            return new CheckedRandomAccessList<>(
++            return new CheckedRandomAccessList<E>(
+                 list.subList(fromIndex, toIndex), type);
+         }
+     }
+@@ -2609,7 +2609,7 @@ public class Collections {
+     public static <K, V> Map<K, V> checkedMap(Map<K, V> m,
+                                               Class<K> keyType,
+                                               Class<V> valueType) {
+-        return new CheckedMap<>(m, keyType, valueType);
++        return new CheckedMap<K,V>(m, keyType, valueType);
+     }
+ 
+ 
+@@ -2677,14 +2677,15 @@ public class Collections {
+             // - protection from malicious t
+             // - correct behavior if t is a concurrent map
+             Object[] entries = t.entrySet().toArray();
+-            List<Map.Entry<K,V>> checked = new ArrayList<>(entries.length);
++            List<Map.Entry<K,V>> checked =
++                new ArrayList<Map.Entry<K,V>>(entries.length);
+             for (Object o : entries) {
+                 Map.Entry<?,?> e = (Map.Entry<?,?>) o;
+                 Object k = e.getKey();
+                 Object v = e.getValue();
+                 typeCheck(k, v);
+                 checked.add(
+-                    new AbstractMap.SimpleImmutableEntry<>((K) k, (V) v));
++                    new AbstractMap.SimpleImmutableEntry<K,V>((K) k, (V) v));
+             }
+             for (Map.Entry<K,V> e : checked)
+                 m.put(e.getKey(), e.getValue());
+@@ -2694,7 +2695,7 @@ public class Collections {
+ 
+         public Set<Map.Entry<K,V>> entrySet() {
+             if (entrySet==null)
+-                entrySet = new CheckedEntrySet<>(m.entrySet(), valueType);
++                entrySet = new CheckedEntrySet<K,V>(m.entrySet(), valueType);
+             return entrySet;
+         }
+ 
+@@ -2809,7 +2810,7 @@ public class Collections {
+                 if (!(o instanceof Map.Entry))
+                     return false;
+                 return s.remove(new AbstractMap.SimpleImmutableEntry
+-                                <>((Map.Entry<?,?>)o));
++                                <Object, Object>((Map.Entry<?,?>)o));
+             }
+ 
+             public boolean removeAll(Collection<?> c) {
+@@ -2842,7 +2843,7 @@ public class Collections {
+ 
+             static <K,V,T> CheckedEntry<K,V,T> checkedEntry(Map.Entry<K,V> e,
+                                                             Class<T> valueType) {
+-                return new CheckedEntry<>(e, valueType);
++                return new CheckedEntry<K,V,T>(e, valueType);
+             }
+ 
+             /**
+@@ -2883,7 +2884,7 @@ public class Collections {
+                     if (!(o instanceof Map.Entry))
+                         return false;
+                     return e.equals(new AbstractMap.SimpleImmutableEntry
+-                                    <>((Map.Entry<?,?>)o));
++                                    <Object, Object>((Map.Entry<?,?>)o));
+                 }
+             }
+         }
+@@ -2926,7 +2927,7 @@ public class Collections {
+     public static <K,V> SortedMap<K,V> checkedSortedMap(SortedMap<K, V> m,
+                                                         Class<K> keyType,
+                                                         Class<V> valueType) {
+-        return new CheckedSortedMap<>(m, keyType, valueType);
++        return new CheckedSortedMap<K,V>(m, keyType, valueType);
+     }
+ 
+     /**
+@@ -2992,7 +2993,7 @@ public class Collections {
+ 
+     private static class EmptyIterator<E> implements Iterator<E> {
+         static final EmptyIterator<Object> EMPTY_ITERATOR
+-            = new EmptyIterator<>();
++            = new EmptyIterator<Object>();
+ 
+         public boolean hasNext() { return false; }
+         public E next() { throw new NoSuchElementException(); }
+@@ -3041,7 +3042,7 @@ public class Collections {
+         implements ListIterator<E>
+     {
+         static final EmptyListIterator<Object> EMPTY_ITERATOR
+-            = new EmptyListIterator<>();
++            = new EmptyListIterator<Object>();
+ 
+         public boolean hasPrevious() { return false; }
+         public E previous() { throw new NoSuchElementException(); }
+@@ -3077,7 +3078,7 @@ public class Collections {
+ 
+     private static class EmptyEnumeration<E> implements Enumeration<E> {
+         static final EmptyEnumeration<Object> EMPTY_ENUMERATION
+-            = new EmptyEnumeration<>();
++            = new EmptyEnumeration<Object>();
+ 
+         public boolean hasMoreElements() { return false; }
+         public E nextElement() { throw new NoSuchElementException(); }
+@@ -3089,7 +3090,7 @@ public class Collections {
+      * @see #emptySet()
+      */
+     @SuppressWarnings("unchecked")
+-    public static final Set EMPTY_SET = new EmptySet<>();
++    public static final Set EMPTY_SET = new EmptySet<Object>();
+ 
+     /**
+      * Returns the empty set (immutable).  This set is serializable.
+@@ -3149,7 +3150,7 @@ public class Collections {
+      * @see #emptyList()
+      */
+     @SuppressWarnings("unchecked")
+-    public static final List EMPTY_LIST = new EmptyList<>();
++    public static final List EMPTY_LIST = new EmptyList<Object>();
+ 
+     /**
+      * Returns the empty list (immutable).  This list is serializable.
+@@ -3223,7 +3224,7 @@ public class Collections {
+      * @since 1.3
+      */
+     @SuppressWarnings("unchecked")
+-    public static final Map EMPTY_MAP = new EmptyMap<>();
++    public static final Map EMPTY_MAP = new EmptyMap<Object,Object>();
+ 
+     /**
+      * Returns the empty map (immutable).  This map is serializable.
+@@ -3285,7 +3286,7 @@ public class Collections {
+      * @return an immutable set containing only the specified object.
+      */
+     public static <T> Set<T> singleton(T o) {
+-        return new SingletonSet<>(o);
++        return new SingletonSet<T>(o);
+     }
+ 
+     static <E> Iterator<E> singletonIterator(final E e) {
+@@ -3338,7 +3339,7 @@ public class Collections {
+      * @since 1.3
+      */
+     public static <T> List<T> singletonList(T o) {
+-        return new SingletonList<>(o);
++        return new SingletonList<T>(o);
+     }
+ 
+     /**
+@@ -3380,7 +3381,7 @@ public class Collections {
+      * @since 1.3
+      */
+     public static <K,V> Map<K,V> singletonMap(K key, V value) {
+-        return new SingletonMap<>(key, value);
++        return new SingletonMap<K,V>(key, value);
+     }
+ 
+     /**
+@@ -3422,7 +3423,7 @@ public class Collections {
+         public Set<Map.Entry<K,V>> entrySet() {
+             if (entrySet==null)
+                 entrySet = Collections.<Map.Entry<K,V>>singleton(
+-                    new SimpleImmutableEntry<>(k, v));
++                    new SimpleImmutableEntry<K,V>(k, v));
+             return entrySet;
+         }
+ 
+@@ -3454,7 +3455,7 @@ public class Collections {
+     public static <T> List<T> nCopies(int n, T o) {
+         if (n < 0)
+             throw new IllegalArgumentException("List length = " + n);
+-        return new CopiesList<>(n, o);
++        return new CopiesList<T>(n, o);
+     }
+ 
+     /**
+@@ -3528,7 +3529,7 @@ public class Collections {
+             if (fromIndex > toIndex)
+                 throw new IllegalArgumentException("fromIndex(" + fromIndex +
+                                                    ") > toIndex(" + toIndex + ")");
+-            return new CopiesList<>(toIndex - fromIndex, element);
++            return new CopiesList<E>(toIndex - fromIndex, element);
+         }
+     }
+ 
+@@ -3596,7 +3597,7 @@ public class Collections {
+         if (cmp instanceof ReverseComparator2)
+             return ((ReverseComparator2<T>)cmp).cmp;
+ 
+-        return new ReverseComparator2<>(cmp);
++        return new ReverseComparator2<T>(cmp);
+     }
+ 
+     /**
+@@ -3675,7 +3676,7 @@ public class Collections {
+      * @see ArrayList
+      */
+     public static <T> ArrayList<T> list(Enumeration<T> e) {
+-        ArrayList<T> l = new ArrayList<>();
++        ArrayList<T> l = new ArrayList<T>();
+         while (e.hasMoreElements())
+             l.add(e.nextElement());
+         return l;
+@@ -3868,7 +3869,7 @@ public class Collections {
+      * @since 1.6
+      */
+     public static <E> Set<E> newSetFromMap(Map<E, Boolean> map) {
+-        return new SetFromMap<>(map);
++        return new SetFromMap<E>(map);
+     }
+ 
+     /**
+@@ -3932,7 +3933,7 @@ public class Collections {
+      * @since  1.6
+      */
+     public static <T> Queue<T> asLifoQueue(Deque<T> deque) {
+-        return new AsLIFOQueue<>(deque);
++        return new AsLIFOQueue<T>(deque);
+     }
+ 
+     /**
+diff -up openjdk-boot/jdk/src/share/classes/java/util/EnumMap.java.sav openjdk-boot/jdk/src/share/classes/java/util/EnumMap.java
+--- openjdk-boot/jdk/src/share/classes/java/util/EnumMap.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/EnumMap.java	2011-07-29 14:27:07.783531305 -0400
+@@ -500,7 +500,7 @@ public class EnumMap<K extends Enum<K>, 
+             int j = 0;
+             for (int i = 0; i < vals.length; i++)
+                 if (vals[i] != null)
+-                    a[j++] = new AbstractMap.SimpleEntry<>(
++                    a[j++] = new AbstractMap.SimpleEntry<K,V>(
+                         keyUniverse[i], unmaskNull(vals[i]));
+             return a;
+         }
+diff -up openjdk-boot/jdk/src/share/classes/java/util/EnumSet.java.sav openjdk-boot/jdk/src/share/classes/java/util/EnumSet.java
+--- openjdk-boot/jdk/src/share/classes/java/util/EnumSet.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/EnumSet.java	2011-07-29 14:27:07.783531305 -0400
+@@ -110,9 +110,9 @@ public abstract class EnumSet<E extends 
+             throw new ClassCastException(elementType + " not an enum");
+ 
+         if (universe.length <= 64)
+-            return new RegularEnumSet<>(elementType, universe);
++            return new RegularEnumSet<E>(elementType, universe);
+         else
+-            return new JumboEnumSet<>(elementType, universe);
++            return new JumboEnumSet<E>(elementType, universe);
+     }
+ 
+     /**
+@@ -431,7 +431,7 @@ public abstract class EnumSet<E extends 
+     }
+ 
+     Object writeReplace() {
+-        return new SerializationProxy<>(this);
++        return new SerializationProxy<E>(this);
+     }
+ 
+     // readObject method for the serialization proxy pattern
+diff -up openjdk-boot/jdk/src/share/classes/java/util/Formatter.java.sav openjdk-boot/jdk/src/share/classes/java/util/Formatter.java
+--- openjdk-boot/jdk/src/share/classes/java/util/Formatter.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/Formatter.java	2011-07-29 14:27:07.783531305 -0400
+@@ -2511,7 +2511,7 @@ public final class Formatter implements 
+      * Finds format specifiers in the format string.
+      */
+     private FormatString[] parse(String s) {
+-        ArrayList<FormatString> al = new ArrayList<>();
++        ArrayList<FormatString> al = new ArrayList<FormatString>();
+         Matcher m = fsPattern.matcher(s);
+         for (int i = 0, len = s.length(); i < len; ) {
+             if (m.find(i)) {
+diff -up openjdk-boot/jdk/src/share/classes/java/util/HashMap.java.sav openjdk-boot/jdk/src/share/classes/java/util/HashMap.java
+--- openjdk-boot/jdk/src/share/classes/java/util/HashMap.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/HashMap.java	2011-07-29 14:27:07.784531290 -0400
+@@ -763,7 +763,7 @@ public class HashMap<K,V>
+      */
+     void addEntry(int hash, K key, V value, int bucketIndex) {
+         Entry<K,V> e = table[bucketIndex];
+-        table[bucketIndex] = new Entry<>(hash, key, value, e);
++        table[bucketIndex] = new Entry<K,V>(hash, key, value, e);
+         if (size++ >= threshold)
+             resize(2 * table.length);
+     }
+@@ -778,7 +778,7 @@ public class HashMap<K,V>
+      */
+     void createEntry(int hash, K key, V value, int bucketIndex) {
+         Entry<K,V> e = table[bucketIndex];
+-        table[bucketIndex] = new Entry<>(hash, key, value, e);
++        table[bucketIndex] = new Entry<K,V>(hash, key, value, e);
+         size++;
+     }
+ 
+diff -up openjdk-boot/jdk/src/share/classes/java/util/HashSet.java.sav openjdk-boot/jdk/src/share/classes/java/util/HashSet.java
+--- openjdk-boot/jdk/src/share/classes/java/util/HashSet.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/HashSet.java	2011-07-29 14:27:07.784531290 -0400
+@@ -100,7 +100,7 @@ public class HashSet<E>
+      * default initial capacity (16) and load factor (0.75).
+      */
+     public HashSet() {
+-        map = new HashMap<>();
++        map = new HashMap<E,Object>();
+     }
+ 
+     /**
+@@ -113,7 +113,7 @@ public class HashSet<E>
+      * @throws NullPointerException if the specified collection is null
+      */
+     public HashSet(Collection<? extends E> c) {
+-        map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
++        map = new HashMap<E,Object>(Math.max((int) (c.size()/.75f) + 1, 16));
+         addAll(c);
+     }
+ 
+@@ -127,7 +127,7 @@ public class HashSet<E>
+      *             than zero, or if the load factor is nonpositive
+      */
+     public HashSet(int initialCapacity, float loadFactor) {
+-        map = new HashMap<>(initialCapacity, loadFactor);
++        map = new HashMap<E,Object>(initialCapacity, loadFactor);
+     }
+ 
+     /**
+@@ -139,7 +139,7 @@ public class HashSet<E>
+      *             than zero
+      */
+     public HashSet(int initialCapacity) {
+-        map = new HashMap<>(initialCapacity);
++        map = new HashMap<E,Object>(initialCapacity);
+     }
+ 
+     /**
+@@ -156,7 +156,7 @@ public class HashSet<E>
+      *             than zero, or if the load factor is nonpositive
+      */
+     HashSet(int initialCapacity, float loadFactor, boolean dummy) {
+-        map = new LinkedHashMap<>(initialCapacity, loadFactor);
++        map = new LinkedHashMap<E,Object>(initialCapacity, loadFactor);
+     }
+ 
+     /**
+diff -up openjdk-boot/jdk/src/share/classes/java/util/Hashtable.java.sav openjdk-boot/jdk/src/share/classes/java/util/Hashtable.java
+--- openjdk-boot/jdk/src/share/classes/java/util/Hashtable.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/Hashtable.java	2011-07-29 14:27:07.784531290 -0400
+@@ -455,7 +455,7 @@ public class Hashtable<K,V>
+ 
+         // Creates the new entry.
+         Entry<K,V> e = tab[index];
+-        tab[index] = new Entry<>(hash, key, value, e);
++        tab[index] = new Entry<K,V>(hash, key, value, e);
+         count++;
+         return null;
+     }
+@@ -579,7 +579,7 @@ public class Hashtable<K,V>
+         if (count == 0) {
+             return Collections.emptyEnumeration();
+         } else {
+-            return new Enumerator<>(type, false);
++            return new Enumerator<T>(type, false);
+         }
+     }
+ 
+@@ -587,7 +587,7 @@ public class Hashtable<K,V>
+         if (count == 0) {
+             return Collections.emptyIterator();
+         } else {
+-            return new Enumerator<>(type, true);
++            return new Enumerator<T>(type, true);
+         }
+     }
+ 
+@@ -863,7 +863,7 @@ public class Hashtable<K,V>
+ 
+                 while (entry != null) {
+                     entryStack =
+-                        new Entry<>(0, entry.key, entry.value, entryStack);
++                        new Entry<Object, Object>(0, entry.key, entry.value, entryStack);
+                     entry = entry.next;
+                 }
+             }
+@@ -941,7 +941,7 @@ public class Hashtable<K,V>
+         }
+         // Creates the new entry.
+         Entry<K,V> e = tab[index];
+-        tab[index] = new Entry<>(hash, key, value, e);
++        tab[index] = new Entry<K,V>(hash, key, value, e);
+         count++;
+     }
+ 
+@@ -962,7 +962,7 @@ public class Hashtable<K,V>
+         }
+ 
+         protected Object clone() {
+-            return new Entry<>(hash, key, value,
++            return new Entry<K,V>(hash, key, value,
+                                   (next==null ? null : (Entry<K,V>) next.clone()));
+         }
+ 
+diff -up openjdk-boot/jdk/src/share/classes/java/util/IdentityHashMap.java.sav openjdk-boot/jdk/src/share/classes/java/util/IdentityHashMap.java
+--- openjdk-boot/jdk/src/share/classes/java/util/IdentityHashMap.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/IdentityHashMap.java	2011-07-29 14:27:07.784531290 -0400
+@@ -1145,7 +1145,7 @@ public class IdentityHashMap<K,V>
+             Object[] result = new Object[size];
+             Iterator<Map.Entry<K,V>> it = iterator();
+             for (int i = 0; i < size; i++)
+-                result[i] = new AbstractMap.SimpleEntry<>(it.next());
++                result[i] = new AbstractMap.SimpleEntry<K,V>(it.next());
+             return result;
+         }
+ 
+@@ -1157,7 +1157,7 @@ public class IdentityHashMap<K,V>
+                     .newInstance(a.getClass().getComponentType(), size);
+             Iterator<Map.Entry<K,V>> it = iterator();
+             for (int i = 0; i < size; i++)
+-                a[i] = (T) new AbstractMap.SimpleEntry<>(it.next());
++                a[i] = (T) new AbstractMap.SimpleEntry<K,V>(it.next());
+             if (a.length > size)
+                 a[size] = null;
+             return a;
+diff -up openjdk-boot/jdk/src/share/classes/java/util/JumboEnumSet.java.sav openjdk-boot/jdk/src/share/classes/java/util/JumboEnumSet.java
+--- openjdk-boot/jdk/src/share/classes/java/util/JumboEnumSet.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/JumboEnumSet.java	2011-07-29 14:27:07.784531290 -0400
+@@ -91,7 +91,7 @@ class JumboEnumSet<E extends Enum<E>> ex
+      * @return an iterator over the elements contained in this set
+      */
+     public Iterator<E> iterator() {
+-        return new EnumSetIterator<>();
++        return new EnumSetIterator<E>();
+     }
+ 
+     private class EnumSetIterator<E extends Enum<E>> implements Iterator<E> {
+diff -up openjdk-boot/jdk/src/share/classes/java/util/LinkedHashMap.java.sav openjdk-boot/jdk/src/share/classes/java/util/LinkedHashMap.java
+--- openjdk-boot/jdk/src/share/classes/java/util/LinkedHashMap.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/LinkedHashMap.java	2011-07-29 14:27:07.784531290 -0400
+@@ -237,7 +237,7 @@ public class LinkedHashMap<K,V>
+      * the chain.
+      */
+     void init() {
+-        header = new Entry<>(-1, null, null, null);
++        header = new Entry<K,V>(-1, null, null, null);
+         header.before = header.after = header;
+     }
+ 
+@@ -438,7 +438,7 @@ public class LinkedHashMap<K,V>
+      */
+     void createEntry(int hash, K key, V value, int bucketIndex) {
+         HashMap.Entry<K,V> old = table[bucketIndex];
+-        Entry<K,V> e = new Entry<>(hash, key, value, old);
++        Entry<K,V> e = new Entry<K,V>(hash, key, value, old);
+         table[bucketIndex] = e;
+         e.addBefore(header);
+         size++;
+diff -up openjdk-boot/jdk/src/share/classes/java/util/LinkedList.java.sav openjdk-boot/jdk/src/share/classes/java/util/LinkedList.java
+--- openjdk-boot/jdk/src/share/classes/java/util/LinkedList.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/LinkedList.java	2011-07-29 14:27:07.784531290 -0400
+@@ -122,7 +122,7 @@ public class LinkedList<E>
+      */
+     private void linkFirst(E e) {
+         final Node<E> f = first;
+-        final Node<E> newNode = new Node<>(null, e, f);
++        final Node<E> newNode = new Node<E>(null, e, f);
+         first = newNode;
+         if (f == null)
+             last = newNode;
+@@ -137,7 +137,7 @@ public class LinkedList<E>
+      */
+     void linkLast(E e) {
+         final Node<E> l = last;
+-        final Node<E> newNode = new Node<>(l, e, null);
++        final Node<E> newNode = new Node<E>(l, e, null);
+         last = newNode;
+         if (l == null)
+             first = newNode;
+@@ -153,7 +153,7 @@ public class LinkedList<E>
+     void linkBefore(E e, Node<E> succ) {
+         // assert succ != null;
+         final Node<E> pred = succ.prev;
+-        final Node<E> newNode = new Node<>(pred, e, succ);
++        final Node<E> newNode = new Node<E>(pred, e, succ);
+         succ.prev = newNode;
+         if (pred == null)
+             first = newNode;
+@@ -419,7 +419,7 @@ public class LinkedList<E>
+ 
+         for (Object o : a) {
+             @SuppressWarnings("unchecked") E e = (E) o;
+-            Node<E> newNode = new Node<>(pred, e, null);
++            Node<E> newNode = new Node<E>(pred, e, null);
+             if (pred == null)
+                 first = newNode;
+             else
+diff -up openjdk-boot/jdk/src/share/classes/java/util/ListResourceBundle.java.sav openjdk-boot/jdk/src/share/classes/java/util/ListResourceBundle.java
+--- openjdk-boot/jdk/src/share/classes/java/util/ListResourceBundle.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/ListResourceBundle.java	2011-07-29 14:27:07.784531290 -0400
+@@ -187,7 +187,7 @@ public abstract class ListResourceBundle
+             return;
+ 
+         Object[][] contents = getContents();
+-        HashMap<String,Object> temp = new HashMap<>(contents.length);
++        HashMap<String,Object> temp = new HashMap<String,Object>(contents.length);
+         for (int i = 0; i < contents.length; ++i) {
+             // key must be non-null String, value must be non-null
+             String key = (String) contents[i][0];
+diff -up openjdk-boot/jdk/src/share/classes/java/util/Locale.java.sav openjdk-boot/jdk/src/share/classes/java/util/Locale.java
+--- openjdk-boot/jdk/src/share/classes/java/util/Locale.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/Locale.java	2011-07-29 14:27:07.785531275 -0400
+@@ -1793,7 +1793,7 @@ public final class Locale implements Clo
+                 return formatList(variantNames, listPattern, listCompositionPattern);
+             }
+         }
+-        ArrayList<String> names = new ArrayList<>(4);
++        ArrayList<String> names = new ArrayList<String>(4);
+         if (languageName.length() != 0) {
+             names.add(languageName);
+         }
+diff -up openjdk-boot/jdk/src/share/classes/java/util/logging/FileHandler.java.sav openjdk-boot/jdk/src/share/classes/java/util/logging/FileHandler.java
+--- openjdk-boot/jdk/src/share/classes/java/util/logging/FileHandler.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/FileHandler.java	2011-07-29 14:27:07.785531275 -0400
+@@ -127,7 +127,7 @@ public class FileHandler extends StreamH
+     private FileOutputStream lockStream;
+     private File files[];
+     private static final int MAX_LOCKS = 100;
+-    private static java.util.HashMap<String, String> locks = new java.util.HashMap<>();
++    private static java.util.HashMap<String, String> locks = new java.util.HashMap<String, String>();
+ 
+     // A metered stream is a subclass of OutputStream that
+     //   (a) forwards all its output to a target stream
+diff -up openjdk-boot/jdk/src/share/classes/java/util/logging/Level.java.sav openjdk-boot/jdk/src/share/classes/java/util/logging/Level.java
+--- openjdk-boot/jdk/src/share/classes/java/util/logging/Level.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/Level.java	2011-07-29 14:27:07.785531275 -0400
+@@ -59,7 +59,7 @@ import java.util.ResourceBundle;
+  */
+ 
+ public class Level implements java.io.Serializable {
+-    private static java.util.ArrayList<Level> known = new java.util.ArrayList<>();
++    private static java.util.ArrayList<Level> known = new java.util.ArrayList<Level>();
+     private static String defaultBundle = "sun.util.logging.resources.logging";
+ 
+     /**
+diff -up openjdk-boot/jdk/src/share/classes/java/util/logging/Logger.java.sav openjdk-boot/jdk/src/share/classes/java/util/logging/Logger.java
+--- openjdk-boot/jdk/src/share/classes/java/util/logging/Logger.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/Logger.java	2011-07-29 14:27:07.785531275 -0400
+@@ -170,7 +170,7 @@ public class Logger {
+     private LogManager manager;
+     private String name;
+     private final CopyOnWriteArrayList<Handler> handlers =
+-        new CopyOnWriteArrayList<>();
++        new CopyOnWriteArrayList<Handler>();
+     private String resourceBundleName;
+     private volatile boolean useParentHandlers = true;
+     private volatile Filter filter;
+@@ -1439,7 +1439,7 @@ public class Logger {
+             // Set our new parent.
+             parent = newParent;
+             if (parent.kids == null) {
+-                parent.kids = new ArrayList<>(2);
++                parent.kids = new ArrayList<LogManager.LoggerWeakRef>(2);
+             }
+             if (ref == null) {
+                 // we didn't have a previous parent
+diff -up openjdk-boot/jdk/src/share/classes/java/util/logging/Logging.java.sav openjdk-boot/jdk/src/share/classes/java/util/logging/Logging.java
+--- openjdk-boot/jdk/src/share/classes/java/util/logging/Logging.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/Logging.java	2011-07-29 14:27:07.785531275 -0400
+@@ -56,7 +56,7 @@ class Logging implements LoggingMXBean {
+ 
+     public List<String> getLoggerNames() {
+         Enumeration loggers = logManager.getLoggerNames();
+-        ArrayList<String> array = new ArrayList<>();
++        ArrayList<String> array = new ArrayList<String>();
+ 
+         for (; loggers.hasMoreElements();) {
+             array.add((String) loggers.nextElement());
+diff -up openjdk-boot/jdk/src/share/classes/java/util/logging/LogManager.java.sav openjdk-boot/jdk/src/share/classes/java/util/logging/LogManager.java
+--- openjdk-boot/jdk/src/share/classes/java/util/logging/LogManager.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/LogManager.java	2011-07-29 14:27:07.785531275 -0400
+@@ -156,7 +156,8 @@ public class LogManager {
+     private final static Level defaultLevel = Level.INFO;
+ 
+     // Table of named Loggers that maps names to Loggers.
+-    private Hashtable<String,LoggerWeakRef> namedLoggers = new Hashtable<>();
++    private Hashtable<String,LoggerWeakRef> namedLoggers =
++        new Hashtable<String,LoggerWeakRef>();
+     // Tree of named Loggers
+     private LogNode root = new LogNode(null);
+     private Logger rootLogger;
+@@ -444,7 +445,7 @@ public class LogManager {
+     // loggerRefQueue holds LoggerWeakRef objects for Logger objects
+     // that have been GC'ed.
+     private final ReferenceQueue<Logger> loggerRefQueue
+-        = new ReferenceQueue<>();
++        = new ReferenceQueue<Logger>();
+ 
+     // Package-level inner class.
+     // Helper class for managing WeakReferences to Logger objects.
+@@ -694,7 +695,7 @@ public class LogManager {
+                 name = "";
+             }
+             if (node.children == null) {
+-                node.children = new HashMap<>();
++                node.children = new HashMap<String,LogNode>();
+             }
+             LogNode child = node.children.get(head);
+             if (child == null) {
+@@ -878,7 +879,7 @@ public class LogManager {
+         }
+         hands = hands.trim();
+         int ix = 0;
+-        Vector<String> result = new Vector<>();
++        Vector<String> result = new Vector<String>();
+         while (ix < hands.length()) {
+             int end = ix;
+             while (end < hands.length()) {
+diff -up openjdk-boot/jdk/src/share/classes/java/util/logging/LogRecord.java.sav openjdk-boot/jdk/src/share/classes/java/util/logging/LogRecord.java
+--- openjdk-boot/jdk/src/share/classes/java/util/logging/LogRecord.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/LogRecord.java	2011-07-29 14:27:07.786531260 -0400
+@@ -85,7 +85,8 @@ public class LogRecord implements java.i
+     private static final AtomicInteger nextThreadId
+         = new AtomicInteger(MIN_SEQUENTIAL_THREAD_ID);
+ 
+-    private static final ThreadLocal<Integer> threadIds = new ThreadLocal<>();
++    private static final ThreadLocal<Integer> threadIds
++        = new ThreadLocal<Integer>();
+ 
+     /**
+      * @serial Logging message level
+diff -up openjdk-boot/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java.sav openjdk-boot/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java
+--- openjdk-boot/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java	2011-07-29 14:27:07.786531260 -0400
+@@ -155,7 +155,8 @@ public abstract class AbstractPreference
+      * All known unremoved children of this node.  (This "cache" is consulted
+      * prior to calling childSpi() or getChild().
+      */
+-    private Map<String, AbstractPreferences> kidCache = new HashMap<>();
++    private Map<String, AbstractPreferences> kidCache
++        = new HashMap<String, AbstractPreferences>();
+ 
+     /**
+      * This field is used to keep track of whether or not this node has
+@@ -712,7 +713,7 @@ public abstract class AbstractPreference
+             if (removed)
+                 throw new IllegalStateException("Node has been removed.");
+ 
+-            Set<String> s = new TreeSet<>(kidCache.keySet());
++            Set<String> s = new TreeSet<String>(kidCache.keySet());
+             for (String kid : childrenNamesSpi())
+                 s.add(kid);
+             return s.toArray(EMPTY_STRING_ARRAY);
+@@ -1441,7 +1442,8 @@ public abstract class AbstractPreference
+      * event delivery from preference activity, greatly simplifying
+      * locking and reducing opportunity for deadlock.
+      */
+-    private static final List<EventObject> eventQueue = new LinkedList<>();
++    private static final List<EventObject> eventQueue
++        = new LinkedList<EventObject>();
+ 
+     /**
+      * These two classes are used to distinguish NodeChangeEvents on
+diff -up openjdk-boot/jdk/src/share/classes/java/util/PriorityQueue.java.sav openjdk-boot/jdk/src/share/classes/java/util/PriorityQueue.java
+--- openjdk-boot/jdk/src/share/classes/java/util/PriorityQueue.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/PriorityQueue.java	2011-07-29 14:27:07.786531260 -0400
+@@ -538,7 +538,7 @@ public class PriorityQueue<E> extends Ab
+                     cursor--;
+                 else {
+                     if (forgetMeNot == null)
+-                        forgetMeNot = new ArrayDeque<>();
++                        forgetMeNot = new ArrayDeque<E>();
+                     forgetMeNot.add(moved);
+                 }
+             } else if (lastRetElt != null) {
+diff -up openjdk-boot/jdk/src/share/classes/java/util/Properties.java.sav openjdk-boot/jdk/src/share/classes/java/util/Properties.java
+--- openjdk-boot/jdk/src/share/classes/java/util/Properties.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/Properties.java	2011-07-29 14:27:07.786531260 -0400
+@@ -1010,7 +1010,7 @@ class Properties extends Hashtable<Objec
+      * @since   1.6
+      */
+     public Set<String> stringPropertyNames() {
+-        Hashtable<String, String> h = new Hashtable<>();
++        Hashtable<String, String> h = new Hashtable<String, String>();
+         enumerateStringProperties(h);
+         return h.keySet();
+     }
+diff -up openjdk-boot/jdk/src/share/classes/java/util/regex/Pattern.java.sav openjdk-boot/jdk/src/share/classes/java/util/regex/Pattern.java
+--- openjdk-boot/jdk/src/share/classes/java/util/regex/Pattern.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/regex/Pattern.java	2011-07-29 14:27:07.787531246 -0400
+@@ -1193,7 +1193,7 @@ public final class Pattern
+     public String[] split(CharSequence input, int limit) {
+         int index = 0;
+         boolean matchLimited = limit > 0;
+-        ArrayList<String> matchList = new ArrayList<>();
++        ArrayList<String> matchList = new ArrayList<String>();
+         Matcher m = matcher(input);
+ 
+         // Add segments before each match found
+@@ -1695,7 +1695,7 @@ loop:   for(int x=0, offset=0; x<nCodePo
+ 
+     Map<String, Integer> namedGroups() {
+         if (namedGroups == null)
+-            namedGroups = new HashMap<>(2);
++            namedGroups = new HashMap<String, Integer>(2);
+         return namedGroups;
+     }
+ 
+@@ -5495,7 +5495,7 @@ NEXT:       while (i <= last) {
+         }
+ 
+         private static final HashMap<String, CharPropertyFactory> map
+-            = new HashMap<>();
++            = new HashMap<String, CharPropertyFactory>();
+ 
+         static {
+             // Unicode character property aliases, defined in
+diff -up openjdk-boot/jdk/src/share/classes/java/util/regex/UnicodeProp.java.sav openjdk-boot/jdk/src/share/classes/java/util/regex/UnicodeProp.java
+--- openjdk-boot/jdk/src/share/classes/java/util/regex/UnicodeProp.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/regex/UnicodeProp.java	2011-07-29 14:27:07.787531246 -0400
+@@ -193,8 +193,8 @@ enum UnicodeProp {
+         }
+     };
+ 
+-    private final static HashMap<String, String> posix = new HashMap<>();
+-    private final static HashMap<String, String> aliases = new HashMap<>();
++    private final static HashMap<String, String> posix = new HashMap<String,String>();
++    private final static HashMap<String, String> aliases = new HashMap<String,String>();
+     static {
+         posix.put("ALPHA", "ALPHABETIC");
+         posix.put("LOWER", "LOWERCASE");
+diff -up openjdk-boot/jdk/src/share/classes/java/util/RegularEnumSet.java.sav openjdk-boot/jdk/src/share/classes/java/util/RegularEnumSet.java
+--- openjdk-boot/jdk/src/share/classes/java/util/RegularEnumSet.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/RegularEnumSet.java	2011-07-29 14:27:07.787531246 -0400
+@@ -72,7 +72,7 @@ class RegularEnumSet<E extends Enum<E>> 
+      * @return an iterator over the elements contained in this set
+      */
+     public Iterator<E> iterator() {
+-        return new EnumSetIterator<>();
++        return new EnumSetIterator<E>();
+     }
+ 
+     private class EnumSetIterator<E extends Enum<E>> implements Iterator<E> {
+diff -up openjdk-boot/jdk/src/share/classes/java/util/ResourceBundle.java.sav openjdk-boot/jdk/src/share/classes/java/util/ResourceBundle.java
+--- openjdk-boot/jdk/src/share/classes/java/util/ResourceBundle.java.sav	2011-07-29 12:21:13.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/ResourceBundle.java	2011-07-29 14:27:07.787531246 -0400
+@@ -289,7 +289,7 @@ public abstract class ResourceBundle {
+      * name for compatibility with some workarounds for bug 4212439.
+      */
+     private static final ConcurrentMap<CacheKey, BundleReference> cacheList
+-        = new ConcurrentHashMap<>(INITIAL_CACHE_SIZE);
++      = new ConcurrentHashMap<CacheKey,BundleReference>(INITIAL_CACHE_SIZE);
+ 
+     /**
+      * Queue for reference objects referring to class loaders or bundles.
+@@ -1754,7 +1754,7 @@ public abstract class ResourceBundle {
+      * @since 1.6
+      */
+     public Set<String> keySet() {
+-        Set<String> keys = new HashSet<>();
++        Set<String> keys = new HashSet<String>();
+         for (ResourceBundle rb = this; rb != null; rb = rb.parent) {
+             keys.addAll(rb.handleKeySet());
+         }
+@@ -1782,7 +1782,7 @@ public abstract class ResourceBundle {
+         if (keySet == null) {
+             synchronized (this) {
+                 if (keySet == null) {
+-                    Set<String> keys = new HashSet<>();
++                    Set<String> keys = new HashSet<String>();
+                     Enumeration<String> enumKeys = getKeys();
+                     while (enumKeys.hasMoreElements()) {
+                         String key = enumKeys.nextElement();
+@@ -2300,7 +2300,7 @@ public abstract class ResourceBundle {
+             if (baseName == null) {
+                 throw new NullPointerException();
+             }
+-            return new ArrayList<>(CANDIDATES_CACHE.get(locale.getBaseLocale()));
++            return new ArrayList<Locale>(CANDIDATES_CACHE.get(locale.getBaseLocale()));
+         }
+ 
+         private static final CandidateListCache CANDIDATES_CACHE = new CandidateListCache();
+@@ -2326,7 +2326,7 @@ public abstract class ResourceBundle {
+                 if (language.equals("nb") || isNorwegianBokmal) {
+                     List<Locale> tmpList = getDefaultList("nb", script, region, variant);
+                     // Insert a locale replacing "nb" with "no" for every list entry
+-                    List<Locale> bokmalList = new LinkedList<>();
++                    List<Locale> bokmalList = new LinkedList<Locale>();
+                     for (Locale l : tmpList) {
+                         bokmalList.add(l);
+                         if (l.getLanguage().length() == 0) {
+@@ -2373,7 +2373,7 @@ public abstract class ResourceBundle {
+                 List<String> variants = null;
+ 
+                 if (variant.length() > 0) {
+-                    variants = new LinkedList<>();
++                    variants = new LinkedList<String>();
+                     int idx = variant.length();
+                     while (idx != -1) {
+                         variants.add(variant.substring(0, idx));
+@@ -2381,7 +2381,7 @@ public abstract class ResourceBundle {
+                     }
+                 }
+ 
+-                List<Locale> list = new LinkedList<>();
++                List<Locale> list = new LinkedList<Locale>();
+ 
+                 if (variants != null) {
+                     for (String v : variants) {
+diff -up openjdk-boot/jdk/src/share/classes/java/util/ServiceLoader.java.sav openjdk-boot/jdk/src/share/classes/java/util/ServiceLoader.java
+--- openjdk-boot/jdk/src/share/classes/java/util/ServiceLoader.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/ServiceLoader.java	2011-07-29 14:27:07.787531246 -0400
+@@ -191,7 +191,7 @@ public final class ServiceLoader<S>
+     private ClassLoader loader;
+ 
+     // Cached providers, in instantiation order
+-    private LinkedHashMap<String,S> providers = new LinkedHashMap<>();
++    private LinkedHashMap<String,S> providers = new LinkedHashMap<String,S>();
+ 
+     // The current lazy-lookup iterator
+     private LazyIterator lookupIterator;
+@@ -291,7 +291,7 @@ public final class ServiceLoader<S>
+     {
+         InputStream in = null;
+         BufferedReader r = null;
+-        ArrayList<String> names = new ArrayList<>();
++        ArrayList<String> names = new ArrayList<String>();
+         try {
+             in = u.openStream();
+             r = new BufferedReader(new InputStreamReader(in, "utf-8"));
+@@ -463,7 +463,7 @@ public final class ServiceLoader<S>
+     public static <S> ServiceLoader<S> load(Class<S> service,
+                                             ClassLoader loader)
+     {
+-        return new ServiceLoader<>(service, loader);
++        return new ServiceLoader<S>(service, loader);
+     }
+ 
+     /**
+diff -up openjdk-boot/jdk/src/share/classes/java/util/TimSort.java.sav openjdk-boot/jdk/src/share/classes/java/util/TimSort.java
+--- openjdk-boot/jdk/src/share/classes/java/util/TimSort.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/TimSort.java	2011-07-29 14:27:07.787531246 -0400
+@@ -196,7 +196,7 @@ class TimSort<T> {
+          * extending short natural runs to minRun elements, and merging runs
+          * to maintain stack invariant.
+          */
+-        TimSort<T> ts = new TimSort<>(a, c);
++        TimSort<T> ts = new TimSort<T>(a, c);
+         int minRun = minRunLength(nRemaining);
+         do {
+             // Identify next run
+diff -up openjdk-boot/jdk/src/share/classes/java/util/TreeMap.java.sav openjdk-boot/jdk/src/share/classes/java/util/TreeMap.java
+--- openjdk-boot/jdk/src/share/classes/java/util/TreeMap.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/TreeMap.java	2011-07-29 14:27:07.788531232 -0400
+@@ -530,7 +530,7 @@ public class TreeMap<K,V>
+         if (t == null) {
+             compare(key, key); // type (and possibly null) check
+ 
+-            root = new Entry<>(key, value, null);
++            root = new Entry<K,V>(key, value, null);
+             size = 1;
+             modCount++;
+             return null;
+@@ -566,7 +566,7 @@ public class TreeMap<K,V>
+                     return t.setValue(value);
+             } while (t != null);
+         }
+-        Entry<K,V> e = new Entry<>(key, value, parent);
++        Entry<K,V> e = new Entry<K,V>(key, value, parent);
+         if (cmp < 0)
+             parent.left = e;
+         else
+@@ -1066,14 +1066,14 @@ public class TreeMap<K,V>
+         }
+         public NavigableSet<E> subSet(E fromElement, boolean fromInclusive,
+                                       E toElement,   boolean toInclusive) {
+-            return new KeySet<>(m.subMap(fromElement, fromInclusive,
++            return new KeySet<E>(m.subMap(fromElement, fromInclusive,
+                                           toElement,   toInclusive));
+         }
+         public NavigableSet<E> headSet(E toElement, boolean inclusive) {
+-            return new KeySet<>(m.headMap(toElement, inclusive));
++            return new KeySet<E>(m.headMap(toElement, inclusive));
+         }
+         public NavigableSet<E> tailSet(E fromElement, boolean inclusive) {
+-            return new KeySet<>(m.tailMap(fromElement, inclusive));
++            return new KeySet<E>(m.tailMap(fromElement, inclusive));
+         }
+         public SortedSet<E> subSet(E fromElement, E toElement) {
+             return subSet(fromElement, true, toElement, false);
+@@ -1202,7 +1202,7 @@ public class TreeMap<K,V>
+      */
+     static <K,V> Map.Entry<K,V> exportEntry(TreeMap.Entry<K,V> e) {
+         return (e == null) ? null :
+-            new AbstractMap.SimpleImmutableEntry<>(e);
++            new AbstractMap.SimpleImmutableEntry<K,V>(e);
+     }
+ 
+     /**
+@@ -2403,7 +2403,7 @@ public class TreeMap<K,V>
+             value = (defaultVal != null ? defaultVal : (V) str.readObject());
+         }
+ 
+-        Entry<K,V> middle =  new Entry<>(key, value, null);
++        Entry<K,V> middle =  new Entry<K,V>(key, value, null);
+ 
+         // color nodes in non-full bottommost level red
+         if (level == redLevel)
+diff -up openjdk-boot/jdk/src/share/classes/java/util/TreeSet.java.sav openjdk-boot/jdk/src/share/classes/java/util/TreeSet.java
+--- openjdk-boot/jdk/src/share/classes/java/util/TreeSet.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/TreeSet.java	2011-07-29 14:27:07.788531232 -0400
+@@ -138,7 +138,7 @@ public class TreeSet<E> extends Abstract
+      *        ordering} of the elements will be used.
+      */
+     public TreeSet(Comparator<? super E> comparator) {
+-        this(new TreeMap<>(comparator));
++        this(new TreeMap<E,Object>(comparator));
+     }
+ 
+     /**
+@@ -195,7 +195,7 @@ public class TreeSet<E> extends Abstract
+      * @since 1.6
+      */
+     public NavigableSet<E> descendingSet() {
+-        return new TreeSet<>(m.descendingMap());
++        return new TreeSet<E>(m.descendingMap());
+     }
+ 
+     /**
+@@ -322,7 +322,7 @@ public class TreeSet<E> extends Abstract
+      */
+     public NavigableSet<E> subSet(E fromElement, boolean fromInclusive,
+                                   E toElement,   boolean toInclusive) {
+-        return new TreeSet<>(m.subMap(fromElement, fromInclusive,
++        return new TreeSet<E>(m.subMap(fromElement, fromInclusive,
+                                        toElement,   toInclusive));
+     }
+ 
+@@ -335,7 +335,7 @@ public class TreeSet<E> extends Abstract
+      * @since 1.6
+      */
+     public NavigableSet<E> headSet(E toElement, boolean inclusive) {
+-        return new TreeSet<>(m.headMap(toElement, inclusive));
++        return new TreeSet<E>(m.headMap(toElement, inclusive));
+     }
+ 
+     /**
+@@ -347,7 +347,7 @@ public class TreeSet<E> extends Abstract
+      * @since 1.6
+      */
+     public NavigableSet<E> tailSet(E fromElement, boolean inclusive) {
+-        return new TreeSet<>(m.tailMap(fromElement, inclusive));
++        return new TreeSet<E>(m.tailMap(fromElement, inclusive));
+     }
+ 
+     /**
+@@ -477,7 +477,7 @@ public class TreeSet<E> extends Abstract
+             throw new InternalError();
+         }
+ 
+-        clone.m = new TreeMap<>(m);
++        clone.m = new TreeMap<E,Object>(m);
+         return clone;
+     }
+ 
+@@ -524,9 +524,9 @@ public class TreeSet<E> extends Abstract
+         // Create backing TreeMap
+         TreeMap<E,Object> tm;
+         if (c==null)
+-            tm = new TreeMap<>();
++            tm = new TreeMap<E,Object>();
+         else
+-            tm = new TreeMap<>(c);
++            tm = new TreeMap<E,Object>(c);
+         m = tm;
+ 
+         // Read in size
+diff -up openjdk-boot/jdk/src/share/classes/java/util/WeakHashMap.java.sav openjdk-boot/jdk/src/share/classes/java/util/WeakHashMap.java
+--- openjdk-boot/jdk/src/share/classes/java/util/WeakHashMap.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/WeakHashMap.java	2011-07-29 14:27:07.788531232 -0400
+@@ -171,7 +171,7 @@ public class WeakHashMap<K,V>
+     /**
+      * Reference queue for cleared WeakEntries
+      */
+-    private final ReferenceQueue<Object> queue = new ReferenceQueue<>();
++    private final ReferenceQueue<Object> queue = new ReferenceQueue<Object>();
+ 
+     /**
+      * The number of times this WeakHashMap has been structurally modified.
+@@ -439,7 +439,7 @@ public class WeakHashMap<K,V>
+ 
+         modCount++;
+         Entry<K,V> e = tab[i];
+-        tab[i] = new Entry<>(k, value, queue, h, e);
++        tab[i] = new Entry<K,V>(k, value, queue, h, e);
+         if (++size >= threshold)
+             resize(tab.length * 2);
+         return null;
+@@ -955,9 +955,10 @@ public class WeakHashMap<K,V>
+         }
+ 
+         private List<Map.Entry<K,V>> deepCopy() {
+-            List<Map.Entry<K,V>> list = new ArrayList<>(size());
++            List<Map.Entry<K,V>> list =
++                new ArrayList<Map.Entry<K,V>>(size());
+             for (Map.Entry<K,V> e : this)
+-                list.add(new AbstractMap.SimpleEntry<>(e));
++                list.add(new AbstractMap.SimpleEntry<K,V>(e));
+             return list;
+         }
+ 
+diff -up openjdk-boot/jdk/src/share/classes/java/util/zip/ZipFile.java.sav openjdk-boot/jdk/src/share/classes/java/util/zip/ZipFile.java
+--- openjdk-boot/jdk/src/share/classes/java/util/zip/ZipFile.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/zip/ZipFile.java	2011-07-29 14:27:07.788531232 -0400
+@@ -319,7 +319,7 @@ class ZipFile implements ZipConstants, C
+ 
+     // the outstanding inputstreams that need to be closed,
+     // mapped to the inflater objects they use.
+-    private final Map<InputStream, Inflater> streams = new WeakHashMap<>();
++    private final Map<InputStream, Inflater> streams = new WeakHashMap<InputStream,Inflater>();
+ 
+     /**
+      * Returns an input stream for reading the contents of the specified
+@@ -461,7 +461,7 @@ class ZipFile implements ZipConstants, C
+     }
+ 
+     // List of available Inflater objects for decompression
+-    private Deque<Inflater> inflaterCache = new ArrayDeque<>();
++    private Deque<Inflater> inflaterCache = new ArrayDeque<Inflater>();
+ 
+     /**
+      * Returns the path name of the ZIP file.
+@@ -577,7 +577,7 @@ class ZipFile implements ZipConstants, C
+             // Close streams, release their inflaters
+             synchronized (streams) {
+                 if (false == streams.isEmpty()) {
+-                    Map<InputStream, Inflater> copy = new HashMap<>(streams);
++                    Map<InputStream, Inflater> copy = new HashMap<InputStream,Inflater>(streams);
+                     streams.clear();
+                     for (Map.Entry<InputStream, Inflater> e : copy.entrySet()) {
+                         e.getKey().close();
+diff -up openjdk-boot/jdk/src/share/classes/java/util/zip/ZipOutputStream.java.sav openjdk-boot/jdk/src/share/classes/java/util/zip/ZipOutputStream.java
+--- openjdk-boot/jdk/src/share/classes/java/util/zip/ZipOutputStream.java.sav	2011-07-29 12:21:14.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/util/zip/ZipOutputStream.java	2011-07-29 14:27:07.788531232 -0400
+@@ -53,8 +53,8 @@ class ZipOutputStream extends DeflaterOu
+     }
+ 
+     private XEntry current;
+-    private Vector<XEntry> xentries = new Vector<>();
+-    private HashSet<String> names = new HashSet<>();
++    private Vector<XEntry> xentries = new Vector<XEntry>();
++    private HashSet<String> names = new HashSet<String>();
+     private CRC32 crc = new CRC32();
+     private long written = 0;
+     private long locoff = 0;
+diff -up openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java.sav openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java
+--- openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java.sav	2011-07-29 12:21:17.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java	2011-07-29 14:27:07.788531232 -0400
+@@ -361,7 +361,7 @@ final class KrbDelegationPermissionColle
+         // Don't call out.defaultWriteObject()
+ 
+         // Write out Vector
+-        Vector<Permission> permissions = new Vector<>(perms.size());
++        Vector<Permission> permissions = new Vector<Permission>(perms.size());
+ 
+         synchronized (this) {
+             permissions.addAll(perms);
+diff -up openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java.sav openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java
+--- openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java.sav	2011-07-29 12:21:17.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java	2011-07-29 14:27:07.788531232 -0400
+@@ -569,7 +569,7 @@ final class KrbServicePermissionCollecti
+         // Don't call out.defaultWriteObject()
+ 
+         // Write out Vector
+-        Vector<Permission> permissions = new Vector<>(perms.size());
++        Vector<Permission> permissions = new Vector<Permission>(perms.size());
+ 
+         synchronized (this) {
+             permissions.addAll(perms);
+diff -up openjdk-boot/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java.sav openjdk-boot/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java
+--- openjdk-boot/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java.sav	2011-07-29 12:21:17.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java	2011-07-29 14:27:07.789531217 -0400
+@@ -329,7 +329,7 @@ public final class PrivateCredentialPerm
+             throw new IllegalArgumentException("invalid empty name");
+         }
+ 
+-        ArrayList<CredOwner> pList = new ArrayList<>();
++        ArrayList<CredOwner> pList = new ArrayList<CredOwner>();
+         StringTokenizer tokenizer = new StringTokenizer(name, " ", true);
+         String principalClass = null;
+         String principalName = null;
+diff -up openjdk-boot/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java.sav openjdk-boot/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java
+--- openjdk-boot/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java.sav	2011-07-29 12:21:17.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java	2011-07-29 14:27:07.789531217 -0400
+@@ -48,7 +48,7 @@ public class SubjectDomainCombiner imple
+ 
+     private Subject subject;
+     private WeakKeyValueMap<ProtectionDomain, ProtectionDomain> cachedPDs =
+-                new WeakKeyValueMap<>();
++        new WeakKeyValueMap<ProtectionDomain, ProtectionDomain>();
+     private Set<Principal> principalSet;
+     private Principal[] principals;
+ 
+diff -up openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java.sav openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java
+--- openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java.sav	2011-07-29 12:21:23.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java	2011-07-29 14:27:07.789531217 -0400
+@@ -59,7 +59,7 @@ public class ValueConversions {
+         EnumMap<Wrapper, MethodHandle>[] caches
+                 = (EnumMap<Wrapper, MethodHandle>[]) new EnumMap[n];  // unchecked warning expected here
+         for (int i = 0; i < n; i++)
+-            caches[i] = new EnumMap<>(Wrapper.class);
++            caches[i] = new EnumMap<Wrapper, MethodHandle>(Wrapper.class);
+         return caches;
+     }
+ 
+@@ -1009,7 +1009,7 @@ public class ValueConversions {
+                                   Object a8, Object a9)
+                 { return makeArray(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
+     private static MethodHandle[] makeArrays() {
+-        ArrayList<MethodHandle> mhs = new ArrayList<>();
++        ArrayList<MethodHandle> mhs = new ArrayList<MethodHandle>();
+         for (;;) {
+             MethodHandle mh = findCollector("array", mhs.size(), Object[].class);
+             if (mh == null)  break;
+@@ -1055,7 +1055,7 @@ public class ValueConversions {
+                                   Object a8, Object a9)
+                 { fillWithArguments(a, pos, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); return a; }
+     private static MethodHandle[] makeFillArrays() {
+-        ArrayList<MethodHandle> mhs = new ArrayList<>();
++        ArrayList<MethodHandle> mhs = new ArrayList<MethodHandle>();
+         mhs.add(null);  // there is no empty fill; at least a0 is required
+         for (;;) {
+             MethodHandle mh = findCollector("fillArray", mhs.size(), Object[].class, Object[].class, Integer.class);
+@@ -1210,7 +1210,7 @@ public class ValueConversions {
+                                      Object a8, Object a9)
+                 { return makeList(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
+     private static MethodHandle[] makeLists() {
+-        ArrayList<MethodHandle> mhs = new ArrayList<>();
++        ArrayList<MethodHandle> mhs = new ArrayList<MethodHandle>();
+         for (;;) {
+             MethodHandle mh = findCollector("list", mhs.size(), List.class);
+             if (mh == null)  break;
+diff -up openjdk-boot/jdk/src/share/classes/sun/io/CharacterEncoding.java.sav openjdk-boot/jdk/src/share/classes/sun/io/CharacterEncoding.java
+--- openjdk-boot/jdk/src/share/classes/sun/io/CharacterEncoding.java.sav	2011-07-29 12:21:23.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/io/CharacterEncoding.java	2011-07-29 14:27:07.789531217 -0400
+@@ -54,7 +54,7 @@ public class CharacterEncoding {
+     private static volatile boolean installedAll;
+ 
+     static {
+-        aliasTable = new HashMap<>(460, 1.0f);                    /* MDA */
++        aliasTable = new HashMap<String,String>(460, 1.0f);                    /* MDA */
+ 
+         aliasTable.put("us-ascii",              "ASCII");
+         aliasTable.put("ascii",                 "ASCII");
+diff -up openjdk-boot/jdk/src/share/classes/sun/io/Converters.java.sav openjdk-boot/jdk/src/share/classes/sun/io/Converters.java
+--- openjdk-boot/jdk/src/share/classes/sun/io/Converters.java.sav	2011-07-29 12:21:23.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/io/Converters.java	2011-07-29 14:27:07.789531217 -0400
+@@ -120,7 +120,7 @@ public class Converters {
+ 
+     private static Class<?> cache(int type, Object encoding, Class<?> c) {
+         SoftReference<Object[]>[] srs = classCache[type];
+-        srs[CACHE_SIZE - 1] = new SoftReference<>(new Object[] { c, encoding });
++        srs[CACHE_SIZE - 1] = new SoftReference<Object[]>(new Object[] { c, encoding });
+         moveToFront(srs, CACHE_SIZE - 1);
+         return c;
+     }
+diff -up openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java.sav openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java
+--- openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java.sav	2011-07-29 12:21:24.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2011-07-29 14:27:07.789531217 -0400
+@@ -173,7 +173,7 @@ public enum LauncherHelper {
+     private static void printProperties(PrintStream ostream) {
+         Properties p = System.getProperties();
+         ostream.println(PROP_SETTINGS);
+-        List<String> sortedPropertyKeys = new ArrayList<>();
++        List<String> sortedPropertyKeys = new ArrayList<String>();
+         sortedPropertyKeys.addAll(p.stringPropertyNames());
+         Collections.sort(sortedPropertyKeys);
+         for (String x : sortedPropertyKeys) {
+@@ -248,7 +248,7 @@ public enum LauncherHelper {
+         }
+         // Locale does not implement Comparable so we convert it to String
+         // and sort it for pretty printing.
+-        Set<String> sortedSet = new TreeSet<>();
++        Set<String> sortedSet = new TreeSet<String>();
+         for (Locale l : tlocales) {
+             sortedSet.add(l.toString());
+         }
+diff -up openjdk-boot/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java.sav openjdk-boot/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java
+--- openjdk-boot/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java.sav	2011-07-29 12:21:24.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java	2011-07-29 14:27:07.789531217 -0400
+@@ -204,7 +204,7 @@ public class ManagementFactoryHelper {
+     private static List<BufferPoolMXBean> bufferPools = null;
+     public static synchronized List<BufferPoolMXBean> getBufferPoolMXBeans() {
+         if (bufferPools == null) {
+-            bufferPools = new ArrayList<>(2);
++            bufferPools = new ArrayList<BufferPoolMXBean>(2);
+             bufferPools.add(createBufferPoolMXBean(sun.misc.SharedSecrets.getJavaNioAccess()
+                 .getDirectBufferPool()));
+             bufferPools.add(createBufferPoolMXBean(sun.nio.ch.FileChannelImpl
+diff -up openjdk-boot/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java.sav openjdk-boot/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java
+--- openjdk-boot/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java.sav	2011-07-29 12:21:25.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java	2011-07-29 14:27:07.789531217 -0400
+@@ -52,7 +52,7 @@ public final class DNSNameService implem
+ 
+     // Per-thread soft cache of the last temporary context
+     private static ThreadLocal<SoftReference<ThreadContext>> contextRef =
+-            new ThreadLocal<>();
++            new ThreadLocal<SoftReference<ThreadContext>>();
+ 
+     // Simple class to encapsulate the temporary context
+     private static class ThreadContext {
+@@ -99,7 +99,7 @@ public final class DNSNameService implem
+ 
+         // new thread context needs to be created
+         if (thrCtxt == null) {
+-            final Hashtable<String,Object> env = new Hashtable<>();
++            final Hashtable<String,Object> env = new Hashtable<String,Object>();
+             env.put("java.naming.factory.initial",
+                     "com.sun.jndi.dns.DnsContextFactory");
+ 
+@@ -165,7 +165,7 @@ public final class DNSNameService implem
+                                       final String[] ids, int depth)
+             throws UnknownHostException
+     {
+-        ArrayList<String> results = new ArrayList<>();
++        ArrayList<String> results = new ArrayList<String>();
+         Attributes attrs;
+ 
+         // do the query
+diff -up openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java.sav openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java
+--- openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java.sav	2011-07-29 12:21:26.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java	2011-07-29 14:27:07.789531217 -0400
+@@ -111,7 +111,7 @@ public abstract class AuthenticationInfo
+      * at the same time, then all but the first will block until
+      * the first completes its authentication.
+      */
+-    static private HashMap<String,Thread> requests = new HashMap<>();
++    static private HashMap<String,Thread> requests = new HashMap<String,Thread>();
+ 
+     /* check if a request for this destination is in progress
+      * return false immediately if not. Otherwise block until
+diff -up openjdk-boot/jdk/src/share/classes/sun/net/www/URLConnection.java.sav openjdk-boot/jdk/src/share/classes/sun/net/www/URLConnection.java
+--- openjdk-boot/jdk/src/share/classes/sun/net/www/URLConnection.java.sav	2011-07-29 12:21:25.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/net/www/URLConnection.java	2011-07-29 14:27:07.790531202 -0400
+@@ -239,7 +239,7 @@ abstract public class URLConnection exte
+         url = null;
+     }
+ 
+-    private static HashMap<String,Void> proxiedHosts = new HashMap<>();
++    private static HashMap<String,Void> proxiedHosts = new HashMap<String,Void>();
+ 
+     public synchronized static void setProxiedHost(String host) {
+         proxiedHosts.put(host.toLowerCase(), null);
+diff -up openjdk-boot/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java.sav openjdk-boot/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java
+--- openjdk-boot/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java.sav	2011-07-29 12:21:26.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java	2011-07-29 14:27:07.790531202 -0400
+@@ -49,22 +49,22 @@ public class AbstractCharsetProvider
+     /* Maps canonical names to class names
+      */
+     private Map<String,String> classMap
+-        = new TreeMap<>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
++        = new TreeMap<String,String>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
+ 
+     /* Maps alias names to canonical names
+      */
+     private Map<String,String> aliasMap
+-        = new TreeMap<>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
++        = new TreeMap<String,String>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
+ 
+     /* Maps canonical names to alias-name arrays
+      */
+     private Map<String,String[]> aliasNameMap
+-        = new TreeMap<>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
++        = new TreeMap<String,String[]>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
+ 
+     /* Maps canonical names to soft references that hold cached instances
+      */
+     private Map<String,SoftReference<Charset>> cache
+-        = new TreeMap<>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
++        = new TreeMap<String,SoftReference<Charset>>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
+ 
+     private String packagePrefix;
+ 
+@@ -167,7 +167,7 @@ public class AbstractCharsetProvider
+         final ArrayList<String> ks;
+         synchronized (this) {
+             init();
+-            ks = new ArrayList<>(classMap.keySet());
++            ks = new ArrayList<String>(classMap.keySet());
+         }
+ 
+         return new Iterator<Charset>() {
+diff -up openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java.sav openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java
+--- openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java.sav	2011-07-29 12:21:27.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java	2011-07-29 14:27:07.790531202 -0400
+@@ -84,7 +84,7 @@ abstract class AbstractAclFileAttributeV
+             throw new IllegalArgumentException("'" + name() + ":" +
+                 attribute + "' not recognized");
+         }
+-        Map<String,Object> result = new HashMap<>(2);
++        Map<String,Object> result = new HashMap<String,Object>(2);
+         if (acl)
+             result.put(ACL_NAME, getAcl());
+         if (owner)
+diff -up openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java.sav openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java
+--- openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java.sav	2011-07-29 12:21:27.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java	2011-07-29 14:27:07.790531202 -0400
+@@ -89,8 +89,8 @@ abstract class AbstractBasicFileAttribut
+      * Used to build a map of attribute name/values.
+      */
+     static class AttributesBuilder {
+-        private Set<String> names = new HashSet<>();
+-        private Map<String,Object> map = new HashMap<>();
++        private Set<String> names = new HashSet<String>();
++        private Map<String,Object> map = new HashMap<String,Object>();
+         private boolean copyAll;
+ 
+         private AttributesBuilder(Set<String> allowed, String[] requested) {
+diff -up openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java.sav openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java
+--- openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java.sav	2011-07-29 12:21:27.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java	2011-07-29 14:27:07.790531202 -0400
+@@ -102,7 +102,7 @@ abstract class AbstractPoller implements
+             throw new NullPointerException();
+         if (events.length == 0)
+             throw new IllegalArgumentException("No events to register");
+-        Set<WatchEvent.Kind<?>> eventSet = new HashSet<>(events.length);
++        Set<WatchEvent.Kind<?>> eventSet = new HashSet<WatchEvent.Kind<?>>(events.length);
+         for (WatchEvent.Kind<?> event: events) {
+             // standard events
+             if (event == StandardWatchEventKinds.ENTRY_CREATE ||
+diff -up openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java.sav openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java
+--- openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java.sav	2011-07-29 12:21:27.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java	2011-07-29 14:27:07.790531202 -0400
+@@ -77,7 +77,7 @@ abstract class AbstractUserDefinedFileAt
+         throws IOException
+     {
+         // names of attributes to return
+-        List<String> names = new ArrayList<>();
++        List<String> names = new ArrayList<String>();
+         for (String name: attributes) {
+             if (name.equals("*")) {
+                 names = list();
+@@ -90,7 +90,7 @@ abstract class AbstractUserDefinedFileAt
+         }
+ 
+         // read each value and return in map
+-        Map<String,Object> result = new HashMap<>();
++        Map<String,Object> result = new HashMap<String,Object>();
+         for (String name: names) {
+             int size = size(name);
+             byte[] buf = new byte[size];
+diff -up openjdk-boot/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java.sav openjdk-boot/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java
+--- openjdk-boot/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java.sav	2011-07-29 12:21:27.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java	2011-07-29 14:27:07.790531202 -0400
+@@ -71,7 +71,7 @@ final class FileOwnerAttributeViewImpl
+ 
+     @Override
+     public Map<String,Object> readAttributes(String[] attributes) throws IOException {
+-        Map<String,Object> result = new HashMap<>();
++        Map<String,Object> result = new HashMap<String,Object>();
+         for (String attribute: attributes) {
+             if (attribute.equals("*") || attribute.equals(OWNER_NAME)) {
+                 result.put(OWNER_NAME, getOwner());
+diff -up openjdk-boot/jdk/src/share/classes/sun/nio/fs/Util.java.sav openjdk-boot/jdk/src/share/classes/sun/nio/fs/Util.java
+--- openjdk-boot/jdk/src/share/classes/sun/nio/fs/Util.java.sav	2011-07-29 12:21:27.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/Util.java	2011-07-29 14:27:07.790531202 -0400
+@@ -63,7 +63,7 @@ class Util {
+      * Returns a Set containing the given elements.
+      */
+     static <E> Set<E> newSet(E... elements) {
+-        HashSet<E> set = new HashSet<>();
++        HashSet<E> set = new HashSet<E>();
+         for (E e: elements) {
+             set.add(e);
+         }
+@@ -75,7 +75,7 @@ class Util {
+      * the given elements.
+      */
+     static <E> Set<E> newSet(Set<E> other, E... elements) {
+-        HashSet<E> set = new HashSet<>(other);
++        HashSet<E> set = new HashSet<E>(other);
+         for (E e: elements) {
+             set.add(e);
+         }
+diff -up openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java.sav openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java
+--- openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java.sav	2011-07-29 12:21:27.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java	2011-07-29 14:27:07.790531202 -0400
+@@ -149,10 +149,10 @@ public class Activation implements Seria
+ 
+     /** maps activation id to its respective group id */
+     private Map<ActivationID,ActivationGroupID> idTable =
+-        new ConcurrentHashMap<>();
++        new ConcurrentHashMap<ActivationID,ActivationGroupID>();
+     /** maps group id to its GroupEntry groups */
+     private Map<ActivationGroupID,GroupEntry> groupTable =
+-        new ConcurrentHashMap<>();
++        new ConcurrentHashMap<ActivationGroupID,GroupEntry>();
+ 
+     private byte majorVersion = MAJOR_VERSION;
+     private byte minorVersion = MINOR_VERSION;
+@@ -288,10 +288,10 @@ public class Activation implements Seria
+     {
+         ois.defaultReadObject();
+         if (! (groupTable instanceof ConcurrentHashMap)) {
+-            groupTable = new ConcurrentHashMap<>(groupTable);
++            groupTable = new ConcurrentHashMap<ActivationGroupID,GroupEntry>(groupTable);
+         }
+         if (! (idTable instanceof ConcurrentHashMap)) {
+-            idTable = new ConcurrentHashMap<>(idTable);
++            idTable = new ConcurrentHashMap<ActivationID,ActivationGroupID>(idTable);
+         }
+     }
+ 
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java.sav openjdk-boot/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java	2011-07-29 14:27:07.790531202 -0400
+@@ -37,7 +37,7 @@ import java.security.acl.*;
+  */
+ public class AclEntryImpl implements AclEntry {
+     private Principal user = null;
+-    private Vector<Permission> permissionSet = new Vector<>(10, 10);
++    private Vector<Permission> permissionSet = new Vector<Permission>(10, 10);
+     private boolean negative = false;
+ 
+     /**
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/acl/AclImpl.java.sav openjdk-boot/jdk/src/share/classes/sun/security/acl/AclImpl.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/acl/AclImpl.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/acl/AclImpl.java	2011-07-29 14:27:07.791531187 -0400
+@@ -41,15 +41,15 @@ public class AclImpl extends OwnerImpl i
+     // or principal.
+     //
+     private Hashtable<Principal, AclEntry> allowedUsersTable =
+-                                        new Hashtable<>(23);
++        new Hashtable<Principal,AclEntry>(23);
+     private Hashtable<Principal, AclEntry> allowedGroupsTable =
+-                                        new Hashtable<>(23);
++        new Hashtable<Principal, AclEntry>(23);
+     private Hashtable<Principal, AclEntry> deniedUsersTable =
+-                                        new Hashtable<>(23);
++        new Hashtable<Principal, AclEntry>(23);
+     private Hashtable<Principal, AclEntry> deniedGroupsTable =
+-                                        new Hashtable<>(23);
++        new Hashtable<Principal, AclEntry>(23);
+     private String aclName = null;
+-    private Vector<Permission> zeroSet = new Vector<>(1,1);
++    private Vector<Permission> zeroSet = new Vector<Permission>(1,1);
+ 
+ 
+     /**
+@@ -294,7 +294,7 @@ public class AclImpl extends OwnerImpl i
+     //
+     private static Enumeration<Permission> union(Enumeration<Permission> e1,
+                 Enumeration<Permission> e2) {
+-        Vector<Permission> v = new Vector<>(20, 20);
++        Vector<Permission> v = new Vector<Permission>(20, 20);
+ 
+         while (e1.hasMoreElements())
+             v.addElement(e1.nextElement());
+@@ -313,7 +313,7 @@ public class AclImpl extends OwnerImpl i
+     //
+     private Enumeration<Permission> subtract(Enumeration<Permission> e1,
+                 Enumeration<Permission> e2) {
+-        Vector<Permission> v = new Vector<>(20, 20);
++        Vector<Permission> v = new Vector<Permission>(20, 20);
+ 
+         while (e1.hasMoreElements())
+             v.addElement(e1.nextElement());
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/acl/GroupImpl.java.sav openjdk-boot/jdk/src/share/classes/sun/security/acl/GroupImpl.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/acl/GroupImpl.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/acl/GroupImpl.java	2011-07-29 14:27:07.791531187 -0400
+@@ -34,7 +34,7 @@ import java.security.acl.*;
+  * @author      Satish Dharmaraj
+  */
+ public class GroupImpl implements Group {
+-    private Vector<Principal> groupMembers = new Vector<>(50, 100);
++    private Vector<Principal> groupMembers = new Vector<Principal>(50, 100);
+     private String group;
+ 
+     /**
+@@ -131,7 +131,7 @@ public class GroupImpl implements Group 
+         if (groupMembers.contains(member)) {
+             return true;
+         } else {
+-            Vector<Group> alreadySeen = new Vector<>(10);
++            Vector<Group> alreadySeen = new Vector<Group>(10);
+             return isMemberRecurse(member, alreadySeen);
+         }
+     }
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/jca/ProviderList.java.sav openjdk-boot/jdk/src/share/classes/sun/security/jca/ProviderList.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/jca/ProviderList.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/jca/ProviderList.java	2011-07-29 14:27:07.791531187 -0400
+@@ -96,7 +96,7 @@ public final class ProviderList {
+         if (providerList.getProvider(p.getName()) != null) {
+             return providerList;
+         }
+-        List<ProviderConfig> list = new ArrayList<>
++        List<ProviderConfig> list = new ArrayList<ProviderConfig>
+                                     (Arrays.asList(providerList.configs));
+         int n = list.size();
+         if ((position < 0) || (position > n)) {
+@@ -160,7 +160,7 @@ public final class ProviderList {
+      * Return a new ProviderList parsed from the java.security Properties.
+      */
+     private ProviderList() {
+-        List<ProviderConfig> configList = new ArrayList<>();
++        List<ProviderConfig> configList = new ArrayList<ProviderConfig>();
+         for (int i = 1; true; i++) {
+             String entry = Security.getProperty("security.provider." + i);
+             if (entry == null) {
+@@ -200,7 +200,7 @@ public final class ProviderList {
+      * possible recursion and deadlock during verification.
+      */
+     ProviderList getJarList(String[] jarClassNames) {
+-        List<ProviderConfig> newConfigs = new ArrayList<>();
++        List<ProviderConfig> newConfigs = new ArrayList<ProviderConfig>();
+         for (String className : jarClassNames) {
+             ProviderConfig newConfig = new ProviderConfig(className);
+             for (ProviderConfig config : configs) {
+@@ -356,7 +356,7 @@ public final class ProviderList {
+      */
+     @Deprecated
+     public List<Service> getServices(String type, List<String> algorithms) {
+-        List<ServiceId> ids = new ArrayList<>();
++        List<ServiceId> ids = new ArrayList<ServiceId>();
+         for (String alg : algorithms) {
+             ids.add(new ServiceId(type, alg));
+         }
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/jca/Providers.java.sav openjdk-boot/jdk/src/share/classes/sun/security/jca/Providers.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/jca/Providers.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/jca/Providers.java	2011-07-29 14:27:07.791531187 -0400
+@@ -40,7 +40,7 @@ import java.security.Security;
+ public class Providers {
+ 
+     private static final ThreadLocal<ProviderList> threadLists =
+-        new InheritableThreadLocal<>();
++        new InheritableThreadLocal<ProviderList>();
+ 
+     // number of threads currently using thread-local provider lists
+     // tracked to allow an optimization if == 0
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java.sav openjdk-boot/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java	2011-07-29 14:27:07.791531187 -0400
+@@ -267,7 +267,7 @@ public class Krb5Util {
+             if (ktabs.isEmpty()) {
+                 return kk.toArray(new KerberosKey[kk.size()]);
+             } else {
+-                List<KerberosKey> keys = new ArrayList<>();
++                List<KerberosKey> keys = new ArrayList<KerberosKey>();
+                 for (KeyTab ktab: ktabs) {
+                     for (KerberosKey k: ktab.getKeys(kp)) {
+                         keys.add(k);
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/Config.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/Config.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/Config.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/Config.java	2011-07-29 14:27:07.791531187 -0400
+@@ -527,7 +527,7 @@ public class Config {
+                 }
+                 })));
+                 String Line;
+-                Vector<String> v = new Vector<>();
++                Vector<String> v = new Vector<String>();
+                 String previous = null;
+                 while ((Line = br.readLine()) != null) {
+                     // ignore comments and blank line in the configuration file.
+@@ -588,7 +588,7 @@ public class Config {
+             throw new KrbException("I/O error while reading" +
+                         " configuration file.");
+         }
+-        Hashtable<String,Object> table = new Hashtable<>();
++        Hashtable<String,Object> table = new Hashtable<String,Object>();
+         for (int i = 0; i < v.size(); i++) {
+             String line = v.elementAt(i).trim();
+             if (line.equalsIgnoreCase("[realms]")) {
+@@ -597,7 +597,7 @@ public class Config {
+                     if ((count == v.size()) ||
+                         (v.elementAt(count).startsWith("["))) {
+                         Hashtable<String,Hashtable<String,Vector<String>>> temp =
+-                            new Hashtable<>();
++                            new Hashtable<String,Hashtable<String,Vector<String>>>();
+                         temp = parseRealmField(v, i + 1, count);
+                         table.put("realms", temp);
+                         i = count - 1;
+@@ -610,7 +610,7 @@ public class Config {
+                     if ((count == v.size()) ||
+                         (v.elementAt(count).startsWith("["))) {
+                         Hashtable<String,Hashtable<String,Vector<String>>> temp =
+-                            new Hashtable<>();
++                            new Hashtable<String,Hashtable<String,Vector<String>>>();
+                         temp = parseRealmField(v, i + 1, count);
+                         table.put("capaths", temp);
+                         i = count - 1;
+@@ -728,7 +728,7 @@ public class Config {
+      * Parses key-value pairs under a stanza name.
+      */
+     private Hashtable<String,String>  parseField(Vector<String> v, int start, int end) {
+-        Hashtable<String,String> table = new Hashtable<>();
++      Hashtable<String,String> table = new Hashtable<String,String>();
+         String line;
+         for (int i = start; i < end; i++) {
+             line = v.elementAt(i);
+@@ -750,7 +750,7 @@ public class Config {
+      * information for the realm given within a pair of braces.
+      */
+     private Hashtable<String,Hashtable<String,Vector<String>>> parseRealmField(Vector<String> v, int start, int end) {
+-        Hashtable<String,Hashtable<String,Vector<String>>> table = new Hashtable<>();
++        Hashtable<String,Hashtable<String,Vector<String>>> table = new Hashtable<String,Hashtable<String,Vector<String>>>();
+         String line;
+         for (int i = start; i < end; i++) {
+             line = v.elementAt(i).trim();
+@@ -790,9 +790,9 @@ public class Config {
+      * Parses key-value pairs within each braces under [realms].
+      */
+     private Hashtable<String,Vector<String>> parseRealmFieldEx(Vector<String> v, int start, int end) {
+-        Hashtable<String,Vector<String>> table = new Hashtable<>();
+-        Vector<String> keyVector = new Vector<>();
+-        Vector<String> nameVector = new Vector<>();
++        Hashtable<String,Vector<String>> table = new Hashtable<String,Vector<String>>();
++        Vector<String> keyVector = new Vector<String>();
++        Vector<String> nameVector = new Vector<String>();
+         String line = "";
+         String key;
+         for (int i = start; i < end; i++) {
+@@ -897,7 +897,7 @@ public class Config {
+             }
+             st = new StringTokenizer(default_enctypes, delim);
+             int len = st.countTokens();
+-            ArrayList<Integer> ls = new ArrayList<>(len);
++            ArrayList<Integer> ls = new ArrayList<Integer>(len);
+             int type;
+             for (int i = 0; i < len; i++) {
+                 type = getType(st.nextToken());
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java	2011-07-29 14:27:07.791531187 -0400
+@@ -176,7 +176,7 @@ public class Authenticator {
+      * @exception IOException if an I/O error occurs while reading encoded data.
+      */
+     public byte[] asn1Encode() throws Asn1Exception, IOException {
+-        Vector<DerValue> v = new Vector<>();
++        Vector<DerValue> v = new Vector<DerValue>();
+         DerOutputStream temp = new DerOutputStream();
+         temp.putInteger(BigInteger.valueOf(authenticator_vno));
+         v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte) 0x00), temp.toByteArray()));
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java	2011-07-29 14:27:07.791531187 -0400
+@@ -99,7 +99,7 @@ public class AuthorizationData implement
+      * @exception IOException if an I/O error occurs while reading encoded data.
+      */
+     public AuthorizationData(DerValue der) throws Asn1Exception, IOException {
+-        Vector<AuthorizationDataEntry> v = new Vector<>();
++        Vector<AuthorizationDataEntry> v = new Vector<AuthorizationDataEntry>();
+         if (der.getTag() != DerValue.tag_Sequence) {
+             throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+         }
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java	2011-07-29 14:27:07.791531187 -0400
+@@ -490,7 +490,7 @@ public class FileCredentialsCache extend
+ 
+     private static String exec(String c) {
+         StringTokenizer st = new StringTokenizer(c);
+-        Vector<String> v = new Vector<>();
++        Vector<String> v = new Vector<String>();
+         while (st.hasMoreTokens()) {
+             v.addElement(st.nextToken());
+         }
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java	2011-07-29 14:27:07.792531172 -0400
+@@ -257,7 +257,7 @@ public abstract class EType {
+                 + configName);
+         }
+ 
+-        List<Integer> list = new ArrayList<>(answer.length);
++        List<Integer> list = new ArrayList<Integer>(answer.length);
+         for (int i = 0; i < answer.length; i++) {
+             if (EncryptionKey.findKey(answer[i], keys) != null) {
+                 list.add(answer[i]);
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java	2011-07-29 14:27:07.792531172 -0400
+@@ -133,7 +133,7 @@ public class EncAPRepPart {
+      * @exception IOException if an I/O error occurs while reading encoded data.
+      */
+     public byte[] asn1Encode() throws Asn1Exception, IOException {
+-        Vector<DerValue> v = new Vector<>();
++        Vector<DerValue> v = new Vector<DerValue>();
+         DerOutputStream temp = new DerOutputStream();
+         v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT,
+                 true, (byte) 0x00), ctime.asn1Encode()));
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java	2011-07-29 14:27:07.792531172 -0400
+@@ -179,7 +179,7 @@ public class HostAddresses implements Cl
+     */
+     public HostAddresses(DerValue encoding)
+         throws  Asn1Exception, IOException {
+-        Vector<HostAddress> tempAddresses = new Vector<>();
++        Vector<HostAddress> tempAddresses = new Vector<HostAddress>();
+         DerValue der = null;
+         while (encoding.getData().available() > 0) {
+             der = encoding.getData().getDerValue();
+@@ -265,7 +265,7 @@ public class HostAddresses implements Cl
+         if (addresses == null || addresses.length == 0)
+             return null;
+ 
+-        ArrayList<InetAddress> ipAddrs = new ArrayList<>(addresses.length);
++        ArrayList<InetAddress> ipAddrs = new ArrayList<InetAddress>(addresses.length);
+ 
+         for (int i = 0; i < addresses.length; i++) {
+             try {
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java	2011-07-29 14:27:07.792531172 -0400
+@@ -158,7 +158,7 @@ public class KDCReqBody {
+             throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+         }
+         der = encoding.getData().getDerValue();
+-        Vector<Integer> v = new Vector<>();
++        Vector<Integer> v = new Vector<Integer>();
+         if ((der.getTag() & (byte)0x1F) == (byte)0x08) {
+             subDer = der.getData().getDerValue();
+ 
+@@ -183,7 +183,7 @@ public class KDCReqBody {
+             encAuthorizationData = EncryptedData.parse(encoding.getData(), (byte)0x0A, true);
+         }
+         if (encoding.getData().available() > 0) {
+-            Vector<Ticket> tempTickets = new Vector<>();
++            Vector<Ticket> tempTickets = new Vector<Ticket>();
+             der = encoding.getData().getDerValue();
+             if ((der.getTag() & (byte)0x1F) == (byte)0x0B) {
+                 subDer = der.getData().getDerValue();
+@@ -216,7 +216,7 @@ public class KDCReqBody {
+      *
+      */
+     public byte[] asn1Encode(int msgType) throws Asn1Exception, IOException {
+-        Vector<DerValue> v = new Vector<>();
++        Vector<DerValue> v = new Vector<DerValue>();
+         v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte)0x00), kdcOptions.asn1Encode()));
+         if (msgType == Krb5.KRB_AS_REQ) {
+             if (cname != null) {
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java	2011-07-29 14:27:07.792531172 -0400
+@@ -150,7 +150,7 @@ public class KDCReq {
+             if (subsubDer.getTag() != DerValue.tag_SequenceOf) {
+                 throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+             }
+-            Vector<PAData> v = new Vector<>();
++            Vector<PAData> v = new Vector<PAData>();
+             while (subsubDer.getData().available() > 0) {
+                 v.addElement(new PAData(subsubDer.getData().getDerValue()));
+             }
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java	2011-07-29 14:27:07.792531172 -0400
+@@ -157,7 +157,7 @@ public class KrbCredInfo {
+      * @exception IOException if an I/O error occurs while reading encoded data.
+      */
+     public byte[] asn1Encode() throws Asn1Exception, IOException {
+-        Vector<DerValue> v = new Vector<>();
++        Vector<DerValue> v = new Vector<DerValue>();
+         v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte)0x00), key.asn1Encode()));
+         if (prealm != null)
+             v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte)0x01), prealm.asn1Encode()));
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java	2011-07-29 14:27:07.792531172 -0400
+@@ -134,7 +134,7 @@ public class KRBCred {
+             if (subsubDer.getTag() != DerValue.tag_SequenceOf) {
+                 throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+             }
+-            Vector<Ticket> v = new Vector<>();
++            Vector<Ticket> v = new Vector<Ticket>();
+             while (subsubDer.getData().available() > 0) {
+                 v.addElement(new Ticket(subsubDer.getData().getDerValue()));
+             }
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java	2011-07-29 14:27:07.792531172 -0400
+@@ -260,7 +260,7 @@ public class KRBError implements java.io
+     private void parsePAData(byte[] data)
+             throws IOException, Asn1Exception {
+         DerValue derPA = new DerValue(data);
+-        List<PAData> paList = new ArrayList<>();
++        List<PAData> paList = new ArrayList<PAData>();
+         while (derPA.data.available() > 0) {
+             // read the PA-DATA
+             DerValue tmp = derPA.data.getDerValue();
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java.sav	2011-07-29 14:27:01.432625563 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	2011-07-29 14:27:07.792531172 -0400
+@@ -67,7 +67,7 @@ public class KeyTab implements KeyTabCon
+ 
+     // Attention: Currently there is no way to remove a keytab from this map,
+     // this might lead to a memory leak.
+-    private static Map<String,KeyTab> map = new HashMap<>();
++    private static Map<String,KeyTab> map = new HashMap<String,KeyTab>();
+ 
+     // KeyTab file does not exist. Note: a missing keytab is still valid
+     private boolean isMissing = false;
+@@ -79,7 +79,7 @@ public class KeyTab implements KeyTabCon
+     private long lastModified;
+     private int kt_vno;
+ 
+-    private Vector<KeyTabEntry> entries = new Vector<>();
++    private Vector<KeyTabEntry> entries = new Vector<KeyTabEntry>();
+ 
+     /**
+      * Constructs a KeyTab object.
+@@ -280,7 +280,7 @@ public class KeyTab implements KeyTabCon
+         KeyTabEntry entry;
+         EncryptionKey key;
+         int size = entries.size();
+-        ArrayList<EncryptionKey> keys = new ArrayList<>(size);
++        ArrayList<EncryptionKey> keys = new ArrayList<EncryptionKey>(size);
+         for (int i = size-1; i >= 0; i--) {
+             entry = entries.elementAt(i);
+             if (entry.service.match(service)) {
+@@ -482,7 +482,7 @@ public class KeyTab implements KeyTabCon
+         int count = 0;
+ 
+         // Remember the highest KVNO for each etype. Used for kvno == -2
+-        Map<Integer,Integer> highest = new HashMap<>();
++        Map<Integer,Integer> highest = new HashMap<Integer, Integer>();
+ 
+         for (int i = entries.size()-1; i >= 0; i--) {
+             KeyTabEntry e = entries.get(i);
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java	2011-07-29 14:27:07.792531172 -0400
+@@ -77,7 +77,7 @@ public class LastReq {
+      */
+ 
+     public LastReq(DerValue encoding) throws Asn1Exception, IOException {
+-        Vector<LastReqEntry> v= new Vector<>();
++        Vector<LastReqEntry> v= new Vector<LastReqEntry>();
+         if (encoding.getTag() != DerValue.tag_Sequence) {
+             throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+         }
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/KdcComm.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/KdcComm.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/KdcComm.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/KdcComm.java	2011-07-29 14:27:07.792531172 -0400
+@@ -462,7 +462,7 @@ public final class KdcComm {
+      */
+     static class KdcAccessibility {
+         // Known bad KDCs
+-        private static Set<String> bads = new HashSet<>();
++        private static Set<String> bads = new HashSet<String>();
+ 
+         private static synchronized void addBad(String kdc) {
+             if (DEBUG) {
+@@ -492,9 +492,9 @@ public final class KdcComm {
+         // Returns a preferred KDC list by putting the bad ones at the end
+         private static synchronized String[] list(String kdcList) {
+             StringTokenizer st = new StringTokenizer(kdcList);
+-            List<String> list = new ArrayList<>();
++            List<String> list = new ArrayList<String>();
+             if (badPolicy == BpType.TRY_LAST) {
+-                List<String> badkdcs = new ArrayList<>();
++                List<String> badkdcs = new ArrayList<String>();
+                 while (st.hasMoreTokens()) {
+                     String t = st.nextToken();
+                     if (bads.contains(t)) badkdcs.add(t);
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java	2011-07-29 14:27:07.793531157 -0400
+@@ -244,7 +244,7 @@ public class PrincipalName
+             if (subDer.getTag() != DerValue.tag_SequenceOf) {
+                 throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+             }
+-            Vector<String> v = new Vector<>();
++            Vector<String> v = new Vector<String>();
+             DerValue subSubDer;
+             while(subDer.getData().available() > 0) {
+                 subSubDer = subDer.getData().getDerValue();
+@@ -299,7 +299,7 @@ public class PrincipalName
+     // Code repetition, realm parsed again by class Realm
+     protected static String[] parseName(String name) {
+ 
+-        Vector<String> tempStrings = new Vector<>();
++        Vector<String> tempStrings = new Vector<String>();
+         String temp = name;
+         int i = 0;
+         int componentStart = 0;
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/krb5/Realm.java.sav openjdk-boot/jdk/src/share/classes/sun/security/krb5/Realm.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/Realm.java.sav	2011-07-29 12:21:28.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/Realm.java	2011-07-29 14:27:07.793531157 -0400
+@@ -359,14 +359,14 @@ public class Realm implements Cloneable 
+         }
+ 
+         String tempTarget = null, tempRealm = null;
+-        Stack<String> iStack = new Stack<>();
++        Stack<String> iStack = new Stack<String>();
+ 
+         /*
+          * The half-established reversed-path, starting from the final target
+          * (sRealm), each item can be connected to by the next one.
+          * Might contains wrong item, if found, a bad track is performed
+          */
+-        Vector<String> tempList = new Vector<>(8, 8);
++        Vector<String> tempList = new Vector<String>(8, 8);
+         tempList.add(sRealm);
+ 
+         int count = 0; // For debug only
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java.sav openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java	2011-07-29 14:27:07.793531157 -0400
+@@ -590,7 +590,7 @@ class DistributionPointFetcher {
+             // Except the performance improvement, another benefit is to break
+             // the dead loop while looking for the issuer back and forth
+             // between the delegated self-issued certificate and its issuer.
+-            Set<TrustAnchor> newTrustAnchors = new HashSet<>(trustAnchors);
++            Set<TrustAnchor> newTrustAnchors = new HashSet<TrustAnchor>(trustAnchors);
+ 
+             if (prevKey != null) {
+                 // Add the previous certificate as a trust anchor.
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java.sav openjdk-boot/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java	2011-07-29 14:27:07.793531157 -0400
+@@ -683,7 +683,7 @@ abstract class JavaKeyStore extends KeyS
+                     // Read the certificate chain
+                     int numOfCerts = dis.readInt();
+                     if (numOfCerts > 0) {
+-                        List<Certificate> certs = new ArrayList<>(
++                        List<Certificate> certs = new ArrayList<Certificate>(
+                                 numOfCerts > 10 ? 10 : numOfCerts);
+                         for (int j = 0; j < numOfCerts; j++) {
+                             if (xVersion == 2) {
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/provider/PolicyFile.java.sav openjdk-boot/jdk/src/share/classes/sun/security/provider/PolicyFile.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/provider/PolicyFile.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/PolicyFile.java	2011-07-29 14:27:07.793531157 -0400
+@@ -299,7 +299,7 @@ public class PolicyFile extends java.sec
+     private static final int DEFAULT_CACHE_SIZE = 1;
+ 
+     // contains the policy grant entries, PD cache, and alias mapping
+-    private AtomicReference<PolicyInfo> policyInfo = new AtomicReference<>();
++    private AtomicReference<PolicyInfo> policyInfo = new AtomicReference<PolicyInfo>();
+     private boolean constructed = false;
+ 
+     private boolean expandProperties = true;
+@@ -1333,7 +1333,7 @@ public class PolicyFile extends java.sec
+ 
+         List<PolicyParser.PrincipalEntry> entryPs = entry.getPrincipals();
+         if (debug != null) {
+-            ArrayList<PolicyParser.PrincipalEntry> accPs = new ArrayList<>();
++            ArrayList<PolicyParser.PrincipalEntry> accPs = new ArrayList<PolicyParser.PrincipalEntry>();
+             if (principals != null) {
+                 for (int i = 0; i < principals.length; i++) {
+                     accPs.add(new PolicyParser.PrincipalEntry
+@@ -1414,7 +1414,7 @@ public class PolicyFile extends java.sec
+                     // check if the PrincipalComparator
+                     // implies the current thread's principals
+ 
+-                    Set<Principal> pSet = new HashSet<>(principals.length);
++                    Set<Principal> pSet = new HashSet<Principal>(principals.length);
+                     for (int j = 0; j < principals.length; j++) {
+                         pSet.add(principals[j]);
+                     }
+@@ -1697,7 +1697,7 @@ public class PolicyFile extends java.sec
+             // build an info array for every principal
+             // in the current domain which has a principal class
+             // that is equal to policy entry principal class name
+-            List<Principal> plist = new ArrayList<>();
++            List<Principal> plist = new ArrayList<Principal>();
+             for (int i = 0; i < pdp.length; i++) {
+                 if(pe.principalClass.equals(pdp[i].getClass().getName()))
+                     plist.add(pdp[i]);
+@@ -1767,7 +1767,7 @@ public class PolicyFile extends java.sec
+             // Done
+             return certs;
+ 
+-        ArrayList<Certificate> userCertList = new ArrayList<>();
++        ArrayList<Certificate> userCertList = new ArrayList<Certificate>();
+         i = 0;
+         while (i < certs.length) {
+             userCertList.add(certs[i]);
+@@ -2246,7 +2246,7 @@ public class PolicyFile extends java.sec
+                     if (this.certs == null) {
+                         // extract the signer certs
+                         ArrayList<Certificate> signerCerts =
+-                            new ArrayList<>();
++                            new ArrayList<Certificate>();
+                         i = 0;
+                         while (i < certs.length) {
+                             signerCerts.add(certs[i]);
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/provider/Sun.java.sav openjdk-boot/jdk/src/share/classes/sun/security/provider/Sun.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/provider/Sun.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/Sun.java	2011-07-29 14:27:07.793531157 -0400
+@@ -55,7 +55,7 @@ public final class Sun extends Provider 
+             SunEntries.putEntries(this);
+         } else {
+             // use LinkedHashMap to preserve the order of the PRNGs
+-            Map<Object, Object> map = new LinkedHashMap<>();
++            Map<Object, Object> map = new LinkedHashMap<Object, Object>();
+             SunEntries.putEntries(map);
+             AccessController.doPrivileged(new PutAllAction(this, map));
+         }
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/provider/VerificationProvider.java.sav openjdk-boot/jdk/src/share/classes/sun/security/provider/VerificationProvider.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/provider/VerificationProvider.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/VerificationProvider.java	2011-07-29 14:27:07.793531157 -0400
+@@ -76,7 +76,7 @@ public final class VerificationProvider 
+             SunRsaSignEntries.putEntries(this);
+         } else {
+             // use LinkedHashMap to preserve the order of the PRNGs
+-            Map<Object, Object> map = new LinkedHashMap<>();
++            Map<Object, Object> map = new LinkedHashMap<Object, Object>();
+             SunEntries.putEntries(map);
+             SunRsaSignEntries.putEntries(map);
+             AccessController.doPrivileged(new PutAllAction(this, map));
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/provider/X509Factory.java.sav openjdk-boot/jdk/src/share/classes/sun/security/provider/X509Factory.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/provider/X509Factory.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/X509Factory.java	2011-07-29 14:27:07.794531142 -0400
+@@ -409,10 +409,10 @@ public class X509Factory extends Certifi
+         parseX509orPKCS7Cert(InputStream is)
+         throws CertificateException, IOException
+     {
+-        Collection<X509CertImpl> coll = new ArrayList<>();
++        Collection<X509CertImpl> coll = new ArrayList<X509CertImpl>();
+         byte[] data = readOneBlock(is);
+         if (data == null) {
+-            return new ArrayList<>(0);
++            return new ArrayList<Certificate>(0);
+         }
+         try {
+             PKCS7 pkcs7 = new PKCS7(data);
+@@ -422,7 +422,7 @@ public class X509Factory extends Certifi
+                 return Arrays.asList(certs);
+             } else {
+                 // no crls provided
+-                return new ArrayList<>(0);
++                return new ArrayList<Certificate>(0);
+             }
+         } catch (ParsingException e) {
+             while (data != null) {
+@@ -442,10 +442,10 @@ public class X509Factory extends Certifi
+         parseX509orPKCS7CRL(InputStream is)
+         throws CRLException, IOException
+     {
+-        Collection<X509CRLImpl> coll = new ArrayList<>();
++        Collection<X509CRLImpl> coll = new ArrayList<X509CRLImpl>();
+         byte[] data = readOneBlock(is);
+         if (data == null) {
+-            return new ArrayList<>(0);
++            return new ArrayList<java.security.cert.CRL>(0);
+         }
+         try {
+             PKCS7 pkcs7 = new PKCS7(data);
+@@ -455,7 +455,7 @@ public class X509Factory extends Certifi
+                 return Arrays.asList(crls);
+             } else {
+                 // no crls provided
+-                return new ArrayList<>(0);
++                return new ArrayList<java.security.cert.CRL>(0);
+             }
+         } catch (ParsingException e) {
+             while (data != null) {
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/rsa/RSACore.java.sav openjdk-boot/jdk/src/share/classes/sun/security/rsa/RSACore.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/rsa/RSACore.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/rsa/RSACore.java	2011-07-29 14:27:07.794531142 -0400
+@@ -219,7 +219,7 @@ public final class RSACore {
+     // use a weak hashmap so that cached values are automatically cleared
+     // when the modulus is GC'ed
+     private final static Map<BigInteger, BlindingParameters> blindingCache =
+-                new WeakHashMap<>();
++        new WeakHashMap<BigInteger, BlindingParameters>();
+ 
+     /**
+      * Set of blinding parameters for a given RSA key.
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java.sav openjdk-boot/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java	2011-07-29 14:27:07.794531142 -0400
+@@ -52,7 +52,7 @@ public final class SunRsaSign extends Pr
+             SunRsaSignEntries.putEntries(this);
+         } else {
+             // use LinkedHashMap to preserve the order of the PRNGs
+-            Map<Object, Object> map = new HashMap<>();
++            Map<Object, Object> map = new HashMap<Object, Object>();
+             SunRsaSignEntries.putEntries(map);
+             AccessController.doPrivileged(new PutAllAction(this, map));
+         }
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/ssl/CipherSuite.java.sav openjdk-boot/jdk/src/share/classes/sun/security/ssl/CipherSuite.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/ssl/CipherSuite.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/CipherSuite.java	2011-07-29 14:27:07.794531142 -0400
+@@ -393,7 +393,7 @@ final class CipherSuite implements Compa
+ 
+         // Map BulkCipher -> Boolean(available)
+         private final static Map<BulkCipher,Boolean> availableCache =
+-                                            new HashMap<>(8);
++            new HashMap<BulkCipher,Boolean>(8);
+ 
+         // descriptive name including key size, e.g. AES/128
+         final String description;
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java.sav openjdk-boot/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java	2011-07-29 14:27:07.794531142 -0400
+@@ -656,7 +656,7 @@ final class ClientHandshaker extends Han
+         if (certRequest != null) {
+             X509ExtendedKeyManager km = sslContext.getX509KeyManager();
+ 
+-            ArrayList<String> keytypesTmp = new ArrayList<>(4);
++            ArrayList<String> keytypesTmp = new ArrayList<String>(4);
+ 
+             for (int i = 0; i < certRequest.types.length; i++) {
+                 String typeName;
+@@ -1175,7 +1175,7 @@ final class ClientHandshaker extends Han
+                         "Can't reuse existing SSL client session");
+                 }
+ 
+-                Collection<CipherSuite> cipherList = new ArrayList<>(2);
++                Collection<CipherSuite> cipherList = new ArrayList<CipherSuite>(2);
+                 cipherList.add(sessionSuite);
+                 if (!secureRenegotiation &&
+                         cipherSuites.contains(CipherSuite.C_SCSV)) {
+@@ -1193,7 +1193,7 @@ final class ClientHandshaker extends Han
+         // exclude SCSV for secure renegotiation
+         if (secureRenegotiation && cipherSuites.contains(CipherSuite.C_SCSV)) {
+             Collection<CipherSuite> cipherList =
+-                        new ArrayList<>(cipherSuites.size() - 1);
++                        new ArrayList<CipherSuite>(cipherSuites.size() - 1);
+             for (CipherSuite suite : cipherSuites.collection()) {
+                 if (suite != CipherSuite.C_SCSV) {
+                     cipherList.add(suite);
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java.sav openjdk-boot/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java	2011-07-29 14:27:07.794531142 -0400
+@@ -258,7 +258,7 @@ static final class ClientHello extends H
+     // add server_name extension
+     void addServerNameIndicationExtension(String hostname) {
+         // We would have checked that the hostname ia a FQDN.
+-        ArrayList<String> hostnames = new ArrayList<>(1);
++        ArrayList<String> hostnames = new ArrayList<String>(1);
+         hostnames.add(hostname);
+ 
+         try {
+@@ -434,7 +434,7 @@ class CertificateMsg extends HandshakeMe
+ 
+     CertificateMsg(HandshakeInStream input) throws IOException {
+         int chainLen = input.getInt24();
+-        List<Certificate> v = new ArrayList<>(4);
++        List<Certificate> v = new ArrayList<Certificate>(4);
+ 
+         CertificateFactory cf = null;
+         while (chainLen > 0) {
+@@ -1334,7 +1334,7 @@ class CertificateRequest extends Handsha
+ 
+         // read the certificate_authorities
+         int len = input.getInt16();
+-        ArrayList<DistinguishedName> v = new ArrayList<>();
++        ArrayList<DistinguishedName> v = new ArrayList<DistinguishedName>();
+         while (len >= 3) {
+             DistinguishedName dn = new DistinguishedName(input);
+             v.add(dn);
+@@ -1725,7 +1725,7 @@ static final class CertificateVerify ext
+     // Note that this will prevent the Spi classes from being GC'd. We assume
+     // that is not a problem.
+     private final static Map<Class,Object> methodCache =
+-                                        new ConcurrentHashMap<>();
++        new ConcurrentHashMap<Class,Object>();
+ 
+     private static void digestKey(MessageDigest md, SecretKey key) {
+         try {
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java.sav openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java	2011-07-29 14:27:07.794531142 -0400
+@@ -569,7 +569,7 @@ abstract class Handshaker {
+                 activeProtocols = getActiveProtocols();
+             }
+ 
+-            ArrayList<CipherSuite> suites = new ArrayList<>();
++            ArrayList<CipherSuite> suites = new ArrayList<CipherSuite>();
+             if (!(activeProtocols.collection().isEmpty()) &&
+                     activeProtocols.min.v != ProtocolVersion.NONE.v) {
+                 for (CipherSuite suite : enabledCipherSuites.collection()) {
+@@ -614,7 +614,7 @@ abstract class Handshaker {
+      */
+     ProtocolList getActiveProtocols() {
+         if (activeProtocols == null) {
+-            ArrayList<ProtocolVersion> protocols = new ArrayList<>(4);
++            ArrayList<ProtocolVersion> protocols = new ArrayList<ProtocolVersion>(4);
+             for (ProtocolVersion protocol : enabledProtocols.collection()) {
+                 boolean found = false;
+                 for (CipherSuite suite : enabledCipherSuites.collection()) {
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java.sav openjdk-boot/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java	2011-07-29 14:27:07.795531127 -0400
+@@ -169,7 +169,7 @@ final class ExtensionType {
+         return name;
+     }
+ 
+-    static List<ExtensionType> knownExtensions = new ArrayList<>(9);
++    static List<ExtensionType> knownExtensions = new ArrayList<ExtensionType>(9);
+ 
+     static ExtensionType get(int id) {
+         for (ExtensionType ext : knownExtensions) {
+@@ -673,7 +673,7 @@ final class SupportedEllipticPointFormat
+     }
+ 
+     public String toString() {
+-        List<String> list = new ArrayList<>();
++        List<String> list = new ArrayList<String>();
+         for (byte format : formats) {
+             list.add(toString(format));
+         }
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/ssl/ProtocolList.java.sav openjdk-boot/jdk/src/share/classes/sun/security/ssl/ProtocolList.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/ssl/ProtocolList.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/ProtocolList.java	2011-07-29 14:27:07.795531127 -0400
+@@ -79,7 +79,7 @@ final class ProtocolList {
+             throw new IllegalArgumentException("Protocols may not be null");
+         }
+ 
+-        ArrayList<ProtocolVersion> versions = new ArrayList<>(3);
++        ArrayList<ProtocolVersion> versions = new ArrayList<ProtocolVersion>(3);
+         for (int i = 0; i < names.length; i++ ) {
+             ProtocolVersion version = ProtocolVersion.valueOf(names[i]);
+             if (versions.contains(version) == false) {
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java.sav openjdk-boot/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java	2011-07-29 14:27:07.795531127 -0400
+@@ -153,7 +153,7 @@ final class SignatureAndHashAlgorithm {
+     static Collection<SignatureAndHashAlgorithm>
+             getSupportedAlgorithms(AlgorithmConstraints constraints) {
+ 
+-        Collection<SignatureAndHashAlgorithm> supported = new ArrayList<>();
++        Collection<SignatureAndHashAlgorithm> supported = new ArrayList<SignatureAndHashAlgorithm>();
+         synchronized (priorityMap) {
+             for (SignatureAndHashAlgorithm sigAlg : priorityMap.values()) {
+                 if (sigAlg.priority <= SUPPORTED_ALG_PRIORITY_MAX_NUM &&
+@@ -170,7 +170,7 @@ final class SignatureAndHashAlgorithm {
+     // Get supported algorithm collection from an untrusted collection
+     static Collection<SignatureAndHashAlgorithm> getSupportedAlgorithms(
+             Collection<SignatureAndHashAlgorithm> algorithms ) {
+-        Collection<SignatureAndHashAlgorithm> supported = new ArrayList<>();
++        Collection<SignatureAndHashAlgorithm> supported = new ArrayList<SignatureAndHashAlgorithm>();
+         for (SignatureAndHashAlgorithm sigAlg : algorithms) {
+             if (sigAlg.priority <= SUPPORTED_ALG_PRIORITY_MAX_NUM) {
+                 supported.add(sigAlg);
+@@ -182,7 +182,7 @@ final class SignatureAndHashAlgorithm {
+ 
+     static String[] getAlgorithmNames(
+             Collection<SignatureAndHashAlgorithm> algorithms) {
+-        ArrayList<String> algorithmNames = new ArrayList<>();
++        ArrayList<String> algorithmNames = new ArrayList<String>();
+         if (algorithms != null) {
+             for (SignatureAndHashAlgorithm sigAlg : algorithms) {
+                 algorithmNames.add(sigAlg.algorithm);
+@@ -195,7 +195,7 @@ final class SignatureAndHashAlgorithm {
+ 
+     static Set<String> getHashAlgorithmNames(
+             Collection<SignatureAndHashAlgorithm> algorithms) {
+-        Set<String> algorithmNames = new HashSet<>();
++        Set<String> algorithmNames = new HashSet<String>();
+         if (algorithms != null) {
+             for (SignatureAndHashAlgorithm sigAlg : algorithms) {
+                 if (sigAlg.hash.value > 0) {
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java.sav openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java	2011-07-29 14:27:07.795531127 -0400
+@@ -261,7 +261,7 @@ final class SSLAlgorithmConstraints impl
+ 
+         protected Set<String> decomposes(KeyExchange keyExchange,
+                         boolean forCertPathOnly) {
+-            Set<String> components = new HashSet<>();
++            Set<String> components = new HashSet<String>();
+             switch (keyExchange) {
+                 case K_NULL:
+                     if (!forCertPathOnly) {
+@@ -356,7 +356,7 @@ final class SSLAlgorithmConstraints impl
+         }
+ 
+         protected Set<String> decomposes(BulkCipher bulkCipher) {
+-            Set<String> components = new HashSet<>();
++            Set<String> components = new HashSet<String>();
+ 
+             if (bulkCipher.transformation != null) {
+                 components.addAll(super.decomposes(bulkCipher.transformation));
+@@ -366,7 +366,7 @@ final class SSLAlgorithmConstraints impl
+         }
+ 
+         protected Set<String> decomposes(MacAlg macAlg) {
+-            Set<String> components = new HashSet<>();
++            Set<String> components = new HashSet<String>();
+ 
+             if (macAlg == CipherSuite.M_MD5) {
+                 components.add("MD5");
+@@ -407,7 +407,7 @@ final class SSLAlgorithmConstraints impl
+                 }
+ 
+                 if (cipherSuite != null) {
+-                    Set<String> components = new HashSet<>();
++                    Set<String> components = new HashSet<String>();
+ 
+                     if(cipherSuite.keyExchange != null) {
+                         components.addAll(
+@@ -448,7 +448,7 @@ final class SSLAlgorithmConstraints impl
+                 }
+ 
+                 if (cipherSuite != null) {
+-                    Set<String> components = new HashSet<>();
++                    Set<String> components = new HashSet<String>();
+ 
+                     if(cipherSuite.keyExchange != null) {
+                         components.addAll(
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java.sav openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java	2011-07-29 14:27:07.795531127 -0400
+@@ -325,7 +325,7 @@ public abstract class SSLContextImpl ext
+         Collection<CipherSuite> allowedCipherSuites =
+                                     CipherSuite.allowedCipherSuites();
+ 
+-        ArrayList<CipherSuite> suites = new ArrayList<>();
++        ArrayList<CipherSuite> suites = new ArrayList<CipherSuite>();
+         if (!(protocols.collection().isEmpty()) &&
+                 protocols.min.v != ProtocolVersion.NONE.v) {
+             for (CipherSuite suite : allowedCipherSuites) {
+@@ -532,7 +532,7 @@ public abstract class SSLContextImpl ext
+                 return defaultKeyManagers;
+             }
+ 
+-            final Map<String,String> props = new HashMap<>();
++            final Map<String,String> props = new HashMap<String,String>();
+             AccessController.doPrivileged(
+                         new PrivilegedExceptionAction<Object>() {
+                 public Object run() throws Exception {
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java.sav openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java	2011-07-29 14:27:07.795531127 -0400
+@@ -618,7 +618,7 @@ final class SSLSessionImpl extends Exten
+      * key and the calling security context. This is important since
+      * sessions can be shared across different protection domains.
+      */
+-    private Hashtable<SecureKey, Object> table = new Hashtable<>();
++    private Hashtable<SecureKey, Object> table = new Hashtable<SecureKey, Object>();
+ 
+     /**
+      * Assigns a session value.  Session change events are given if
+@@ -686,7 +686,7 @@ final class SSLSessionImpl extends Exten
+      */
+     public String[] getValueNames() {
+         Enumeration<SecureKey> e;
+-        Vector<Object> v = new Vector<>();
++        Vector<Object> v = new Vector<Object>();
+         SecureKey key;
+         Object securityCtx = SecureKey.getCurrentSecurityContext();
+ 
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java.sav openjdk-boot/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java	2011-07-29 14:27:07.795531127 -0400
+@@ -337,7 +337,7 @@ final class SunX509KeyManagerImpl extend
+ 
+         X500Principal[] x500Issuers = (X500Principal[])issuers;
+         // the algorithm below does not produce duplicates, so avoid Set
+-        List<String> aliases = new ArrayList<>();
++        List<String> aliases = new ArrayList<String>();
+ 
+         for (Map.Entry<String,X509Credentials> entry :
+                                                 credentialsMap.entrySet()) {
+@@ -397,7 +397,7 @@ final class SunX509KeyManagerImpl extend
+      * possible. Principals that cannot be converted are ignored.
+      */
+     private static X500Principal[] convertPrincipals(Principal[] principals) {
+-        List<X500Principal> list = new ArrayList<>(principals.length);
++        List<X500Principal> list = new ArrayList<X500Principal>(principals.length);
+         for (int i = 0; i < principals.length; i++) {
+             Principal p = principals[i];
+             if (p instanceof X500Principal) {
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java.sav openjdk-boot/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java	2011-07-29 14:27:07.795531127 -0400
+@@ -134,7 +134,7 @@ abstract class TrustManagerFactoryImpl e
+         FileInputStream fis = null;
+         String defaultTrustStoreType;
+         String defaultTrustStoreProvider;
+-        final HashMap<String,String> props = new HashMap<>();
++        final HashMap<String,String> props = new HashMap<String,String>();
+         final String sep = File.separator;
+         KeyStore ks = null;
+ 
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java.sav openjdk-boot/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java	2011-07-29 14:27:07.796531112 -0400
+@@ -307,7 +307,7 @@ final class X509KeyManagerImpl extends X
+                 (keyTypes.length == 0) || (keyTypes[0] == null)) {
+             return null;
+         }
+-        List<KeyType> list = new ArrayList<>(keyTypes.length);
++        List<KeyType> list = new ArrayList<KeyType>(keyTypes.length);
+         for (String keyType : keyTypes) {
+             list.add(new KeyType(keyType));
+         }
+@@ -429,7 +429,7 @@ final class X509KeyManagerImpl extends X
+     // make a Set out of the array
+     private Set<Principal> getIssuerSet(Principal[] issuers) {
+         if ((issuers != null) && (issuers.length != 0)) {
+-            return new HashSet<>(Arrays.asList(issuers));
++            return new HashSet<Principal>(Arrays.asList(issuers));
+         } else {
+             return null;
+         }
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/tools/JarSigner.java.sav openjdk-boot/jdk/src/share/classes/sun/security/tools/JarSigner.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/tools/JarSigner.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/tools/JarSigner.java	2011-07-29 14:27:07.796531112 -0400
+@@ -123,14 +123,14 @@ public class JarSigner {
+     boolean token = false; // token-based keystore
+     String jarfile;  // jar files to sign or verify
+     String alias;    // alias to sign jar with
+-    List<String> ckaliases = new ArrayList<>(); // aliases in -verify
++    List<String> ckaliases = new ArrayList<String>(); // aliases in -verify
+     char[] storepass; // keystore password
+     boolean protectedPath; // protected authentication path
+     String storetype; // keystore type
+     String providerName; // provider name
+     Vector<String> providers = null; // list of providers
+     // arguments for provider constructors
+-    HashMap<String,String> providerArgs = new HashMap<>();
++    HashMap<String,String> providerArgs = new HashMap<String,String>();
+     char[] keypass; // private key password
+     String sigfile; // name of .SF file
+     String sigalg; // name of signature algorithm
+@@ -567,7 +567,7 @@ public class JarSigner {
+ 
+         try {
+             jf = new JarFile(jarName, true);
+-            Vector<JarEntry> entriesVec = new Vector<>();
++            Vector<JarEntry> entriesVec = new Vector<JarEntry>();
+             byte[] buffer = new byte[8192];
+ 
+             Enumeration<JarEntry> entries = jf.entries();
+@@ -594,7 +594,7 @@ public class JarSigner {
+             // The map to record display info, only used when -verbose provided
+             //      key: signer info string
+             //      value: the list of files with common key
+-            Map<String,List<String>> output = new LinkedHashMap<>();
++            Map<String,List<String>> output = new LinkedHashMap<String,List<String>>();
+ 
+             if (man != null) {
+                 if (verbose != null) System.out.println();
+@@ -946,7 +946,7 @@ public class JarSigner {
+             .append(signTimeForm.format(source)).append("]").toString();
+     }
+ 
+-    private Map<CodeSigner,Integer> cacheForInKS = new IdentityHashMap<>();
++    private Map<CodeSigner,Integer> cacheForInKS = new IdentityHashMap<CodeSigner,Integer>();
+ 
+     private int inKeyStoreForOneSigner(CodeSigner signer) {
+         if (cacheForInKS.containsKey(signer)) {
+@@ -989,7 +989,7 @@ public class JarSigner {
+         return result;
+     }
+ 
+-    Hashtable<Certificate, String> storeHash = new Hashtable<>();
++    Hashtable<Certificate, String> storeHash = new Hashtable<Certificate,String>();
+ 
+     int inKeyStore(CodeSigner[] signers) {
+ 
+@@ -1119,7 +1119,7 @@ public class JarSigner {
+              *   generated one. (This may invalidate existing signatures!)
+              */
+             BASE64Encoder encoder = new JarBASE64Encoder();
+-            Vector<ZipEntry> mfFiles = new Vector<>();
++            Vector<ZipEntry> mfFiles = new Vector<ZipEntry>();
+ 
+             boolean wasSigned = false;
+ 
+@@ -1476,7 +1476,7 @@ public class JarSigner {
+         return false;
+     }
+ 
+-    Map<CodeSigner,String> cacheForSignerInfo = new IdentityHashMap<>();
++    Map<CodeSigner,String> cacheForSignerInfo = new IdentityHashMap<CodeSigner,String>();
+ 
+     /**
+      * Returns a string of singer info, with a newline at the end
+@@ -1600,7 +1600,7 @@ public class JarSigner {
+                     }
+                 }
+             }
+-            Set<TrustAnchor> tas = new HashSet<>();
++            Set<TrustAnchor> tas = new HashSet<TrustAnchor>();
+             try {
+                 KeyStore caks = KeyTool.getCacertsKeyStore();
+                 if (caks != null) {
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyTool.java.sav openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyTool.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyTool.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyTool.java	2011-07-29 14:27:07.796531112 -0400
+@@ -152,11 +152,11 @@ public final class KeyTool {
+     private KeyStore caks = null; // "cacerts" keystore
+     private char[] srcstorePass = null;
+     private String srcstoretype = null;
+-    private Set<char[]> passwords = new HashSet<>();
++    private Set<char[]> passwords = new HashSet<char[]>();
+     private String startDate = null;
+ 
+-    private List<String> ids = new ArrayList<>();   // used in GENCRL
+-    private List<String> v3ext = new ArrayList<>();
++    private List<String> ids = new ArrayList<String>();   // used in GENCRL
++    private List<String> v3ext = new ArrayList<String>();
+ 
+     enum Command {
+         CERTREQ("Generates.a.certificate.request",
+@@ -2089,7 +2089,7 @@ public final class KeyTool {
+      */
+     public static List<CRL> readCRLsFromCert(X509Certificate cert)
+             throws Exception {
+-        List<CRL> crls = new ArrayList<>();
++        List<CRL> crls = new ArrayList<CRL>();
+         CRLDistributionPointsExtension ext =
+                 X509CertImpl.toImpl(cert).getCRLDistributionPointsExtension();
+         if (ext == null) return crls;
+@@ -2256,7 +2256,7 @@ public final class KeyTool {
+         if (jarfile != null) {
+             JarFile jf = new JarFile(jarfile, true);
+             Enumeration<JarEntry> entries = jf.entries();
+-            Set<CodeSigner> ss = new HashSet<>();
++            Set<CodeSigner> ss = new HashSet<CodeSigner>();
+             byte[] buffer = new byte[8192];
+             int pos = 0;
+             while (entries.hasMoreElements()) {
+@@ -3331,7 +3331,7 @@ public final class KeyTool {
+         }
+ 
+         // start building chain
+-        Vector<Certificate> chain = new Vector<>(2);
++        Vector<Certificate> chain = new Vector<Certificate>(2);
+         if (buildChain((X509Certificate)certToVerify, chain, certs)) {
+             Certificate[] newChain = new Certificate[chain.size()];
+             // buildChain() returns chain with self-signed root-cert first and
+@@ -3857,7 +3857,7 @@ public final class KeyTool {
+                         break;
+                     case 2:     // EKU
+                         if(value != null) {
+-                            Vector<ObjectIdentifier> v = new Vector<>();
++                            Vector<ObjectIdentifier> v = new Vector<ObjectIdentifier>();
+                             for (String s: value.split(",")) {
+                                 int p = oneOf(s,
+                                         "anyExtendedKeyUsage",
+@@ -3927,7 +3927,7 @@ public final class KeyTool {
+                         }
+                         if(value != null) {
+                             List<AccessDescription> accessDescriptions =
+-                                    new ArrayList<>();
++                                    new ArrayList<AccessDescription>();
+                             String[] ps = value.split(",");
+                             for(String item: ps) {
+                                 colonpos = item.indexOf(':');
+@@ -4211,7 +4211,7 @@ class Pair<A, B> {
+     }
+ 
+     public static <A,B> Pair<A,B> of(A a, B b) {
+-        return new Pair<>(a,b);
++        return new Pair<A,B>(a,b);
+     }
+ }
+ 
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java.sav openjdk-boot/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java.sav	2011-07-29 12:21:29.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java	2011-07-29 14:27:07.797531097 -0400
+@@ -643,7 +643,7 @@ public class PolicyTool {
+         Class<?> pc = Class.forName(type, true,
+                 Thread.currentThread().getContextClassLoader());
+         Constructor<?> c = null;
+-        Vector<String> objects = new Vector<>(2);
++        Vector<String> objects = new Vector<String>(2);
+         if (name != null) objects.add(name);
+         if (actions != null) objects.add(actions);
+         switch (objects.size()) {
+@@ -1722,7 +1722,7 @@ class ToolDialog extends Dialog {
+                         new PolicyParser.GrantEntry(signedby, codebase);
+ 
+         // get the new Principals
+-        LinkedList<PolicyParser.PrincipalEntry> prins = new LinkedList<>();
++        LinkedList<PolicyParser.PrincipalEntry> prins = new LinkedList<PolicyParser.PrincipalEntry>();
+         TaggedList prinList = (TaggedList)getComponent(PE_PRIN_LIST);
+         for (int i = 0; i < prinList.getItemCount(); i++) {
+             prins.add((PolicyParser.PrincipalEntry)prinList.getObject(i));
+@@ -1730,7 +1730,7 @@ class ToolDialog extends Dialog {
+         ge.principals = prins;
+ 
+         // get the new Permissions
+-        Vector<PolicyParser.PermissionEntry> perms = new Vector<>();
++        Vector<PolicyParser.PermissionEntry> perms = new Vector<PolicyParser.PermissionEntry>();
+         TaggedList permList = (TaggedList)getComponent(PE_PERM_LIST);
+         for (int i = 0; i < permList.getItemCount(); i++) {
+             perms.addElement((PolicyParser.PermissionEntry)permList.getObject(i));
+@@ -3647,7 +3647,7 @@ class NoDisplayException extends Runtime
+  * This is a java.awt.List that bind an Object to each String it holds.
+  */
+ class TaggedList extends List {
+-    private java.util.List<Object> data = new LinkedList<>();
++    private java.util.List<Object> data = new LinkedList<Object>();
+     public TaggedList(int i, boolean b) {
+         super(i, b);
+     }
+diff -up openjdk-boot/jdk/src/share/classes/sun/tools/native2ascii/Main.java.sav openjdk-boot/jdk/src/share/classes/sun/tools/native2ascii/Main.java
+--- openjdk-boot/jdk/src/share/classes/sun/tools/native2ascii/Main.java.sav	2011-07-29 12:21:32.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/tools/native2ascii/Main.java	2011-07-29 14:27:07.797531097 -0400
+@@ -94,7 +94,7 @@ public class Main {
+      * Run the converter
+      */
+     public synchronized boolean convert(String argv[]){
+-        List<String> v = new ArrayList<>(2);
++        List<String> v = new ArrayList<String>(2);
+         File outputFile = null;
+         boolean createOutputFile = false;
+ 
+diff -up openjdk-boot/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java.sav openjdk-boot/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java
+--- openjdk-boot/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java.sav	2011-07-29 12:21:32.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java	2011-07-29 14:27:07.797531097 -0400
+@@ -113,7 +113,7 @@ public final class InternalLocaleBuilder
+         }
+         // Use case insensitive string to prevent duplication
+         if (uattributes == null) {
+-            uattributes = new HashSet<>(4);
++            uattributes = new HashSet<CaseInsensitiveString>(4);
+         }
+         uattributes.add(new CaseInsensitiveString(attribute));
+         return this;
+@@ -157,7 +157,7 @@ public final class InternalLocaleBuilder
+                 }
+             }
+             if (ukeywords == null) {
+-                ukeywords = new HashMap<>(4);
++                ukeywords = new HashMap<CaseInsensitiveString,String>(4);
+             }
+             ukeywords.put(cikey, type);
+         }
+@@ -211,7 +211,7 @@ public final class InternalLocaleBuilder
+                 setUnicodeLocaleExtension(val);
+             } else {
+                 if (extensions == null) {
+-                    extensions = new HashMap<>(4);
++                    extensions = new HashMap<CaseInsensitiveChar,String>(4);
+                 }
+                 extensions.put(key, val);
+             }
+@@ -262,7 +262,7 @@ public final class InternalLocaleBuilder
+                 }
+ 
+                 if (extensions == null) {
+-                    extensions = new ArrayList<>(4);
++                    extensions = new ArrayList<String>(4);
+                 }
+                 extensions.add(sb.toString());
+             } else {
+@@ -313,7 +313,7 @@ public final class InternalLocaleBuilder
+         clearExtensions();
+ 
+         if (!LocaleUtils.isEmpty(bcpExtensions)) {
+-            Set<CaseInsensitiveChar> done = new HashSet<>(bcpExtensions.size());
++            Set<CaseInsensitiveChar> done = new HashSet<CaseInsensitiveChar>(bcpExtensions.size());
+             for (String bcpExt : bcpExtensions) {
+                 CaseInsensitiveChar key = new CaseInsensitiveChar(bcpExt);
+                 // ignore duplicates
+@@ -323,7 +323,7 @@ public final class InternalLocaleBuilder
+                         setUnicodeLocaleExtension(bcpExt.substring(2));
+                     } else {
+                         if (extensions == null) {
+-                            extensions = new HashMap<>(4);
++                            extensions = new HashMap<CaseInsensitiveChar,String>(4);
+                         }
+                         extensions.put(key, bcpExt.substring(2));
+                     }
+@@ -334,7 +334,7 @@ public final class InternalLocaleBuilder
+         if (privateuse != null && privateuse.length() > 0) {
+             // privateuse string contains prefix, e.g. "x-abc-def"
+             if (extensions == null) {
+-                extensions = new HashMap<>(1);
++                extensions = new HashMap<CaseInsensitiveChar,String>(1);
+             }
+             extensions.put(new CaseInsensitiveChar(privateuse), privateuse.substring(2));
+         }
+@@ -442,19 +442,19 @@ public final class InternalLocaleBuilder
+                     UnicodeLocaleExtension ue = (UnicodeLocaleExtension)e;
+                     for (String uatr : ue.getUnicodeLocaleAttributes()) {
+                         if (uattributes == null) {
+-                            uattributes = new HashSet<>(4);
++                            uattributes = new HashSet<CaseInsensitiveString>(4);
+                         }
+                         uattributes.add(new CaseInsensitiveString(uatr));
+                     }
+                     for (String ukey : ue.getUnicodeLocaleKeys()) {
+                         if (ukeywords == null) {
+-                            ukeywords = new HashMap<>(4);
++                            ukeywords = new HashMap<CaseInsensitiveString,String>(4);
+                         }
+                         ukeywords.put(new CaseInsensitiveString(ukey), ue.getUnicodeLocaleType(ukey));
+                     }
+                 } else {
+                     if (extensions == null) {
+-                        extensions = new HashMap<>(4);
++                        extensions = new HashMap<CaseInsensitiveChar,String>(4);
+                     }
+                     extensions.put(new CaseInsensitiveChar(key), e.getValue());
+                 }
+@@ -604,7 +604,7 @@ public final class InternalLocaleBuilder
+                 break;
+             }
+             if (uattributes == null) {
+-                uattributes = new HashSet<>(4);
++                uattributes = new HashSet<CaseInsensitiveString>(4);
+             }
+             uattributes.add(new CaseInsensitiveString(itr.current()));
+             itr.next();
+@@ -622,7 +622,7 @@ public final class InternalLocaleBuilder
+                     assert(typeStart == -1 || typeEnd != -1);
+                     type = (typeStart == -1) ? "" : subtags.substring(typeStart, typeEnd);
+                     if (ukeywords == null) {
+-                        ukeywords = new HashMap<>(4);
++                        ukeywords = new HashMap<CaseInsensitiveString,String>(4);
+                     }
+                     ukeywords.put(key, type);
+ 
+@@ -652,7 +652,7 @@ public final class InternalLocaleBuilder
+                     assert(typeStart == -1 || typeEnd != -1);
+                     type = (typeStart == -1) ? "" : subtags.substring(typeStart, typeEnd);
+                     if (ukeywords == null) {
+-                        ukeywords = new HashMap<>(4);
++                        ukeywords = new HashMap<CaseInsensitiveString,String>(4);
+                     }
+                     ukeywords.put(key, type);
+                 }
+diff -up openjdk-boot/jdk/src/share/classes/sun/util/locale/LanguageTag.java.sav openjdk-boot/jdk/src/share/classes/sun/util/locale/LanguageTag.java
+--- openjdk-boot/jdk/src/share/classes/sun/util/locale/LanguageTag.java.sav	2011-07-29 12:21:32.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LanguageTag.java	2011-07-29 14:27:07.797531097 -0400
+@@ -62,7 +62,7 @@ public class LanguageTag {
+     // Map contains grandfathered tags and its preferred mappings from
+     // http://www.ietf.org/rfc/rfc5646.txt
+     // Keys are lower-case strings.
+-    private static final Map<String, String[]> GRANDFATHERED = new HashMap<>();
++    private static final Map<String, String[]> GRANDFATHERED = new HashMap<String,String[]>();
+ 
+     static {
+         // grandfathered = irregular           ; non-redundant tags registered
+@@ -257,7 +257,7 @@ public class LanguageTag {
+             }
+             found = true;
+             if (extlangs.isEmpty()) {
+-                extlangs = new ArrayList<>(3);
++                extlangs = new ArrayList<String>(3);
+             }
+             extlangs.add(s);
+             sts.parseLength = itr.currentEnd();
+@@ -322,7 +322,7 @@ public class LanguageTag {
+             }
+             found = true;
+             if (variants.isEmpty()) {
+-                variants = new ArrayList<>(3);
++                variants = new ArrayList<String>(3);
+             }
+             variants.add(s);
+             sts.parseLength = itr.currentEnd();
+@@ -365,7 +365,7 @@ public class LanguageTag {
+                 }
+ 
+                 if (extensions.isEmpty()) {
+-                    extensions = new ArrayList<>(4);
++                    extensions = new ArrayList<String>(4);
+                 }
+                 extensions.add(sb.toString());
+                 found = true;
+@@ -462,7 +462,7 @@ public class LanguageTag {
+                     break;
+                 }
+                 if (variants == null) {
+-                    variants = new ArrayList<>();
++                    variants = new ArrayList<String>();
+                 }
+                 variants.add(var);  // Do not canonicalize!
+                 varitr.next();
+@@ -503,7 +503,7 @@ public class LanguageTag {
+                     privateuse = ext.getValue();
+                 } else {
+                     if (extensions == null) {
+-                        extensions = new ArrayList<>();
++                        extensions = new ArrayList<String>();
+                     }
+                     extensions.add(locextKey.toString() + SEP + ext.getValue());
+                 }
+diff -up openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java.sav openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java
+--- openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java.sav	2011-07-29 12:21:32.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java	2011-07-29 14:27:07.797531097 -0400
+@@ -81,7 +81,7 @@ public class LocaleExtensions {
+         }
+ 
+         // Build extension map
+-        SortedMap<Character, Extension> map = new TreeMap<>();
++        SortedMap<Character, Extension> map = new TreeMap<Character,Extension>();
+         if (hasExtension) {
+             for (Entry<CaseInsensitiveChar, String> ext : extensions.entrySet()) {
+                 char key = LocaleUtils.toLower(ext.getKey().value());
+@@ -104,14 +104,14 @@ public class LocaleExtensions {
+             SortedMap<String, String> ukmap = null;
+ 
+             if (hasUAttributes) {
+-                uaset = new TreeSet<>();
++                uaset = new TreeSet<String>();
+                 for (CaseInsensitiveString cis : uattributes) {
+                     uaset.add(LocaleUtils.toLowerString(cis.value()));
+                 }
+             }
+ 
+             if (hasUKeywords) {
+-                ukmap = new TreeMap<>();
++                ukmap = new TreeMap<String,String>();
+                 for (Entry<CaseInsensitiveString, String> kwd : ukeywords.entrySet()) {
+                     String key = LocaleUtils.toLowerString(kwd.getKey().value());
+                     String type = LocaleUtils.toLowerString(kwd.getValue());
+diff -up openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java.sav openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java
+--- openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java.sav	2011-07-29 12:21:32.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java	2011-07-29 14:27:07.797531097 -0400
+@@ -38,14 +38,14 @@ import java.util.concurrent.ConcurrentMa
+ 
+ public abstract class LocaleObjectCache<K, V> {
+     private ConcurrentMap<K, CacheEntry<K, V>> map;
+-    private ReferenceQueue<V> queue = new ReferenceQueue<>();
++    private ReferenceQueue<V> queue = new ReferenceQueue<V>();
+ 
+     public LocaleObjectCache() {
+         this(16, 0.75f, 16);
+     }
+ 
+     public LocaleObjectCache(int initialCapacity, float loadFactor, int concurrencyLevel) {
+-        map = new ConcurrentHashMap<>(initialCapacity, loadFactor, concurrencyLevel);
++        map = new ConcurrentHashMap<K, CacheEntry<K,V>>(initialCapacity, loadFactor, concurrencyLevel);
+     }
+ 
+     public V get(K key) {
+@@ -64,7 +64,7 @@ public abstract class LocaleObjectCache<
+                 return null;
+             }
+ 
+-            CacheEntry<K, V> newEntry = new CacheEntry<>(key, newVal, queue);
++            CacheEntry<K, V> newEntry = new CacheEntry<K,V>(key, newVal, queue);
+ 
+             while (value == null) {
+                 cleanStaleEntries();
+@@ -81,7 +81,7 @@ public abstract class LocaleObjectCache<
+     }
+ 
+     protected V put(K key, V value) {
+-        CacheEntry<K, V> entry = new CacheEntry<>(key, value, queue);
++        CacheEntry<K, V> entry = new CacheEntry<K,V>(key, value, queue);
+         CacheEntry<K, V> oldEntry = map.put(key, entry);
+         return (oldEntry == null) ? null : oldEntry.get();
+     }
+diff -up openjdk-boot/jdk/src/share/classes/sun/util/logging/PlatformLogger.java.sav openjdk-boot/jdk/src/share/classes/sun/util/logging/PlatformLogger.java
+--- openjdk-boot/jdk/src/share/classes/sun/util/logging/PlatformLogger.java.sav	2011-07-29 12:21:32.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/util/logging/PlatformLogger.java	2011-07-29 14:27:07.797531097 -0400
+@@ -113,7 +113,7 @@ public class PlatformLogger {
+ 
+     // Table of known loggers.  Maps names to PlatformLoggers.
+     private static Map<String,WeakReference<PlatformLogger>> loggers =
+-        new HashMap<>();
++        new HashMap<String,WeakReference<PlatformLogger>>();
+ 
+     /**
+      * Returns a PlatformLogger of a given name.
+@@ -126,7 +126,7 @@ public class PlatformLogger {
+         }
+         if (log == null) {
+             log = new PlatformLogger(name);
+-            loggers.put(name, new WeakReference<>(log));
++            loggers.put(name, new WeakReference<PlatformLogger>(log));
+         }
+         return log;
+     }
+@@ -469,7 +469,7 @@ public class PlatformLogger {
+      */
+     static class JavaLogger extends LoggerProxy {
+         private static final Map<Integer, Object> levelObjects =
+-            new HashMap<>();
++            new HashMap<Integer, Object>();
+ 
+         static {
+             if (LoggingSupport.isAvailable()) {
+diff -up openjdk-boot/jdk/src/share/demo/nio/zipfs/Demo.java.sav openjdk-boot/jdk/src/share/demo/nio/zipfs/Demo.java
+--- openjdk-boot/jdk/src/share/demo/nio/zipfs/Demo.java.sav	2011-07-29 12:21:35.000000000 -0400
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/Demo.java	2011-07-29 14:27:07.798531083 -0400
+@@ -151,7 +151,7 @@ public class Demo {
+         }
+ 
+         Action action = Action.valueOf(args[0]);
+-        Map<String, Object> env = env = new HashMap<>();
++        Map<String, Object> env = env = new HashMap<String,Object>();
+         if (action == Action.create)
+             env.put("create", "true");
+         try (FileSystem fs = provider.newFileSystem(Paths.get(args[1]), env)) {
+@@ -647,9 +647,9 @@ public class Demo {
+ 
+     private static void fchCopy(Path src, Path dst) throws IOException
+     {
+-        Set<OpenOption> read = new HashSet<>();
++        Set<OpenOption> read = new HashSet<OpenOption>();
+         read.add(READ);
+-        Set<OpenOption> openwrite = new HashSet<>();
++        Set<OpenOption> openwrite = new HashSet<OpenOption>();
+         openwrite.add(CREATE_NEW);
+         openwrite.add(WRITE);
+ 
+@@ -667,9 +667,9 @@ public class Demo {
+ 
+     private static void chCopy(Path src, Path dst) throws IOException
+     {
+-        Set<OpenOption> read = new HashSet<>();
++        Set<OpenOption> read = new HashSet<OpenOption>();
+         read.add(READ);
+-        Set<OpenOption> openwrite = new HashSet<>();
++        Set<OpenOption> openwrite = new HashSet<OpenOption>();
+         openwrite.add(CREATE_NEW);
+         openwrite.add(WRITE);
+ 
+diff -up openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java.sav openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java
+--- openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java.sav	2011-07-29 12:21:35.000000000 -0400
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java	2011-07-29 14:27:07.798531083 -0400
+@@ -133,8 +133,8 @@ final class ZipCoder {
+         return new ZipCoder(Charset.defaultCharset());
+     }
+ 
+-    private final ThreadLocal<CharsetDecoder> decTL = new ThreadLocal<>();
+-    private final ThreadLocal<CharsetEncoder> encTL = new ThreadLocal<>();
++    private final ThreadLocal<CharsetDecoder> decTL = new ThreadLocal<CharsetDecoder>();
++    private final ThreadLocal<CharsetEncoder> encTL = new ThreadLocal<CharsetEncoder>();r
+ 
+     private CharsetDecoder decoder() {
+         CharsetDecoder dec = decTL.get();
+diff -up openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java.sav openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java
+--- openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java.sav	2011-07-29 12:21:35.000000000 -0400
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java	2011-07-29 14:27:07.798531083 -0400
+@@ -125,7 +125,7 @@ public class ZipFileAttributeView implem
+         throws IOException
+     {
+         ZipFileAttributes zfas = readAttributes();
+-        LinkedHashMap<String, Object> map = new LinkedHashMap<>();
++        LinkedHashMap<String, Object> map = new LinkedHashMap<String,Object>();
+         if ("*".equals(attributes)) {
+             for (AttrID id : AttrID.values()) {
+                 try {
+diff -up openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java.sav openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java
+--- openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java.sav	2011-07-29 12:21:35.000000000 -0400
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java	2011-07-29 14:27:07.798531083 -0400
+@@ -147,7 +147,7 @@ public class ZipFileSystem extends FileS
+ 
+     @Override
+     public Iterable<Path> getRootDirectories() {
+-        ArrayList<Path> pathArr = new ArrayList<>();
++        ArrayList<Path> pathArr = new ArrayList<Path>();
+         pathArr.add(new ZipPath(this, new byte[]{'/'}));
+         return pathArr;
+     }
+@@ -192,7 +192,7 @@ public class ZipFileSystem extends FileS
+ 
+     @Override
+     public Iterable<FileStore> getFileStores() {
+-        ArrayList<FileStore> list = new ArrayList<>(1);
++        ArrayList<FileStore> list = new ArrayList<FileStore>(1);
+         list.add(new ZipFileStore(new ZipPath(this, new byte[]{'/'})));
+         return list;
+     }
+@@ -258,7 +258,7 @@ public class ZipFileSystem extends FileS
+             endWrite();
+         }
+         if (!streams.isEmpty()) {       // unlock and close all remaining streams
+-            Set<InputStream> copy = new HashSet<>(streams);
++            Set<InputStream> copy = new HashSet<InputStream>(streams);
+             for (InputStream is: copy)
+                 is.close();
+         }
+@@ -386,7 +386,7 @@ public class ZipFileSystem extends FileS
+             IndexNode inode = getInode(path);
+             if (inode == null)
+                 throw new NotDirectoryException(getString(path));
+-            List<Path> list = new ArrayList<>();
++            List<Path> list = new ArrayList<Path>();
+             IndexNode child = inode.child;
+             while (child != null) {
+                 ZipPath zp = toZipPath(child.name);
+@@ -815,7 +815,7 @@ public class ZipFileSystem extends FileS
+ 
+     // the ex-channel and ex-path that need to close when their outstanding
+     // input streams are all closed by the obtainers.
+-    private Set<ExChannelCloser> exChClosers = new HashSet<>();
++    private Set<ExChannelCloser> exChClosers = new HashSet<ExChannelCloser>();
+ 
+     private Set<Path> tmppaths = Collections.synchronizedSet(new HashSet<Path>());
+     private Path getTempPathForEntry(byte[] path) throws IOException {
+@@ -1012,7 +1012,7 @@ public class ZipFileSystem extends FileS
+     private byte[] initCEN() throws IOException {
+         end = findEND();
+         if (end.endpos == 0) {
+-            inodes = new LinkedHashMap<>(10);
++            inodes = new LinkedHashMap<IndexNode,IndexNode>(10);
+             locpos = 0;
+             buildNodeTree();
+             return null;         // only END header present
+@@ -1033,7 +1033,7 @@ public class ZipFileSystem extends FileS
+             zerror("read CEN tables failed");
+         }
+         // Iterate through the entries in the central directory
+-        inodes = new LinkedHashMap<>(end.centot + 1);
++        inodes = new LinkedHashMap<IndexNode,IndexNode>(end.centot + 1);
+         int pos = 0;
+         int limit = cen.length - ENDHDR;
+         while (pos < limit) {
+@@ -1180,7 +1180,7 @@ public class ZipFileSystem extends FileS
+             return;
+         Path tmpFile = createTempFileInSameDirectoryAs(zfpath);
+         OutputStream os = Files.newOutputStream(tmpFile, WRITE);
+-        ArrayList<Entry> elist = new ArrayList<>(inodes.size());
++        ArrayList<Entry> elist = new ArrayList<Entry>(inodes.size());
+         long written = 0;
+         byte[] buf = new byte[8192];
+         Entry e = null;
+@@ -1592,7 +1592,7 @@ public class ZipFileSystem extends FileS
+     // Maxmum number of de/inflater we cache
+     private final int MAX_FLATER = 20;
+     // List of available Inflater objects for decompression
+-    private final List<Inflater> inflaters = new ArrayList<>();
++    private final List<Inflater> inflaters = new ArrayList<Inflater>();
+ 
+     // Gets an inflater from the list of available inflaters or allocates
+     // a new one.
+@@ -1621,7 +1621,7 @@ public class ZipFileSystem extends FileS
+     }
+ 
+     // List of available Deflater objects for compression
+-    private final List<Deflater> deflaters = new ArrayList<>();
++    private final List<Deflater> deflaters = new ArrayList<Deflater>();
+ 
+     // Gets an deflater from the list of available deflaters or allocates
+     // a new one.
+@@ -2331,7 +2331,7 @@ public class ZipFileSystem extends FileS
+     private void buildNodeTree() throws IOException {
+         beginWrite();
+         try {
+-            HashSet<IndexNode> dirs = new HashSet<>();
++            HashSet<IndexNode> dirs = new HashSet<IndexNode>();
+             IndexNode root = new IndexNode(ROOTPATH, -1);
+             inodes.put(root, root);
+             dirs.add(root);
+diff -up openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java.sav openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java
+--- openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java.sav	2011-07-29 12:21:35.000000000 -0400
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java	2011-07-29 14:27:07.798531083 -0400
+@@ -53,7 +53,7 @@ import java.util.concurrent.ExecutorServ
+ public class ZipFileSystemProvider extends FileSystemProvider {
+ 
+ 
+-    private final Map<Path, ZipFileSystem> filesystems = new HashMap<>();
++    private final Map<Path, ZipFileSystem> filesystems = new HashMap<Path,ZipFileSystem>();
+ 
+     public ZipFileSystemProvider() {}
+ 
+diff -up openjdk-boot/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java.sav openjdk-boot/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java
+--- openjdk-boot/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java.sav	2011-07-29 12:21:39.000000000 -0400
++++ openjdk-boot/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java	2011-07-29 14:27:07.798531083 -0400
+@@ -68,7 +68,7 @@ final class ProcessEnvironment
+         // We cache the C environment.  This means that subsequent calls
+         // to putenv/setenv from C will not be visible from Java code.
+         byte[][] environ = environ();
+-        theEnvironment = new HashMap<>(environ.length/2 + 3);
++        theEnvironment = new HashMap<Variable,Value>(environ.length/2 + 3);
+         // Read environment variables back to front,
+         // so that earlier variables override later ones.
+         for (int i = environ.length-1; i > 0; i-=2)
+diff -up openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java.sav openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java
+--- openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java.sav	2011-07-29 14:27:01.432625563 -0400
++++ openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	2011-07-29 14:27:07.798531083 -0400
+@@ -354,7 +354,7 @@ class FileSystemPreferences extends Abst
+      * log against that map.  The resulting map is then written back
+      * to the disk.
+      */
+-    final List<Change> changeLog = new ArrayList<>();
++    final List<Change> changeLog = new ArrayList<Change>();
+ 
+     /**
+      * Represents a change to a preference.
+@@ -507,7 +507,7 @@ class FileSystemPreferences extends Abst
+         });
+         if (newNode) {
+             // These 2 things guarantee node will get wrtten at next flush/sync
+-            prefsCache = new TreeMap<>();
++            prefsCache = new TreeMap<String, String>();
+             nodeCreate = new NodeCreate();
+             changeLog.add(nodeCreate);
+         }
+@@ -550,7 +550,7 @@ class FileSystemPreferences extends Abst
+             loadCache();
+         } catch(Exception e) {
+             // assert lastSyncTime == 0;
+-            prefsCache = new TreeMap<>();
++            prefsCache = new TreeMap<String, String>();
+         }
+     }
+ 
+@@ -567,7 +567,7 @@ class FileSystemPreferences extends Abst
+             AccessController.doPrivileged(
+                 new PrivilegedExceptionAction<Void>() {
+                 public Void run() throws BackingStoreException {
+-                    Map<String, String> m = new TreeMap<>();
++                    Map<String, String> m = new TreeMap<String, String>();
+                     long newLastSyncTime = 0;
+                     FileInputStream fis = null;
+                     try {
+@@ -581,7 +581,7 @@ class FileSystemPreferences extends Abst
+                             prefsFile.renameTo( new File(
+                                                     prefsFile.getParentFile(),
+                                                   "IncorrectFormatPrefs.xml"));
+-                            m = new TreeMap<>();
++                            m = new TreeMap<String, String>();
+                         } else if (e instanceof FileNotFoundException) {
+                         getLogger().warning("Prefs file removed in background "
+                                            + prefsFile.getPath());
+@@ -662,7 +662,7 @@ class FileSystemPreferences extends Abst
+         return AccessController.doPrivileged(
+             new PrivilegedAction<String[]>() {
+                 public String[] run() {
+-                    List<String> result = new ArrayList<>();
++                    List<String> result = new ArrayList<String>();
+                     File[] dirContents = dir.listFiles();
+                     if (dirContents != null) {
+                         for (int i = 0; i < dirContents.length; i++)
+@@ -810,7 +810,7 @@ class FileSystemPreferences extends Abst
+         } else if (lastSyncTime != 0 && !dir.exists()) {
+             // This node was removed in the background.  Playback any changes
+             // against a virgin (empty) Map.
+-            prefsCache = new TreeMap<>();
++            prefsCache = new TreeMap<String, String>();
+             replayChanges();
+         }
+         if (!changeLog.isEmpty()) {
+diff -up openjdk-boot/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java.sav openjdk-boot/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java
+--- openjdk-boot/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java.sav	2011-07-29 12:21:40.000000000 -0400
++++ openjdk-boot/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java	2011-07-29 14:27:07.798531083 -0400
+@@ -60,7 +60,7 @@ public class ResolverConfigurationImpl
+                                           int maxperkeyword,
+                                           int maxkeywords)
+     {
+-        LinkedList<String> ll = new LinkedList<>();
++        LinkedList<String> ll = new LinkedList<String>();
+ 
+         try {
+             BufferedReader in =
+@@ -200,7 +200,7 @@ public class ResolverConfigurationImpl
+         // no local domain so try fallback (RPC) domain or
+         // hostname
+ 
+-        sl = new LinkedList<>();
++        sl = new LinkedList<String>();
+         String domain = fallbackDomain0();
+         if (domain != null && domain.length() > 0) {
+             sl.add(domain);
+diff -up openjdk-boot/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java.sav openjdk-boot/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java
+--- openjdk-boot/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java.sav	2011-07-29 12:21:40.000000000 -0400
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java	2011-07-29 14:27:07.799531069 -0400
+@@ -153,12 +153,12 @@ final class CompoundTextSupport {
+ 
+     static {
+         HashMap<ControlSequence, String> tSequenceToEncodingMap =
+-            new HashMap<>(33, 1.0f);
++            new HashMap<ControlSequence, String>(33, 1.0f);
+         HashMap<ControlSequence, Boolean> tHighBitsMap =
+-            new HashMap<>(31, 1.0f);
++            new HashMap<ControlSequence, Boolean>(31, 1.0f);
+         HashMap<String, ControlSequence> tEncodingToSequenceMap =
+-            new HashMap<>(21, 1.0f);
+-        ArrayList<String> tEncodings = new ArrayList<>(21);
++            new HashMap<String, ControlSequence>(21, 1.0f);
++        ArrayList<String> tEncodings = new ArrayList<String>(21);
+ 
+         if (!(isEncodingSupported("US-ASCII") &&
+               isEncodingSupported("ISO-8859-1")))
+diff -up openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java.sav openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java
+--- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java.sav	2011-07-29 12:21:40.000000000 -0400
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java	2011-07-29 14:27:07.799531069 -0400
+@@ -53,7 +53,7 @@ class LinuxFileSystem extends UnixFileSy
+         static final Set<String> supportedFileAttributeViews =
+             supportedFileAttributeViews();
+         private static Set<String> supportedFileAttributeViews() {
+-            Set<String> result = new HashSet<>();
++            Set<String> result = new HashSet<String>();
+             result.addAll(standardFileAttributeViews());
+             // additional Linux-specific views
+             result.add("dos");
+@@ -76,7 +76,7 @@ class LinuxFileSystem extends UnixFileSy
+      * Returns object to iterate over the mount entries in the given fstab file.
+      */
+     Iterable<UnixMountEntry> getMountEntries(String fstab) {
+-        ArrayList<UnixMountEntry> entries = new ArrayList<>();
++        ArrayList<UnixMountEntry> entries = new ArrayList<UnixMountEntry>();
+         try {
+             long fp = setmntent(fstab.getBytes(), "r".getBytes());
+             try {
+diff -up openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java.sav openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java
+--- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java.sav	2011-07-29 12:21:40.000000000 -0400
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java	2011-07-29 14:27:07.799531069 -0400
+@@ -63,7 +63,7 @@ class LinuxUserDefinedFileAttributeView
+ 
+     // Parses buffer as array of NULL-terminated C strings.
+     private List<String> asList(long address, int size) {
+-        List<String> list = new ArrayList<>();
++        List<String> list = new ArrayList<String>();
+         int start = 0;
+         int pos = 0;
+         while (pos < size) {
+diff -up openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java.sav openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java
+--- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java.sav	2011-07-29 12:21:40.000000000 -0400
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java	2011-07-29 14:27:07.799531069 -0400
+@@ -198,7 +198,7 @@ class SolarisAclFileAttributeView
+      * Decode the buffer, returning an ACL
+      */
+     private static List<AclEntry> decode(long address, int n) {
+-        ArrayList<AclEntry> acl = new ArrayList<>(n);
++        ArrayList<AclEntry> acl = new ArrayList<AclEntry>(n);
+         for (int i=0; i<n; i++) {
+             long offset = address + i*SIZEOF_ACE_T;
+ 
+diff -up openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java.sav openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java
+--- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java.sav	2011-07-29 12:21:40.000000000 -0400
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java	2011-07-29 14:27:07.799531069 -0400
+@@ -76,7 +76,7 @@ class SolarisFileSystem extends UnixFile
+         static final Set<String> supportedFileAttributeViews =
+             supportedFileAttributeViews();
+         private static Set<String> supportedFileAttributeViews() {
+-            Set<String> result = new HashSet<>();
++            Set<String> result = new HashSet<String>();
+             result.addAll(standardFileAttributeViews());
+             // additional Solaris-specific views
+             result.add("acl");
+@@ -101,7 +101,7 @@ class SolarisFileSystem extends UnixFile
+      */
+     @Override
+     Iterable<UnixMountEntry> getMountEntries() {
+-        ArrayList<UnixMountEntry> entries = new ArrayList<>();
++        ArrayList<UnixMountEntry> entries = new ArrayList<UnixMountEntry>();
+         try {
+             UnixPath mnttab = new UnixPath(this, "/etc/mnttab");
+             long fp = fopen(mnttab, "r");
+diff -up openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java.sav openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java
+--- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java.sav	2011-07-29 12:21:40.000000000 -0400
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java	2011-07-29 14:27:07.799531069 -0400
+@@ -83,7 +83,7 @@ class SolarisUserDefinedFileAttributeVie
+                 }
+ 
+                 // read list of extended attributes
+-                List<String> list = new ArrayList<>();
++                List<String> list = new ArrayList<String>();
+                 try {
+                     byte[] name;
+                     while ((name = readdir(dp)) != null) {
+diff -up openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java.sav openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java
+--- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java.sav	2011-07-29 12:21:41.000000000 -0400
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java	2011-07-29 14:27:07.799531069 -0400
+@@ -194,7 +194,7 @@ class UnixFileAttributes
+     @Override
+     public Set<PosixFilePermission> permissions() {
+         int bits = (st_mode & UnixConstants.S_IAMB);
+-        HashSet<PosixFilePermission> perms = new HashSet<>();
++        HashSet<PosixFilePermission> perms = new HashSet<PosixFilePermission>();
+ 
+         if ((bits & UnixConstants.S_IRUSR) > 0)
+             perms.add(PosixFilePermission.OWNER_READ);
+diff -up openjdk-boot/jdk/src/windows/classes/java/lang/ProcessEnvironment.java.sav openjdk-boot/jdk/src/windows/classes/java/lang/ProcessEnvironment.java
+--- openjdk-boot/jdk/src/windows/classes/java/lang/ProcessEnvironment.java.sav	2011-07-29 12:21:43.000000000 -0400
++++ openjdk-boot/jdk/src/windows/classes/java/lang/ProcessEnvironment.java	2011-07-29 14:27:07.799531069 -0400
+@@ -250,7 +250,8 @@ final class ProcessEnvironment extends H
+                                    envblock.substring(eql+1,end));
+         }
+ 
+-        theCaseInsensitiveEnvironment = new TreeMap<>(nameComparator);
++        theCaseInsensitiveEnvironment
++            = new TreeMap<String,String>(nameComparator);
+         theCaseInsensitiveEnvironment.putAll(theEnvironment);
+     }
+ 
+@@ -295,7 +296,8 @@ final class ProcessEnvironment extends H
+     // Only for use by ProcessImpl.start()
+     String toEnvironmentBlock() {
+         // Sort Unicode-case-insensitively by name
+-        List<Map.Entry<String,String>> list = new ArrayList<>(entrySet());
++        List<Map.Entry<String,String>> list
++            = new ArrayList<Map.Entry<String,String>>(entrySet());
+         Collections.sort(list, entryComparator);
+ 
+         StringBuilder sb = new StringBuilder(size()*30);
+diff -up openjdk-boot/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java.sav openjdk-boot/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java
+--- openjdk-boot/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java.sav	2011-07-29 12:21:43.000000000 -0400
++++ openjdk-boot/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java	2011-07-29 14:27:07.799531069 -0400
+@@ -63,7 +63,7 @@ public class ResolverConfigurationImpl
+     // Parse string that consists of token delimited by space or commas
+     // and return LinkedHashMap
+     private LinkedList<String> stringToList(String str) {
+-        LinkedList<String> ll = new LinkedList<>();
++        LinkedList<String> ll = new LinkedList<String>();
+ 
+         // comma and space are valid delimites
+         StringTokenizer st = new StringTokenizer(str, ", ");
+diff -up openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java.sav openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java
+--- openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java.sav	2011-07-29 12:21:43.000000000 -0400
++++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java	2011-07-29 14:27:07.799531069 -0400
+@@ -128,7 +128,7 @@ class WindowsFileSystem
+         }
+ 
+         // iterate over roots, ignoring those that the security manager denies
+-        ArrayList<Path> result = new ArrayList<>();
++        ArrayList<Path> result = new ArrayList<Path>();
+         SecurityManager sm = System.getSecurityManager();
+         for (int i = 0; i <= 25; i++) {  // 0->A, 1->B, 2->C...
+             if ((drives & (1 << i)) != 0) {
+diff -up openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java.sav openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java
+--- openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java.sav	2011-07-29 12:21:43.000000000 -0400
++++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java	2011-07-29 14:27:07.799531069 -0400
+@@ -575,7 +575,7 @@ class WindowsPath extends AbstractPath {
+     // generate offset array
+     private void initOffsets() {
+         if (offsets == null) {
+-            ArrayList<Integer> list = new ArrayList<>();
++            ArrayList<Integer> list = new ArrayList<Integer>();
+             if (isEmpty()) {
+                 // empty path considered to have one name element
+                 list.add(0);
+diff -up openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java.sav openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java
+--- openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java.sav	2011-07-29 12:21:43.000000000 -0400
++++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java	2011-07-29 14:27:07.800531055 -0400
+@@ -378,7 +378,7 @@ class WindowsSecurityDescriptor {
+             AclInformation aclInfo = GetAclInformation(aclAddress);
+             aceCount = aclInfo.aceCount();
+         }
+-        ArrayList<AclEntry> result = new ArrayList<>(aceCount);
++        ArrayList<AclEntry> result = new ArrayList<AclEntry>(aceCount);
+ 
+         // decode each of the ACEs to AclEntry objects
+         for (int i=0; i<aceCount; i++) {
+diff -up openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java.sav openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java
+--- openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java.sav	2011-07-29 12:21:43.000000000 -0400
++++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java	2011-07-29 14:27:07.800531055 -0400
+@@ -65,7 +65,7 @@ class WindowsUserDefinedFileAttributeVie
+ 
+     // enumerates the file streams using FindFirstStream/FindNextStream APIs.
+     private List<String> listUsingStreamEnumeration() throws IOException {
+-        List<String> list = new ArrayList<>();
++        List<String> list = new ArrayList<String>();
+         try {
+             FirstStream first = FindFirstStream(file.getPathForWin32Calls());
+             if (first != null) {
+@@ -114,7 +114,7 @@ class WindowsUserDefinedFileAttributeVie
+         NativeBuffer buffer = null;
+ 
+         // result with names of alternative data streams
+-        final List<String> list = new ArrayList<>();
++        final List<String> list = new ArrayList<String>();
+ 
+         try {
+             buffer = NativeBuffers.getNativeBuffer(BUFFER_SIZE);
+@@ -216,7 +216,7 @@ class WindowsUserDefinedFileAttributeVie
+         // wrap with channel
+         FileChannel fc = null;
+         try {
+-            Set<OpenOption> opts = new HashSet<>();
++            Set<OpenOption> opts = new HashSet<OpenOption>();
+             opts.add(READ);
+             if (!followLinks)
+                 opts.add(WindowsChannelFactory.OPEN_REPARSE_POINT);
+@@ -243,7 +243,7 @@ class WindowsUserDefinedFileAttributeVie
+         // wrap with channel
+         FileChannel fc = null;
+         try {
+-            Set<OpenOption> opts = new HashSet<>();
++            Set<OpenOption> opts = new HashSet<OpenOption>();
+             opts.add(READ);
+             if (!followLinks)
+                 opts.add(WindowsChannelFactory.OPEN_REPARSE_POINT);
+@@ -298,7 +298,7 @@ class WindowsUserDefinedFileAttributeVie
+             x.rethrowAsIOException(file);
+         }
+         try {
+-            Set<OpenOption> opts = new HashSet<>();
++            Set<OpenOption> opts = new HashSet<OpenOption>();
+             if (!followLinks)
+                 opts.add(WindowsChannelFactory.OPEN_REPARSE_POINT);
+             opts.add(CREATE);
+diff -up openjdk-boot/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java.sav openjdk-boot/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java
+--- openjdk-boot/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java.sav	2011-07-29 12:21:50.000000000 -0400
++++ openjdk-boot/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java	2011-07-29 14:27:07.800531055 -0400
+@@ -56,7 +56,7 @@ public class NPEProvoker implements java
+     public static void main(String[] args) {
+         System.err.println("\n Regression test for bug 6541870\n");
+         try {
+-            ArrayList<NPEProvoker> list = new ArrayList<>();
++            ArrayList<NPEProvoker> list = new ArrayList<NPEProvoker>();
+             list.add(new NPEProvoker());
+             ByteArrayOutputStream baos = new ByteArrayOutputStream();
+             ObjectOutputStream oos = new ObjectOutputStream(baos);
+diff -up openjdk-boot/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java.sav openjdk-boot/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java
+--- openjdk-boot/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java.sav	2011-07-29 12:21:53.000000000 -0400
++++ openjdk-boot/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java	2011-07-29 14:27:07.800531055 -0400
+@@ -50,7 +50,7 @@ class InjectBytecodes implements Runtime
+     private final Injector[] after  = new Injector[256];
+     private final String className;
+     private final String methodName;
+-    private final Map<Integer,byte[]> snippets = new HashMap<>();
++    private final Map<Integer,byte[]> snippets = new HashMap<Integer,byte[]>();
+ 
+     private int pos;
+     private int newPos;
+diff -up openjdk-boot/jdk/test/java/lang/instrument/ilib/Inject.java.sav openjdk-boot/jdk/test/java/lang/instrument/ilib/Inject.java
+--- openjdk-boot/jdk/test/java/lang/instrument/ilib/Inject.java.sav	2011-07-29 12:21:53.000000000 -0400
++++ openjdk-boot/jdk/test/java/lang/instrument/ilib/Inject.java	2011-07-29 14:27:07.800531055 -0400
+@@ -107,7 +107,7 @@ public class Inject implements RuntimeCo
+     class IndexedInjector implements TrackerInjector {
+         int counter = 0;
+         int tracker;
+-        List<Info> infoList = new ArrayList<>();
++        List<Info> infoList = new ArrayList<Info>();
+ 
+         public int stackSize(int currentSize) {
+             return currentSize + 1;
+diff -up openjdk-boot/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java.sav openjdk-boot/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java
+--- openjdk-boot/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java.sav	2011-07-29 12:21:53.000000000 -0400
++++ openjdk-boot/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java	2011-07-29 14:27:07.800531055 -0400
+@@ -103,7 +103,7 @@ public class TestPlainArrayNotGeneric {
+         }
+     }
+ 
+-    private static final Set<Type> checking = new HashSet<>();
++    private static final Set<Type> checking = new HashSet<Type>();
+ 
+     private static void check(Type t, String what) {
+         if (t == null || !checking.add(t))
+diff -up openjdk-boot/jdk/test/java/util/logging/ClassLoaderLeakTest.java.sav openjdk-boot/jdk/test/java/util/logging/ClassLoaderLeakTest.java
+--- openjdk-boot/jdk/test/java/util/logging/ClassLoaderLeakTest.java.sav	2011-07-29 12:21:59.000000000 -0400
++++ openjdk-boot/jdk/test/java/util/logging/ClassLoaderLeakTest.java	2011-07-29 14:27:07.800531055 -0400
+@@ -89,7 +89,7 @@ public class ClassLoaderLeakTest {
+ 
+          MyClassLoader appClassLoader = new MyClassLoader(urls, "test0");
+          WeakReference<MyClassLoader> ref =
+-                 new WeakReference<>(appClassLoader);
++                 new WeakReference<MyClassLoader>(appClassLoader);
+ 
+ 
+          Thread appThread = new Thread(appsThreadGroup, launcher, "AppThread-0");
+diff -up openjdk-boot/jdk/test/java/util/Random/DistinctSeeds.java.sav openjdk-boot/jdk/test/java/util/Random/DistinctSeeds.java
+--- openjdk-boot/jdk/test/java/util/Random/DistinctSeeds.java.sav	2011-07-29 12:21:59.000000000 -0400
++++ openjdk-boot/jdk/test/java/util/Random/DistinctSeeds.java	2011-07-29 14:27:07.800531055 -0400
+@@ -59,7 +59,7 @@ public class DistinctSeeds {
+             }
+         }
+         final int threadCount = 2;
+-        List<RandomCollector> collectors = new ArrayList<>();
++        List<RandomCollector> collectors = new ArrayList<RandomCollector>();
+         List<Thread> threads = new ArrayList<Thread>();
+         for (int i = 0; i < threadCount; i++) {
+             RandomCollector r = new RandomCollector();
diff --git a/bootstrap-ecj-fphexconstants.patch b/bootstrap-ecj-fphexconstants.patch
new file mode 100644
index 0000000..c8472fe
--- /dev/null
+++ b/bootstrap-ecj-fphexconstants.patch
@@ -0,0 +1,60 @@
+diff -Nru ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Double.java openjdk-boot/jdk/src/share/classes/java/lang/Double.java
+--- ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Double.java	2009-10-30 16:49:00.000000000 +0000
++++ openjdk-boot/jdk/src/share/classes/java/lang/Double.java	2009-10-30 16:59:16.000000000 +0000
+@@ -76,7 +76,7 @@
+      * {@code 0x1.fffffffffffffP+1023} and also equal to
+      * {@code Double.longBitsToDouble(0x7fefffffffffffffL)}.
+      */
+-    public static final double MAX_VALUE = 0x1.fffffffffffffP+1023; // 1.7976931348623157e+308
++    public static final double MAX_VALUE = 1.7976931348623157e+308;
+ 
+     /**
+      * A constant holding the smallest positive normal value of type
+@@ -86,7 +86,7 @@
+      *
+      * @since 1.6
+      */
+-    public static final double MIN_NORMAL = 0x1.0p-1022; // 2.2250738585072014E-308
++    public static final double MIN_NORMAL = 2.2250738585072014E-308;
+ 
+     /**
+      * A constant holding the smallest positive nonzero value of type
+@@ -95,7 +95,7 @@
+      * {@code 0x0.0000000000001P-1022} and also equal to
+      * {@code Double.longBitsToDouble(0x1L)}.
+      */
+-    public static final double MIN_VALUE = 0x0.0000000000001P-1022; // 4.9e-324
++    public static final double MIN_VALUE = 4.9e-324;
+ 
+     /**
+      * Maximum exponent a finite {@code double} variable may have.
+diff -Nru ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Float.java openjdk-boot/jdk/src/share/classes/java/lang/Float.java
+--- ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Float.java	2009-10-30 16:49:00.000000000 +0000
++++ openjdk-boot/jdk/src/share/classes/java/lang/Float.java	2009-10-30 16:59:16.000000000 +0000
+@@ -76,7 +76,7 @@
+      * {@code 0x1.fffffeP+127f} and also equal to
+      * {@code Float.intBitsToFloat(0x7f7fffff)}.
+      */
+-    public static final float MAX_VALUE = 0x1.fffffeP+127f; // 3.4028235e+38f
++    public static final float MAX_VALUE = 3.4028235e+38f;
+ 
+     /**
+      * A constant holding the smallest positive normal value of type
+@@ -86,7 +86,7 @@
+      *
+      * @since 1.6
+      */
+-    public static final float MIN_NORMAL = 0x1.0p-126f; // 1.17549435E-38f
++    public static final float MIN_NORMAL = 1.17549435E-38f;
+ 
+     /**
+      * A constant holding the smallest positive nonzero value of type
+@@ -94,7 +94,7 @@
+      * hexadecimal floating-point literal {@code 0x0.000002P-126f}
+      * and also equal to {@code Float.intBitsToFloat(0x1)}.
+      */
+-    public static final float MIN_VALUE = 0x0.000002P-126f; // 1.4e-45f
++    public static final float MIN_VALUE = 1.4e-45f;
+ 
+     /**
+      * Maximum exponent a finite {@code float} variable may have.  It
diff --git a/bootstrap-ecj-multicatch.patch b/bootstrap-ecj-multicatch.patch
new file mode 100644
index 0000000..5603188
--- /dev/null
+++ b/bootstrap-ecj-multicatch.patch
@@ -0,0 +1,115 @@
+diff -r 7fb9e32b146a src/share/classes/java/io/PrintStream.java
+--- openjdk-boot/jdk/src/share/classes/java/io/PrintStream.java	Mon Apr 11 14:58:51 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/PrintStream.java	Wed Apr 13 23:52:09 2011 +0100
+@@ -91,7 +91,10 @@
+         requireNonNull(csn, "charsetName");
+         try {
+             return Charset.forName(csn);
+-        } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
++        } catch (IllegalCharsetNameException unused) {
++            // UnsupportedEncodingException should be thrown
++            throw new UnsupportedEncodingException(csn);
++        } catch (UnsupportedCharsetException unused) {
+             // UnsupportedEncodingException should be thrown
+             throw new UnsupportedEncodingException(csn);
+         }
+diff -r 7fb9e32b146a src/share/classes/java/io/PrintWriter.java
+--- openjdk-boot/jdk/src/share/classes/java/io/PrintWriter.java	Mon Apr 11 14:58:51 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/PrintWriter.java	Wed Apr 13 23:52:09 2011 +0100
+@@ -85,7 +85,10 @@
+         Objects.requireNonNull(csn, "charsetName");
+         try {
+             return Charset.forName(csn);
+-        } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
++        } catch (IllegalCharsetNameException unused) {
++            // UnsupportedEncodingException should be thrown
++            throw new UnsupportedEncodingException(csn);
++        } catch (UnsupportedCharsetException unused) {
+             // UnsupportedEncodingException should be thrown
+             throw new UnsupportedEncodingException(csn);
+         }
+diff -r 7fb9e32b146a src/share/classes/java/util/Formatter.java
+--- openjdk-boot/jdk/src/share/classes/java/util/Formatter.java	Mon Apr 11 14:58:51 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Formatter.java	Wed Apr 13 23:52:09 2011 +0100
+@@ -1859,7 +1859,10 @@
+         Objects.requireNonNull(csn, "charsetName");
+         try {
+             return Charset.forName(csn);
+-        } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
++        } catch (IllegalCharsetNameException unused) {
++            // UnsupportedEncodingException should be thrown
++            throw new UnsupportedEncodingException(csn);
++        } catch (UnsupportedCharsetException unused) {
+             // UnsupportedEncodingException should be thrown
+             throw new UnsupportedEncodingException(csn);
+         }
+diff -r 7fb9e32b146a src/share/classes/java/util/Scanner.java
+--- openjdk-boot/jdk/src/share/classes/java/util/Scanner.java	Mon Apr 11 14:58:51 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Scanner.java	Wed Apr 13 23:52:09 2011 +0100
+@@ -633,7 +633,10 @@
+         Objects.requireNonNull(csn, "charsetName");
+         try {
+             return Charset.forName(csn);
+-        } catch (IllegalCharsetNameException|UnsupportedCharsetException e) {
++        } catch (IllegalCharsetNameException e) {
++            // IllegalArgumentException should be thrown
++            throw new IllegalArgumentException(e);
++        } catch (UnsupportedCharsetException e) {
+             // IllegalArgumentException should be thrown
+             throw new IllegalArgumentException(e);
+         }
+@@ -684,7 +687,9 @@
+         Objects.requireNonNull(charsetName, "charsetName");
+         try {
+             return Charset.forName(charsetName).newDecoder();
+-        } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
++        } catch (IllegalCharsetNameException unused) {
++            throw new IllegalArgumentException(charsetName);
++        } catch (UnsupportedCharsetException unused) {
+             throw new IllegalArgumentException(charsetName);
+         }
+     }
+diff -r d28f54a421b1 src/share/classes/java/lang/management/ManagementFactory.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java	Mon Jun 13 15:58:42 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java	Tue Jun 21 01:53:32 2011 +0100
+@@ -606,7 +606,9 @@
+             // create an MXBean proxy
+             return JMX.newMXBeanProxy(connection, objName, mxbeanInterface,
+                                       emitter);
+-        } catch (InstanceNotFoundException|MalformedObjectNameException e) {
++        } catch (InstanceNotFoundException e) {
++            throw new IllegalArgumentException(e);
++        } catch (MalformedObjectNameException e) {
+             throw new IllegalArgumentException(e);
+         }
+     }
+diff -r d28f54a421b1 src/share/classes/sun/text/bidi/BidiBase.java
+--- openjdk-boot/jdk/src/share/classes/sun/text/bidi/BidiBase.java	Mon Jun 13 15:58:42 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/text/bidi/BidiBase.java	Tue Jun 21 01:53:32 2011 +0100
+@@ -3477,7 +3477,9 @@
+             try {
+                 Field f = clazz.getField(name);
+                 return f.get(null);
+-            } catch (NoSuchFieldException | IllegalAccessException x) {
++            } catch (NoSuchFieldException x) {
++                throw new AssertionError(x);
++            } catch (IllegalAccessException x) {
+                 throw new AssertionError(x);
+             }
+         }
+diff -r d28f54a421b1 src/share/classes/sun/invoke/util/ValueConversions.java
+--- openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java	Mon Jun 13 15:58:42 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java	Thu Jun 23 15:55:48 2011 +0100
+@@ -661,7 +661,11 @@
+             IGNORE = IMPL_LOOKUP.findStatic(THIS_CLASS, "ignore", ignoreType);
+             EMPTY = IMPL_LOOKUP.findStatic(THIS_CLASS, "empty", ignoreType.dropParameterTypes(0, 1));
+             NEW_ARRAY = IMPL_LOOKUP.findStatic(THIS_CLASS, "newArray", MethodType.methodType(Object[].class, int.class));
+-        } catch (NoSuchMethodException | IllegalAccessException ex) {
++        } catch (NoSuchMethodException ex) {
++            Error err = new InternalError("uncaught exception");
++            err.initCause(ex);
++            throw err;
++        } catch (IllegalAccessException ex) {
+             Error err = new InternalError("uncaught exception");
+             err.initCause(ex);
+             throw err;
diff --git a/bootstrap-ecj-opts.patch b/bootstrap-ecj-opts.patch
new file mode 100644
index 0000000..99ed532
--- /dev/null
+++ b/bootstrap-ecj-opts.patch
@@ -0,0 +1,12 @@
+diff -Nru openjdk-boot.orig/jdk/make/java/nio/Makefile openjdk-boot/jdk/make/java/nio/Makefile
+--- openjdk-boot.orig/jdk/make/java/nio/Makefile	2009-12-13 18:43:31.000000000 +0000
++++ openjdk-boot/jdk/make/java/nio/Makefile	2009-12-13 19:03:31.000000000 +0000
+@@ -31,7 +31,7 @@
+ PACKAGE = java.nio
+ LIBRARY = nio
+ PRODUCT = java
+-OTHER_JAVACFLAGS += -Xmaxwarns 1000 -Xlint:serial -Werror
++OTHER_JAVACFLAGS += -Xlint:serial -Werror
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+ NIO_SRC = $(SHARE_SRC)/classes/java/nio
diff --git a/bootstrap-ecj-stringswitch.patch b/bootstrap-ecj-stringswitch.patch
new file mode 100644
index 0000000..83e0182
--- /dev/null
+++ b/bootstrap-ecj-stringswitch.patch
@@ -0,0 +1,303 @@
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java.sav	2011-07-29 12:21:02.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java	2011-07-29 13:22:07.405902338 -0400
+@@ -350,18 +350,15 @@ class ClassReader {
+             if (attrCommands != null) {
+                 Attribute.Layout lkey = Attribute.keyForLookup(ctype, name);
+                 String cmd = attrCommands.get(lkey);
+-                if (cmd != null) {
+-                    switch (cmd) {
+-                        case "pass":
+-                            String message1 = "passing attribute bitwise in " + h;
+-                            throw new Attribute.FormatException(message1, ctype, name, cmd);
+-                        case "error":
+-                            String message2 = "attribute not allowed in " + h;
+-                            throw new Attribute.FormatException(message2, ctype, name, cmd);
+-                        case "strip":
+-                            skip(length, name + " attribute in " + h);
+-                            continue;
+-                    }
++                if ("pass".equals(cmd)) {
++                    String message1 = "passing attribute bitwise in " + h;
++                    throw new Attribute.FormatException(message1, ctype, name, cmd);
++                } else if ("error".equals(cmd)) {
++                    String message2 = "attribute not allowed in " + h;
++                    throw new Attribute.FormatException(message2, ctype, name, cmd);
++                } else if ("strip".equals(cmd)) {
++                    skip(length, name + " attribute in " + h);
++                    continue;
+                 }
+             }
+             // Find canonical instance of the requested attribute.
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java.sav	2011-07-29 12:21:02.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	2011-07-29 13:22:07.405902338 -0400
+@@ -71,16 +71,14 @@ class Driver {
+         {
+             // Non-standard, undocumented "--unpack" switch enables unpack mode.
+             String arg0 = av.isEmpty() ? "" : av.get(0);
+-            switch (arg0) {
+-                case "--pack":
++            if ("--pack".equals(arg0))
+                 av.remove(0);
+-                    break;
+-                case "--unpack":
+-                av.remove(0);
+-                doPack = false;
+-                doUnpack = true;
+-                    break;
+-            }
++            else if ("--unpack".equals(arg0))
++                {
++                    av.remove(0);
++                    doPack = false;
++                    doUnpack = true;
++                }
+         }
+ 
+         // Collect engine properties here:
+@@ -180,21 +178,16 @@ class Driver {
+         // Deal with remaining non-engine properties:
+         for (String opt : avProps.keySet()) {
+             String val = avProps.get(opt);
+-            switch (opt) {
+-                case "--repack":
+-                    doRepack = true;
+-                    break;
+-                case "--no-gzip":
+-                    doZip = (val == null);
+-                    break;
+-                case "--log-file=":
+-                    logFile = val;
+-                    break;
+-                default:
+-                    throw new InternalError(MessageFormat.format(
+-                            RESOURCE.getString(DriverResource.BAD_OPTION),
+-                            opt, avProps.get(opt)));
+-            }
++            if ("--repack".equals(opt))
++                doRepack = true;
++            else if ("--no-gzip".equals(opt))
++                doZip = (val == null);
++            else if ("--log-file=".equals(opt))
++                logFile = val;
++            else
++                throw new InternalError(MessageFormat.format(
++                                                             RESOURCE.getString(DriverResource.BAD_OPTION),
++                                                             opt, avProps.get(opt)));
+         }
+ 
+         if (logFile != null && !logFile.equals("")) {
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java.sav openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java.sav	2011-07-29 12:21:02.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java	2011-07-29 13:22:07.406902324 -0400
+@@ -1107,30 +1107,25 @@ class Package {
+         // what is one of { Debug, Compile, Constant, Exceptions, InnerClasses }
+         if (verbose > 0)
+             Utils.log.info("Stripping "+what.toLowerCase()+" data and attributes...");
+-        switch (what) {
+-            case "Debug":
+-                strip("SourceFile");
+-                strip("LineNumberTable");
+-                strip("LocalVariableTable");
+-                strip("LocalVariableTypeTable");
+-                break;
+-            case "Compile":
+-                // Keep the inner classes normally.
+-                // Although they have no effect on execution,
+-                // the Reflection API exposes them, and JCK checks them.
+-                // NO: // strip("InnerClasses");
+-                strip("Deprecated");
+-                strip("Synthetic");
+-                break;
+-            case "Exceptions":
+-                // Keep the exceptions normally.
+-                // Although they have no effect on execution,
+-                // the Reflection API exposes them, and JCK checks them.
+-                strip("Exceptions");
+-                break;
+-            case "Constant":
+-                stripConstantFields();
+-                break;
++        if ("Debug".equals(what)) {
++            strip("SourceFile");
++            strip("LineNumberTable");
++            strip("LocalVariableTable");
++            strip("LocalVariableTypeTable");
++        } else if ("Compile".equals(what)) {
++            // Keep the inner classes normally.
++            // Although they have no effect on execution,
++            // the Reflection API exposes them, and JCK checks them.
++            // NO: // strip("InnerClasses");
++            strip("Deprecated");
++            strip("Synthetic");
++        } else if ("Exceptions".equals(what)) {
++            // Keep the exceptions normally.
++            // Although they have no effect on execution,
++            // the Reflection API exposes them, and JCK checks them.
++            strip("Exceptions");
++        } else if ("Constant".equals(what)) {
++            stripConstantFields();
+         }
+     }
+ 
+diff -up openjdk-boot/jdk/src/share/classes/com/sun/security/ntlm/NTLM.java.sav openjdk-boot/jdk/src/share/classes/com/sun/security/ntlm/NTLM.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/security/ntlm/NTLM.java.sav	2011-07-29 12:21:06.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/ntlm/NTLM.java	2011-07-29 13:22:07.406902324 -0400
+@@ -64,17 +64,23 @@ class NTLM {
+ 
+     protected NTLM(String version) throws NTLMException {
+         if (version == null) version = "LMv2/NTLMv2";
+-        switch (version) {
+-            case "LM": v = NTLM; writeLM = true; writeNTLM = false; break;
+-            case "NTLM": v = NTLM; writeLM = false; writeNTLM = true; break;
+-            case "LM/NTLM": v = NTLM; writeLM = writeNTLM = true; break;
+-            case "NTLM2": v = NTLM2; writeLM = writeNTLM = true; break;
+-            case "LMv2": v = NTLMv2; writeLM = true; writeNTLM = false; break;
+-            case "NTLMv2": v = NTLMv2; writeLM = false; writeNTLM = true; break;
+-            case "LMv2/NTLMv2": v = NTLMv2; writeLM = writeNTLM = true; break;
+-            default: throw new NTLMException(NTLMException.BAD_VERSION,
+-                    "Unknown version " + version);
+-        }
++        if (version.equals("LM"))
++          { v = NTLM; writeLM = true; writeNTLM = false; }
++        else if (version.equals("NTLM"))
++          { v = NTLM; writeLM = false; writeNTLM = true; }
++        else if (version.equals("LM/NTLM"))
++          { v = NTLM; writeLM = writeNTLM = true; }
++        else if (version.equals("NTLM2"))
++          { v = NTLM2; writeLM = writeNTLM = true; }
++        else if (version.equals("LMv2"))
++          { v = NTLMv2; writeLM = true; writeNTLM = false; }
++        else if (version.equals("NTLMv2"))
++          { v = NTLMv2; writeLM = false; writeNTLM = true; }
++        else if (version.equals("LMv2/NTLMv2"))
++          { v = NTLMv2; writeLM = writeNTLM = true; }
++        else
++          throw new NTLMException(NTLMException.BAD_VERSION,
++                                  "Unknown version " + version);
+         try {
+             fac = SecretKeyFactory.getInstance ("DES");
+             cipher = Cipher.getInstance ("DES/ECB/NoPadding");
+diff -up openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java.sav openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java.sav	2011-07-29 12:21:11.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java	2011-07-29 13:22:07.406902324 -0400
+@@ -211,14 +211,16 @@ public class MethodHandleProxies {
+ 
+     private static
+     boolean isObjectMethod(Method m) {
+-        switch (m.getName()) {
+-        case "toString":
++        String name = m.getName();
++        if ("toString".equals(name)) {
+             return (m.getReturnType() == String.class
+                     && m.getParameterTypes().length == 0);
+-        case "hashCode":
++        }
++        if ("hashCode".equals(name)) {
+             return (m.getReturnType() == int.class
+                     && m.getParameterTypes().length == 0);
+-        case "equals":
++        }
++        if ("equals".equals(name)) {
+             return (m.getReturnType() == boolean.class
+                     && m.getParameterTypes().length == 1
+                     && m.getParameterTypes()[0] == Object.class);
+@@ -229,12 +231,14 @@ public class MethodHandleProxies {
+     private static
+     Object callObjectMethod(Object self, Method m, Object[] args) {
+         assert(isObjectMethod(m)) : m;
+-        switch (m.getName()) {
+-        case "toString":
++        String name = m.getName();
++        if ("toString".equals(name)) {
+             return self.getClass().getName() + "@" + Integer.toHexString(self.hashCode());
+-        case "hashCode":
++        }
++        if ("hashCode".equals(name)) {
+             return System.identityHashCode(self);
+-        case "equals":
++        }
++        if ("equals".equals(name)) {
+             return (self == args[0]);
+         }
+         return null;
+diff -up openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java.sav openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java
+--- openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java.sav	2011-07-29 12:21:24.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java	2011-07-29 13:22:07.407902309 -0400
+@@ -117,24 +117,20 @@ public enum LauncherHelper {
+         String optStr = (opts.length > 1 && opts[1] != null)
+                 ? opts[1].trim()
+                 : "all";
+-        switch (optStr) {
+-            case "vm":
++        if ("vm".equals(optStr))
++            printVmSettings(ostream, initialHeapSize, maxHeapSize,
++                            stackSize, isServer);
++        else if ("properties".equals(optStr))
++            printProperties(ostream);
++        else if ("locale".equals(optStr))
++            printLocale(ostream);
++        else
++            {
+                 printVmSettings(ostream, initialHeapSize, maxHeapSize,
+-                        stackSize, isServer);
+-                break;
+-            case "properties":
+-                printProperties(ostream);
+-                break;
+-            case "locale":
+-                printLocale(ostream);
+-                break;
+-            default:
+-                printVmSettings(ostream, initialHeapSize, maxHeapSize,
+-                        stackSize, isServer);
++                                stackSize, isServer);
+                 printProperties(ostream);
+                 printLocale(ostream);
+-                break;
+-        }
++            }
+     }
+ 
+     /*
+diff -up openjdk-boot/jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java.sav openjdk-boot/jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java.sav	2011-07-29 12:21:30.000000000 -0400
++++ openjdk-boot/jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java	2011-07-29 13:22:07.407902309 -0400
+@@ -383,19 +383,23 @@ public class DisabledAlgorithmConstraint
+             GE;         // ">="
+ 
+             static Operator of(String s) {
+-                switch (s) {
+-                    case "==":
+-                        return EQ;
+-                    case "!=":
+-                        return NE;
+-                    case "<":
+-                        return LT;
+-                    case "<=":
+-                        return LE;
+-                    case ">":
+-                        return GT;
+-                    case ">=":
+-                        return GE;
++                if ("==".equals(s)) {
++                    return EQ;
++                }
++                if ("!=".equals(s)) {
++                    return NE;
++                }
++                if ("<".equals(s)) {
++                    return LT;
++                }
++                if ("<=".equals(s)) {
++                    return LE;
++                }
++                if (">".equals(s)) {
++                    return GT;
++                }
++                if (">=".equals(s)) {
++                    return GE;
+                 }
+ 
+                 throw new IllegalArgumentException(
diff --git a/bootstrap-ecj-trywithresources.patch b/bootstrap-ecj-trywithresources.patch
new file mode 100644
index 0000000..86f5025
--- /dev/null
+++ b/bootstrap-ecj-trywithresources.patch
@@ -0,0 +1,928 @@
+diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -743,7 +743,9 @@
+ 
+         private void dumpBand() throws IOException {
+             assert(optDumpBands);
+-            try (PrintStream ps = new PrintStream(getDumpStream(this, ".txt"))) {
++            PrintStream ps = null;
++            try {
++                ps = new PrintStream(getDumpStream(this, ".txt"));
+                 String irr = (bandCoding == regularCoding) ? "" : " irregular";
+                 ps.print("# length="+length+
+                          " size="+outputSize()+
+@@ -758,9 +760,19 @@
+                 }
+                 printArrayTo(ps, values, 0, length);
+             }
+-            try (OutputStream ds = getDumpStream(this, ".bnd")) {
++            finally {
++                if (ps != null)
++                    ps.close();
++            }
++            OutputStream ds = null;
++            try {
++                ds = getDumpStream(this, ".bnd");
+                 bandCoding.writeArrayTo(ds, values, 0, length);
+             }
++            finally {
++                if (ds != null)
++                    ds.close();
++            }
+         }
+ 
+         /** Disburse one value. */
+@@ -829,12 +841,18 @@
+ 
+         private void dumpBand() throws IOException {
+             assert(optDumpBands);
+-            try (OutputStream ds = getDumpStream(this, ".bnd")) {
++            OutputStream ds = null;
++            try {
++                ds = getDumpStream(this, ".bnd");
+                 if (bytesForDump != null)
+                     bytesForDump.writeTo(ds);
+                 else
+                     bytes.writeTo(ds);
+             }
++            finally {
++                if (ds != null)
++                    ds.close();
++            }
+         }
+ 
+         public void readDataFrom(InputStream in) throws IOException {
+diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/Driver.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -151,8 +151,13 @@
+                 if ("--config-file=".equals(state)) {
+                     String propFile = av.remove(0);
+                     Properties fileProps = new Properties();
+-                    try (InputStream propIn = new FileInputStream(propFile)) {
++                    InputStream propIn = null;
++                    try {
++                        propIn = new FileInputStream(propFile);
+                         fileProps.load(propIn);
++                    } finally {
++                        if (propIn != null)
++                            propIn.close();
+                     }
+                     if (engProps.get(verboseProp) != null)
+                         fileProps.list(System.out);
+@@ -348,9 +353,14 @@
+                 else
+                     fileOut = new FileOutputStream(outfile);
+                 fileOut = new BufferedOutputStream(fileOut);
+-                try (JarOutputStream out = new JarOutputStream(fileOut)) {
++                JarOutputStream out = null;
++                try {
++                    out = new JarOutputStream(fileOut);
+                     junpack.unpack(in, out);
+                     // p200 closes in but not out
++                } finally {
++                    if (out != null)
++                        out.close();
+                 }
+                 // At this point, we have a good jarfile (or newfile, if -r)
+             }
+@@ -411,7 +421,9 @@
+         long filelen = new File(jarfile).length();
+         if (filelen <= 0)  return "";
+         long skiplen = Math.max(0, filelen - tail.length);
+-        try (InputStream in = new FileInputStream(new File(jarfile))) {
++        InputStream in = null;
++        try {
++            in = new FileInputStream(new File(jarfile));
+             in.skip(skiplen);
+             in.read(tail);
+             for (int i = tail.length-4; i >= 0; i--) {
+@@ -425,6 +437,9 @@
+                 }
+             }
+             return "";
++        } finally {
++            if (in != null)
++                in.close();
+         }
+     }
+ 
+diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -241,9 +241,15 @@
+     void run(File inFile, JarOutputStream jstream) throws IOException {
+         // %%% maybe memory-map the file, and pass it straight into unpacker
+         ByteBuffer mappedFile = null;
+-        try (FileInputStream fis = new FileInputStream(inFile)) {
++        FileInputStream fis = null;
++        try {
++            fis = new FileInputStream(inFile);
+             run(fis, jstream, mappedFile);
+         }
++        finally {
++            if (fis != null)
++                fis.close();
++        }
+         // Note:  caller is responsible to finish with jstream.
+     }
+ 
+diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -540,9 +540,15 @@
+             Index index = initCPIndex(tag, cpMap);
+ 
+             if (optDumpBands) {
+-                try (PrintStream ps = new PrintStream(getDumpStream(index, ".idx"))) {
++                PrintStream ps = null;
++                try {
++                    ps = new PrintStream(getDumpStream(index, ".idx"));
+                     printArrayTo(ps, index.cpMap, 0, index.cpMap.length);
+                 }
++                finally {
++                    if (ps != null)
++                        ps.close();
++                }
+             }
+         }
+ 
+@@ -828,9 +834,10 @@
+         attr_definition_headers.readFrom(in);
+         attr_definition_name.readFrom(in);
+         attr_definition_layout.readFrom(in);
+-        try (PrintStream dump = !optDumpBands ? null
+-                 : new PrintStream(getDumpStream(attr_definition_headers, ".def")))
+-        {
++        PrintStream dump = null;
++        try {
++            dump = !optDumpBands ? null
++                : new PrintStream(getDumpStream(attr_definition_headers, ".def"));
+             for (int i = 0; i < numAttrDefs; i++) {
+                 int       header = attr_definition_headers.getByte();
+                 Utf8Entry name   = (Utf8Entry) attr_definition_name.getRef();
+@@ -849,6 +856,10 @@
+                 if (dump != null)  dump.println(index+" "+def);
+             }
+         }
++        finally {
++            if (dump != null)
++                dump.close();
++        }
+         attr_definition_headers.doneDisbursing();
+         attr_definition_name.doneDisbursing();
+         attr_definition_layout.doneDisbursing();
+diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -458,9 +458,15 @@
+                 Utils.log.info("Writing "+cpMap.length+" "+ConstantPool.tagName(tag)+" entries...");
+ 
+             if (optDumpBands) {
+-                try (PrintStream ps = new PrintStream(getDumpStream(index, ".idx"))) {
++                PrintStream ps = null;
++                try {
++                    ps = new PrintStream(getDumpStream(index, ".idx"));
+                     printArrayTo(ps, cpMap, 0, cpMap.length);
+                 }
++                finally {
++                    if (ps != null)
++                        ps.close();
++                }
+             }
+ 
+             switch (tag) {
+@@ -923,9 +929,10 @@
+             }
+         });
+         attrDefsWritten = new Attribute.Layout[numAttrDefs];
+-        try (PrintStream dump = !optDumpBands ? null
+-                 : new PrintStream(getDumpStream(attr_definition_headers, ".def")))
+-        {
++        PrintStream dump = null;
++        try {
++            dump = !optDumpBands ? null
++                : new PrintStream(getDumpStream(attr_definition_headers, ".def"));
+             int[] indexForDebug = Arrays.copyOf(attrIndexLimit, ATTR_CONTEXT_LIMIT);
+             for (int i = 0; i < defs.length; i++) {
+                 int header = ((Integer)defs[i][0]).intValue();
+@@ -951,6 +958,10 @@
+                 }
+             }
+         }
++        finally {
++            if (dump != null)
++                dump.close();
++        }
+     }
+ 
+     void writeAttrCounts() throws IOException {
+diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/PropMap.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -123,8 +123,9 @@
+         // Do this after the previous props are put in place,
+         // to allow override if necessary.
+         String propFile = "intrinsic.properties";
+-
+-        try (InputStream propStr = PackerImpl.class.getResourceAsStream(propFile)) {
++        InputStream propStr = null;
++        try {
++            propStr = PackerImpl.class.getResourceAsStream(propFile);
+             if (propStr == null) {
+                 throw new RuntimeException(propFile + " cannot be loaded");
+             }
+@@ -132,6 +133,14 @@
+         } catch (IOException ee) {
+             throw new RuntimeException(ee);
+         }
++        finally {
++            try {
++                if (propStr != null)
++                    propStr.close();
++            } catch (IOException ee) {
++                throw new RuntimeException(ee);
++            }
++        }
+ 
+         for (Map.Entry<Object, Object> e : props.entrySet()) {
+             String key = (String) e.getKey();
+diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -161,9 +161,15 @@
+         }
+         // Use the stream-based implementation.
+         // %%% Reconsider if native unpacker learns to memory-map the file.
+-        try (FileInputStream instr = new FileInputStream(in)) {
++        FileInputStream instr = null;
++        try {
++            instr = new FileInputStream(in);
+             unpack(instr, out);
+         }
++        finally {
++            if (instr != null)
++                instr.close();
++        }
+         if (props.getBoolean(Utils.UNPACK_REMOVE_PACKFILE)) {
+             in.delete();
+         }
+diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/Utils.java
+--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -268,18 +268,30 @@
+         // 4947205 : Peformance is slow when using pack-effort=0
+         out = new BufferedOutputStream(out);
+         out = new NonCloser(out); // protect from JarOutputStream.close()
+-        try (JarOutputStream jout = new JarOutputStream(out)) {
++        JarOutputStream jout = null;
++        try {
++            jout = new JarOutputStream(out);
+             copyJarFile(in, jout);
+         }
++        finally {
++            if (jout != null)
++                jout.close();
++        }
+     }
+     static void copyJarFile(JarFile in, OutputStream out) throws IOException {
+ 
+         // 4947205 : Peformance is slow when using pack-effort=0
+         out = new BufferedOutputStream(out);
+         out = new NonCloser(out); // protect from JarOutputStream.close()
+-        try (JarOutputStream jout = new JarOutputStream(out)) {
++        JarOutputStream jout = null;
++        try {
++            jout = new JarOutputStream(out);
+             copyJarFile(in, jout);
+         }
++        finally {
++            if (jout != null)
++                jout.close();
++        }
+     }
+         // Wrapper to prevent closing of client-supplied stream.
+     static private
+diff -r 1631a3dee8fc src/share/classes/java/lang/Package.java
+--- openjdk-boot/jdk/src/share/classes/java/lang/Package.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/Package.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -576,12 +576,23 @@
+      * Returns the Manifest for the specified JAR file name.
+      */
+     private static Manifest loadManifest(String fn) {
+-        try (FileInputStream fis = new FileInputStream(fn);
+-             JarInputStream jis = new JarInputStream(fis, false))
+-        {
++        FileInputStream fis = null;
++        JarInputStream jis = null;
++        try {
++            fis = new FileInputStream(fn);
++            jis = new JarInputStream(fis, false);
+             return jis.getManifest();
+         } catch (IOException e) {
+             return null;
++        } finally {
++            try {
++                if (jis != null)
++                    jis.close();
++                if (fis != null)
++                    fis.close();
++            } catch (IOException e) {
++                return null;
++            }
+         }
+     }
+ 
+diff -r 1631a3dee8fc src/share/classes/java/nio/channels/SocketChannel.java
+--- openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -188,7 +188,7 @@
+             } catch (Throwable suppressed) {
+                 x.addSuppressed(suppressed);
+             }
+-            throw x;
++            throw (IOException) x;
+         }
+         assert sc.isConnected();
+         return sc;
+diff -r 1631a3dee8fc src/share/classes/java/nio/file/CopyMoveHelper.java
+--- openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -122,9 +122,15 @@
+         if (attrs.isDirectory()) {
+             Files.createDirectory(target);
+         } else {
+-            try (InputStream in = Files.newInputStream(source)) {
++            InputStream in = null;
++            try {
++                in = Files.newInputStream(source);
+                 Files.copy(in, target);
+             }
++            finally {
++                if (in != null)
++                    in.close();
++            }
+         }
+ 
+         // copy basic attributes to target
+@@ -142,7 +148,7 @@
+                 } catch (Throwable suppressed) {
+                     x.addSuppressed(suppressed);
+                 }
+-                throw x;
++                throw (IOException) x;
+             }
+         }
+     }
+diff -r 1631a3dee8fc src/share/classes/java/nio/file/Files.java
+--- openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -2833,8 +2833,11 @@
+         }
+ 
+         // do the copy
+-        try (OutputStream out = ostream) {
+-            return copy(in, out);
++        try {
++            return copy(in, ostream);
++        }
++        finally {
++            ostream.close();
+         }
+     }
+ 
+@@ -2875,9 +2878,15 @@
+         // ensure not null before opening file
+         Objects.requireNonNull(out);
+ 
+-        try (InputStream in = newInputStream(source)) {
++        InputStream in = null;
++        try {
++            in = newInputStream(source);
+             return copy(in, out);
+         }
++        finally {
++            if (in != null)
++                in.close();
++        }
+     }
+ 
+     /**
+@@ -2943,8 +2952,14 @@
+         if (size > (long)Integer.MAX_VALUE)
+             throw new OutOfMemoryError("Required array size too large");
+ 
+-        try (InputStream in = newInputStream(path)) {
+-             return read(in, (int)size);
++        InputStream in = null;
++        try {
++            in = newInputStream(path);
++            return read(in, (int)size);
++        }
++        finally {
++            if (in != null)
++                in.close();
+         }
+     }
+ 
+@@ -2990,7 +3005,9 @@
+     public static List<String> readAllLines(Path path, Charset cs)
+         throws IOException
+     {
+-        try (BufferedReader reader = newBufferedReader(path, cs)) {
++        BufferedReader reader = null;
++        try {
++            reader = newBufferedReader(path, cs);
+             List<String> result = new ArrayList<>();
+             for (;;) {
+                 String line = reader.readLine();
+@@ -3000,6 +3017,10 @@
+             }
+             return result;
+         }
++        finally {
++            if (reader != null)
++                reader.close();
++        }
+     }
+ 
+     /**
+@@ -3049,7 +3070,9 @@
+         // ensure bytes is not null before opening file
+         Objects.requireNonNull(bytes);
+ 
+-        try (OutputStream out = Files.newOutputStream(path, options)) {
++        OutputStream out = null;
++        try {
++            out = Files.newOutputStream(path, options);
+             int len = bytes.length;
+             int rem = len;
+             while (rem > 0) {
+@@ -3058,6 +3081,10 @@
+                 rem -= n;
+             }
+         }
++        finally {
++            if (out != null)
++                out.close();
++        }
+         return path;
+     }
+ 
+@@ -3109,12 +3136,18 @@
+         Objects.requireNonNull(lines);
+         CharsetEncoder encoder = cs.newEncoder();
+         OutputStream out = newOutputStream(path, options);
+-        try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, encoder))) {
++        BufferedWriter writer = null;
++        try {
++            writer = new BufferedWriter(new OutputStreamWriter(out, encoder));
+             for (CharSequence line: lines) {
+                 writer.append(line);
+                 writer.newLine();
+             }
+         }
++        finally {
++            if (writer != null)
++                writer.close();
++        }
+         return path;
+     }
+ }
+diff -r 1631a3dee8fc src/share/classes/java/util/Currency.java
+--- openjdk-boot/jdk/src/share/classes/java/util/Currency.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Currency.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -233,9 +233,14 @@
+                                              "currency.properties");
+                     if (propFile.exists()) {
+                         Properties props = new Properties();
+-                        try (FileReader fr = new FileReader(propFile)) {
++                        FileReader fr = null;
++                        try {
++                            fr = new FileReader(propFile);
+                             props.load(fr);
+                         }
++                        finally {
++                            fr.close();
++                        }
+                         Set<String> keys = props.stringPropertyNames();
+                         Pattern propertiesPattern =
+                             Pattern.compile("([A-Z]{3})\\s*,\\s*(\\d{3})\\s*,\\s*([0-3])");
+diff -r 1631a3dee8fc src/share/classes/java/util/jar/JarFile.java
+--- openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -376,9 +376,15 @@
+      */
+     private byte[] getBytes(ZipEntry ze) throws IOException {
+         byte[] b = new byte[(int)ze.getSize()];
+-        try (DataInputStream is = new DataInputStream(super.getInputStream(ze))) {
++        DataInputStream is = null;
++        try {
++            is = new DataInputStream(super.getInputStream(ze));
+             is.readFully(b, 0, b.length);
+         }
++        finally {
++            if (is != null)
++                is.close();
++        }
+         return b;
+     }
+ 
+@@ -480,11 +486,15 @@
+             JarEntry manEntry = getManEntry();
+             if (manEntry != null) {
+                 byte[] b = new byte[(int)manEntry.getSize()];
+-                try (DataInputStream dis = new DataInputStream(
+-                         super.getInputStream(manEntry))) {
++                DataInputStream dis = null;
++                try {
++                    dis = new DataInputStream(super.getInputStream(manEntry));
+                     dis.readFully(b, 0, b.length);
+                 }
+-
++                finally {
++                    if (dis != null)
++                        dis.close();
++                }
+                 int last = b.length - src.length;
+                 int i = 0;
+                 next:
+diff -r 1631a3dee8fc src/share/classes/javax/sql/rowset/serial/SerialClob.java
+--- openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -144,8 +144,9 @@
+         buf = new char[(int)len];
+         int read = 0;
+         int offset = 0;
+-
+-        try (Reader charStream = clob.getCharacterStream()) {
++        Reader charStream = null;
++        try {
++            charStream = clob.getCharacterStream();
+             if (charStream == null) {
+                 throw new SQLException("Invalid Clob object. The call to getCharacterStream " +
+                     "returned null which cannot be serialized.");
+@@ -153,23 +154,41 @@
+ 
+             // Note: get an ASCII stream in order to null-check it,
+             // even though we don't do anything with it.
+-            try (InputStream asciiStream = clob.getAsciiStream()) {
++            InputStream asciiStream = null;
++            try {
++                asciiStream = clob.getAsciiStream();
+                 if (asciiStream == null) {
+                     throw new SQLException("Invalid Clob object. The call to getAsciiStream " +
+                         "returned null which cannot be serialized.");
+                 }
+             }
+-
+-            try (Reader reader = new BufferedReader(charStream)) {
++            finally {
++                if (asciiStream != null)
++                    asciiStream.close();
++            }
++            Reader reader = null;
++            try {
++                reader = new BufferedReader(charStream);
+                 do {
+                     read = reader.read(buf, offset, (int)(len - offset));
+                     offset += read;
+                 } while (read > 0);
+             }
++            finally {
++                if (reader != null)
++                    reader.close();
++            }
+         } catch (java.io.IOException ex) {
+             throw new SerialException("SerialClob: " + ex.getMessage());
+         }
+-
++        finally {
++            try {
++                if (charStream != null)
++                    charStream.close();
++            } catch (java.io.IOException ex) {
++                throw new SerialException("SerialClob: " + ex.getMessage());
++            }
++        }
+         origLen = len;
+     }
+ 
+diff -r 1631a3dee8fc src/share/classes/javax/sql/rowset/spi/SyncFactory.java
+--- openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -367,9 +367,15 @@
+                     // Load user's implementation of SyncProvider
+                     // here. -Drowset.properties=/abc/def/pqr.txt
+                     ROWSET_PROPERTIES = strRowsetProperties;
+-                    try (FileInputStream fis = new FileInputStream(ROWSET_PROPERTIES)) {
++                    FileInputStream fis = null;
++                    try {
++                        fis = new FileInputStream(ROWSET_PROPERTIES);
+                         properties.load(fis);
+                     }
++                    finally {
++                        if (fis != null)
++                            fis.close();
++                    }
+                     parseProperties(properties);
+                 }
+ 
+@@ -381,15 +387,19 @@
+                         "rowset.properties";
+ 
+                 ClassLoader cl = Thread.currentThread().getContextClassLoader();
+-
+-                try (InputStream stream =
+-                         (cl == null) ? ClassLoader.getSystemResourceAsStream(ROWSET_PROPERTIES)
+-                                      : cl.getResourceAsStream(ROWSET_PROPERTIES)) {
++                InputStream stream = null;
++                try {
++                    stream =
++                        (cl == null) ? ClassLoader.getSystemResourceAsStream(ROWSET_PROPERTIES)
++                        : cl.getResourceAsStream(ROWSET_PROPERTIES);
+                     if (stream == null) {
+                         throw new SyncFactoryException(
+                             "Resource " + ROWSET_PROPERTIES + " not found");
+                     }
+                     properties.load(stream);
++                } finally {
++                    if (stream != null)
++                        stream.close();
+                 }
+ 
+                 parseProperties(properties);
+diff -r 1631a3dee8fc src/share/classes/sun/net/www/protocol/jar/URLJarFile.java
+--- openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -194,7 +194,8 @@
+      * Given a URL, retrieves a JAR file, caches it to disk, and creates a
+      * cached JAR file object.
+      */
+-     private static JarFile retrieve(final URL url, final URLJarFileCloseController closeController) throws IOException {
++     private static JarFile retrieve(final URL url, final URLJarFileCloseController closeController)
++         throws IOException {
+         /*
+          * See if interface is set, then call retrieve function of the class
+          * that implements URLJarFileCallBack interface (sun.plugin - to
+@@ -211,7 +212,8 @@
+             JarFile result = null;
+ 
+             /* get the stream before asserting privileges */
+-            try (final InputStream in = url.openConnection().getInputStream()) {
++            try {
++                final InputStream in = url.openConnection().getInputStream();
+                 result = AccessController.doPrivileged(
+                     new PrivilegedExceptionAction<JarFile>() {
+                         public JarFile run() throws IOException {
+@@ -227,7 +229,10 @@
+                                 } catch (IOException ioe) {
+                                     thr.addSuppressed(ioe);
+                                 }
+-                                throw thr;
++                                throw (IOException) thr;
++                            } finally {
++                                if (in != null)
++                                    in.close();
+                             }
+                         }
+                     });
+diff -r 1631a3dee8fc src/share/classes/sun/nio/fs/PollingWatchService.java
+--- openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -255,7 +255,9 @@
+             this.entries = new HashMap<Path,CacheEntry>();
+ 
+             // get the initial entries in the directory
+-            try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
++            DirectoryStream<Path> stream = null;
++            try {
++                stream = Files.newDirectoryStream(dir);
+                 for (Path entry: stream) {
+                     // don't follow links
+                     long lastModified =
+@@ -264,6 +266,10 @@
+                 }
+             } catch (DirectoryIteratorException e) {
+                 throw e.getCause();
++            } finally {
++                if (stream != null) {
++                    stream.close();
++                }
+             }
+         }
+ 
+diff -r 1631a3dee8fc src/share/classes/sun/security/provider/SeedGenerator.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -179,7 +179,9 @@
+                         // The temporary dir
+                         File f = new File(p.getProperty("java.io.tmpdir"));
+                         int count = 0;
+-                        try (DirectoryStream<Path> stream = Files.newDirectoryStream(f.toPath())) {
++                        DirectoryStream<Path> stream = null;
++                        try {
++                            stream = Files.newDirectoryStream(f.toPath());
+                             // We use a Random object to choose what file names
+                             // should be used. Otherwise on a machine with too
+                             // many files, the same first 1024 files always get
+@@ -194,6 +196,10 @@
+                                     break;
+                                 }
+                             }
++                        } finally {
++                            if (stream != null) {
++                                stream.close();
++                            }
+                         }
+                     } catch (Exception ex) {
+                         md.update((byte)ex.hashCode());
+diff -r 1631a3dee8fc src/share/classes/sun/util/calendar/LocalGregorianCalendar.java
+--- openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -127,9 +127,15 @@
+             calendarProps = (Properties) AccessController.doPrivileged(new PrivilegedExceptionAction() {
+                 public Object run() throws IOException {
+                     Properties props = new Properties();
+-                    try (FileInputStream fis = new FileInputStream(fname)) {
++                    FileInputStream fis = null;
++                    try {
++                        fis = new FileInputStream(fname);
+                         props.load(fis);
+                     }
++                    finally {
++                        if (fis != null)
++                            fis.close();
++                    }
+                     return props;
+                 }
+             });
+diff -r 1631a3dee8fc src/share/demo/jfc/Font2DTest/RangeMenu.java
+--- openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -191,7 +191,7 @@
+     }
+ 
+     private static int[][] getUnicodeRanges() {
+-        List<Integer> ranges = new ArrayList<>();
++        List<Integer> ranges = new ArrayList<Integer>();
+         ranges.add(0);
+         Character.UnicodeBlock currentBlock = Character.UnicodeBlock.of(0);
+         for (int cp = 0x000001; cp < 0x110000; cp++ ) {
+diff -r 1631a3dee8fc src/solaris/classes/java/util/prefs/FileSystemPreferences.java
+--- openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -569,11 +569,11 @@
+                 public Void run() throws BackingStoreException {
+                     Map<String, String> m = new TreeMap<>();
+                     long newLastSyncTime = 0;
++                    FileInputStream fis = null;
+                     try {
+                         newLastSyncTime = prefsFile.lastModified();
+-                        try (FileInputStream fis = new FileInputStream(prefsFile)) {
+-                            XmlSupport.importMap(fis, m);
+-                        }
++                        fis = new FileInputStream(prefsFile);
++                        XmlSupport.importMap(fis, m);
+                     } catch(Exception e) {
+                         if (e instanceof InvalidPreferencesFormatException) {
+                             getLogger().warning("Invalid preferences format in "
+@@ -588,6 +588,13 @@
+                         } else {
+                             throw new BackingStoreException(e);
+                         }
++                    } finally {
++                        try {
++                            if (fis != null)
++                                fis.close();
++                        } catch (IOException e) {
++                            throw new BackingStoreException(e);
++                        }
+                     }
+                     // Attempt succeeded; update state
+                     prefsCache = m;
+@@ -614,13 +621,14 @@
+             AccessController.doPrivileged(
+                 new PrivilegedExceptionAction<Void>() {
+                 public Void run() throws BackingStoreException {
++                    FileOutputStream fos = null;
+                     try {
+                         if (!dir.exists() && !dir.mkdirs())
+                             throw new BackingStoreException(dir +
+                                                              " create failed.");
+-                        try (FileOutputStream fos = new FileOutputStream(tmpFile)) {
+-                            XmlSupport.exportMap(fos, prefsCache);
+-                        }
++
++                        fos = new FileOutputStream(tmpFile);
++                        XmlSupport.exportMap(fos, prefsCache);
+                         if (!tmpFile.renameTo(prefsFile))
+                             throw new BackingStoreException("Can't rename " +
+                             tmpFile + " to " + prefsFile);
+@@ -629,6 +637,14 @@
+                             throw (BackingStoreException)e;
+                         throw new BackingStoreException(e);
+                     }
++                    finally {
++                        try {
++                            if (fos != null)
++                                fos.close();
++                        } catch (IOException e) {
++                            throw new BackingStoreException(e);
++                        }
++                    }
+                     return null;
+                 }
+             });
+diff -r 1631a3dee8fc src/solaris/classes/sun/nio/fs/UnixFileStore.java
+--- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	Wed Apr 20 04:38:36 2011 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	Fri Apr 29 01:50:44 2011 +0100
+@@ -255,9 +255,16 @@
+         String fstypes = System.getProperty("java.home") + "/lib/fstypes.properties";
+         Path file = Paths.get(fstypes);
+         try {
+-            try (ReadableByteChannel rbc = Files.newByteChannel(file)) {
++            ReadableByteChannel rbc = null;
++            try {
++                rbc = Files.newByteChannel(file);
+                 result.load(Channels.newReader(rbc, "UTF-8"));
+             }
++            finally {
++                if (rbc != null) {
++                    rbc.close();
++                }
++            }
+         } catch (IOException x) {
+         }
+         return result;
+diff -r d28f54a421b1 src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	Mon Jun 13 15:58:42 2011 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	Tue Jun 21 14:46:11 2011 +0100
+@@ -92,9 +92,13 @@
+         tabName = filename;
+         try {
+             lastModified = new File(tabName).lastModified();
+-            try (KeyTabInputStream kis =
+-                    new KeyTabInputStream(new FileInputStream(filename))) {
++            KeyTabInputStream kis = null;
++            try {
++                kis = new KeyTabInputStream(new FileInputStream(filename));
+                 load(kis);
++            } finally {
++                if (kis != null)
++                    kis.close();
+             }
+         } catch (FileNotFoundException e) {
+             entries.clear();
+@@ -439,9 +443,13 @@
+     public synchronized static KeyTab create(String name)
+         throws IOException, RealmException {
+ 
+-        try (KeyTabOutputStream kos =
+-                new KeyTabOutputStream(new FileOutputStream(name))) {
++        KeyTabOutputStream kos = null;
++        try {
++            kos = new KeyTabOutputStream(new FileOutputStream(name));
+             kos.writeVersion(KRB5_KT_VNO);
++        } finally {
++            if (kos != null)
++                kos.close();
+         }
+         return new KeyTab(name);
+     }
+@@ -450,12 +458,16 @@
+      * Saves the file at the directory.
+      */
+     public synchronized void save() throws IOException {
+-        try (KeyTabOutputStream kos =
+-                new KeyTabOutputStream(new FileOutputStream(tabName))) {
++        KeyTabOutputStream kos = null;
++        try {
++            kos = new KeyTabOutputStream(new FileOutputStream(tabName));
+             kos.writeVersion(kt_vno);
+             for (int i = 0; i < entries.size(); i++) {
+                 kos.writeEntry(entries.elementAt(i));
+             }
++        } finally {
++            if (kos != null)
++                kos.close();
+         }
+     }
+ 
+@@ -519,9 +531,13 @@
+      * @exception IOException.
+      */
+     public synchronized void createVersion(File file) throws IOException {
+-        try (KeyTabOutputStream kos =
+-                new KeyTabOutputStream(new FileOutputStream(file))) {
++        KeyTabOutputStream kos = null;
++        try {
++            kos = new KeyTabOutputStream(new FileOutputStream(file));
+             kos.write16(KRB5_KT_VNO);
++        } finally {
++            if (kos != null)
++                kos.close();
+         }
+     }
+ }
diff --git a/bootstrap-fontconfig.patch b/bootstrap-fontconfig.patch
new file mode 100644
index 0000000..95cb81f
--- /dev/null
+++ b/bootstrap-fontconfig.patch
@@ -0,0 +1,16 @@
+diff -Nru openjdk-boot.orig/jdk/make/sun/awt/Makefile openjdk-boot/jdk/make/sun/awt/Makefile
+--- openjdk-boot.orig/jdk/make/sun/awt/Makefile	2011-04-20 04:40:21.000000000 +0100
++++ openjdk-boot/jdk/make/sun/awt/Makefile	2011-04-21 23:16:13.427471369 +0100
+@@ -400,10 +400,9 @@
+ 
+ COMPILEFONTCONFIG_JARFILE = $(BUILDTOOLJARDIR)/compilefontconfig.jar
+ 
+-$(LIBDIR)/%.bfc: $(FONTCONFIGS_SRC)/$(FONTCONFIGS_SRC_PREFIX)%.properties \
+-    $(COMPILEFONTCONFIG_JARFILE)
++$(LIBDIR)/%.bfc: $(GENSRCDIR)/fontconfig/%.bfc
+ 	$(prep-target)
+-	$(BOOT_JAVA_CMD) -jar $(COMPILEFONTCONFIG_JARFILE) $(COMPILEFONTCONFIG_FLAGS) $< $@
++	$(install-file)
+ 	$(call chmod-file, 444)
+ 	@$(java-vm-cleanup)
+ 
diff --git a/bootstrap-generated-comments.patch b/bootstrap-generated-comments.patch
new file mode 100644
index 0000000..c728a3c
--- /dev/null
+++ b/bootstrap-generated-comments.patch
@@ -0,0 +1,21 @@
+diff -up ./openjdk-boot/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java.sav ./openjdk-boot/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java
+--- ./openjdk-boot/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java.sav	2011-07-07 14:54:22.914782453 -0400
++++ ./openjdk-boot/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java	2011-07-07 14:54:27.466695108 -0400
+@@ -691,9 +691,6 @@ OUTER:  for (int i = 0; i < n; i += m) {
+         throws FileNotFoundException, IOException {
+         BufferedReader in = new BufferedReader(new FileReader(theTemplateFileName));
+         PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(theOutputFileName)));
+-        out.println(commentStart +
+-            " This file was generated AUTOMATICALLY from a template file " +
+-            new java.util.Date() + commentEnd);
+         int marklen = commandMarker.length();
+         LOOP: while(true) {
+             try {
+@@ -927,7 +924,6 @@ OUTER:  for (int i = 0; i < n; i += m) {
+         // liu : Add a comment showing the source of this table
+         result.append(commentStart + " The following tables and code generated using:" +
+                   commentEnd + "\n  ");
+-        result.append(commentStart + ' ' + commandLineDescription + commentEnd + "\n  ");
+ 
+                 if (plane == 0 && bLatin1 == false) {
+             genCaseMapTableDeclaration(result);
diff --git a/bootstrap-genstubs-nofork.patch b/bootstrap-genstubs-nofork.patch
new file mode 100644
index 0000000..c1a823b
--- /dev/null
+++ b/bootstrap-genstubs-nofork.patch
@@ -0,0 +1,12 @@
+diff -Nru openjdk.orig/langtools/make/build.xml openjdk/langtools/make/build.xml
+--- openjdk-boot.orig/langtools/make/build.xml	2010-11-12 01:18:44.000000000 +0000
++++ openjdk-boot/langtools/make/build.xml	2010-11-22 17:50:52.747031959 +0000
+@@ -622,7 +622,7 @@
+         <genstubs
+             srcdir="${import.jdk.src.dir}" destdir="${build.genstubs.dir}"
+             includes="${import.jdk.stub.files}"
+-            fork="true" classpath="${build.toolclasses.dir}:${build.bootstrap.dir}/classes:${ant.core.lib}"
++            fork="false" classpath="${build.toolclasses.dir}:${build.bootstrap.dir}/classes:${ant.core.lib}"
+         />
+     </target>
+ 
diff --git a/bootstrap-hotspot-jdk-dependency.patch b/bootstrap-hotspot-jdk-dependency.patch
new file mode 100644
index 0000000..6fd2ed7
--- /dev/null
+++ b/bootstrap-hotspot-jdk-dependency.patch
@@ -0,0 +1,25 @@
+diff -Nru openjdk-boot.orig/hotspot/make/linux/makefiles/sa.make openjdk-boot/hotspot/make/linux/makefiles/sa.make
+--- openjdk-boot.orig/hotspot/make/linux/makefiles/sa.make	2011-03-14 17:45:38.000000000 +0000
++++ openjdk-boot/hotspot/make/linux/makefiles/sa.make	2011-03-14 19:28:26.633153480 +0000
+@@ -97,8 +97,8 @@
+ 	$(foreach file,$(AGENT_FILES1),$(shell echo $(file) >> $(AGENT_FILES1_LIST)))
+ 	$(foreach file,$(AGENT_FILES2),$(shell echo $(file) >> $(AGENT_FILES2_LIST)))
+ 	
+-	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
+-	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
++	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR):$(JDK_TOPDIR)/src/share/classes:$(JDK_TOPDIR)/src/solaris/classes:$(GENSRCDIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
++	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR):$(JDK_TOPDIR)/src/share/classes:$(JDK_TOPDIR)/src/solaris/classes:$(GENSRCDIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
+ 	
+ 	$(QUIETLY) $(REMOTE) $(COMPILE.RMIC)  -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
+ 	$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
+diff -Nru openjdk-boot.orig/make/hotspot-rules.gmk openjdk-boot/make/hotspot-rules.gmk
+--- openjdk-boot.orig/make/hotspot-rules.gmk	2011-03-14 19:26:01.289492705 +0000
++++ openjdk-boot/make/hotspot-rules.gmk	2011-03-14 19:26:34.640496978 +0000
+@@ -83,6 +83,7 @@
+ HOTSPOT_BUILD_ARGUMENTS += $(COMMON_BUILD_ARGUMENTS)
+ HOTSPOT_BUILD_ARGUMENTS += ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR)
+ HOTSPOT_BUILD_ARGUMENTS += ALT_EXPORT_PATH=$(HOTSPOT_EXPORT_PATH)
++HOTSPOT_BUILD_ARGUMENTS += GENSRCDIR=$(GENSRCDIR)
+ 
+ # Why do these need to be passed in? Because of windows nmake? and MAKEFLAGS=?
+ #   Or is there something wrong with hotspot/make/Makefile?
diff --git a/bootstrap-icedteart.patch b/bootstrap-icedteart.patch
new file mode 100644
index 0000000..f3452c7
--- /dev/null
+++ b/bootstrap-icedteart.patch
@@ -0,0 +1,41 @@
+diff -Nru openjdk-boot.orig/jdk/make/common/BuildToolJar.gmk openjdk-boot/jdk/make/common/BuildToolJar.gmk
+--- openjdk-boot.orig/jdk/make/common/BuildToolJar.gmk	2009-12-04 23:26:17.000000000 +0000
++++ openjdk-boot/jdk/make/common/BuildToolJar.gmk	2009-12-13 20:16:48.000000000 +0000
+@@ -43,7 +43,8 @@
+ 	@$(prep-target)
+ 	@$(MKDIR) -p $(BUILDTOOLCLASSDIR)
+ 	$(BOOT_JAVAC_CMD) -d $(BUILDTOOLCLASSDIR) \
+-	    -sourcepath $(BUILDTOOL_SOURCE_ROOT) $(BUILDTOOL_MAIN_SOURCE_FILE)
++	    -sourcepath $(BUILDTOOL_SOURCE_ROOT) -classpath $(ICEDTEA_RT) \
++	    $(BUILDTOOL_MAIN_SOURCE_FILE)
+ 	$(BOOT_JAR_CMD) cfm $@ $(BUILDTOOL_MANIFEST_FILE) \
+ 	    -C $(BUILDTOOLCLASSDIR) $(PKGDIR) \
+ 	    $(BOOT_JAR_JFLAGS) || $(RM) $@
+diff -Nru openjdk-boot.orig/jdk/make/common/Rules.gmk openjdk-boot/jdk/make/common/Rules.gmk
+--- openjdk-boot.orig/jdk/make/common/Rules.gmk	2009-12-04 23:26:17.000000000 +0000
++++ openjdk-boot/jdk/make/common/Rules.gmk	2009-12-13 20:16:48.000000000 +0000
+@@ -237,8 +237,9 @@
+ 	  $(ECHO) "# Java sources to be compiled: (listed in file $<)"; \
+ 	  $(CAT) $<.filtered; \
+ 	  $(ECHO) "# Running javac:"; \
+-	  $(ECHO) $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$<.filtered; \
+-	  $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$<.filtered; \
++	  $(ECHO) $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -bootclasspath "$(CLASSDESTDIR):$(ICEDTEA_RT)" \
++          -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
++          $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -bootclasspath "$(CLASSDESTDIR):$(ICEDTEA_RT)" -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
+ 	fi
+ 	@$(java-vm-cleanup)
+ 
+diff -Nru openjdk-boot.orig/jdk/make/sun/javazic/Makefile openjdk-boot/jdk/make/sun/javazic/Makefile
+--- openjdk-boot.orig/jdk/make/sun/javazic/Makefile	2009-12-04 23:26:37.000000000 +0000
++++ openjdk-boot/jdk/make/sun/javazic/Makefile	2009-12-13 20:16:48.000000000 +0000
+@@ -62,7 +62,8 @@
+ $(WORKDIR)/$(MAPFILE): $(BUILDTOOLJARDIR)/javazic.jar $(TZFILES)
+ 	$(RM) -r $(@D)
+ 	$(prep-target)
+-	$(BOOT_JAVA_CMD) -jar $(BUILDTOOLJARDIR)/javazic.jar -V "$(TZDATA_VER)" -d $(WORKDIR) $(TZFILES)
++	$(BOOT_JAVA_CMD) -cp $(ABS_OUTPUTDIR)/classes:$(BUILDTOOLJARDIR)/javazic.jar \
++		build.tools.javazic.Main -V "$(TZDATA_VER)" -d $(WORKDIR) $(TZFILES)
+ 	@$(java-vm-cleanup)
+ 
+ $(INSTALLDIR)/$(MAPFILE): $(WORKDIR)/$(MAPFILE)
diff --git a/bootstrap-jar.patch b/bootstrap-jar.patch
new file mode 100644
index 0000000..7910375
--- /dev/null
+++ b/bootstrap-jar.patch
@@ -0,0 +1,43 @@
+diff -Nru openjdk-boot.orig/jdk/make/common/Release.gmk openjdk-boot/jdk/make/common/Release.gmk
+--- openjdk-boot.orig/jdk/make/common/Release.gmk	2011-06-13 16:08:46.000000000 +0100
++++ openjdk-boot/jdk/make/common/Release.gmk	2011-06-13 17:06:49.515488800 +0100
+@@ -627,9 +627,19 @@
+ RESOURCES_JAR=$(ABS_TEMPDIR)/resources-orig.jar
+ $(RESOURCES_JAR): $(RES_JAR_FILELIST) $(OTHER_JAR_MANIFEST_FILE)
+ 	$(prep-target)
++ifneq (,$(JAR_KNOWS_ATFILE))
+ 	$(CD) $(CLASSBINDIR) && \
+ 	    $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(OTHER_JAR_MANIFEST_FILE) $@ \
+ 	        @$(RES_JAR_FILELIST) $(BOOT_JAR_JFLAGS)
++else ifneq (,$(JAR_ACCEPTS_STDIN_LIST))
++	(cd $(CLASSBINDIR) && $(CAT) $(RES_JAR_FILELIST) | \
++	$(BOOT_JAR_CMD) $(CREATE_JAR_OPTS)@ $(OTHER_JAR_MANIFEST_FILE) $@ \
++	    $(BOOT_JAR_JFLAGS))
++else
++	(cd $(CLASSBINDIR) && \
++	$(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(OTHER_JAR_MANIFEST_FILE) $@ \
++	    $(BOOT_JAR_JFLAGS) `cat $(RES_JAR_FILELIST)`)
++endif
+ 	@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
+ 
+ # Create jsse.jar containing SunJSSE implementation classes
+@@ -683,9 +693,19 @@
+ RT_JAR=$(ABS_TEMPDIR)/rt-orig.jar
+ $(RT_JAR): $(RT_JAR_FILELIST) $(RT_JAR_MANIFEST_FILE)
+ 	$(prep-target)
++ifneq (,$(JAR_KNOWS_ATFILE))
+ 	$(CD) $(CLASSBINDIR) && \
+ 	    $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(RT_JAR_MANIFEST_FILE) $@ \
+ 	        @$(RT_JAR_FILELIST) $(BOOT_JAR_JFLAGS)
++else ifneq (,$(JAR_ACCEPTS_STDIN_LIST))
++	$(CD) $(CLASSBINDIR) && $(CAT) $(RT_JAR_FILELIST) | \
++	    $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS)@ $(RT_JAR_MANIFEST_FILE) $@ \
++	        $(BOOT_JAR_JFLAGS)
++else
++	$(CD) $(CLASSBINDIR) && \
++	    $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(RT_JAR_MANIFEST_FILE) $@ \
++	        $(BOOT_JAR_JFLAGS) `cat $(RT_JAR_FILELIST)`
++endif
+ 	@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
+ 
+ # Meta-index construction to make core class loaders lazier
diff --git a/bootstrap-javah-xbootclasspath.patch b/bootstrap-javah-xbootclasspath.patch
new file mode 100644
index 0000000..cf032fb
--- /dev/null
+++ b/bootstrap-javah-xbootclasspath.patch
@@ -0,0 +1,12 @@
+diff -up ./openjdk-boot/jdk/make/sun/security/pkcs11/Makefile.sav ./openjdk-boot/jdk/make/sun/security/pkcs11/Makefile
+--- ./openjdk-boot/jdk/make/sun/security/pkcs11/Makefile.sav	2011-07-06 15:46:38.437692753 -0400
++++ ./openjdk-boot/jdk/make/sun/security/pkcs11/Makefile	2011-07-06 15:46:57.772418577 -0400
+@@ -147,7 +147,7 @@ OTHER_INCLUDES += \
+ # Rules
+ #
+ CLASSDESTDIR = $(TEMPDIR)/classes
+-JAVAHFLAGS += -Xbootclasspath/p:$(CLASSDESTDIR)
++JAVAHFLAGS += -classpath $(CLASSDESTDIR)
+ 
+ include $(BUILDDIR)/common/Mapfile-vers.gmk
+ 
diff --git a/bootstrap-javah.patch b/bootstrap-javah.patch
new file mode 100644
index 0000000..a3e194b
--- /dev/null
+++ b/bootstrap-javah.patch
@@ -0,0 +1,92 @@
+diff -Nru openjdk-boot.orig/jdk/make/common/Rules.gmk openjdk-boot/jdk/make/common/Rules.gmk
+--- openjdk-boot.orig/jdk/make/common/Rules.gmk	2009-12-13 20:37:41.000000000 +0000
++++ openjdk-boot/jdk/make/common/Rules.gmk	2009-12-13 21:11:04.000000000 +0000
+@@ -303,7 +303,11 @@
+ 	$(prep-target)
+ 	@$(ECHO) "# Running javah:"
+ 	$(JAVAH_CMD) -d $(CLASSHDRDIR)/ \
+-		$(CLASSES.export) $(subst $$,\$$,$(EXPORTED_inner))
++		$(CLASSES.export) 
++	$(foreach innerclass,$(subst $$,\$$,$(EXPORTED_inner)), \
++	  $(JAVAH_CMD) \
++	    -o $(CLASSHDRDIR)/$(subst .,_,$(subst \$$,_,$(innerclass))).h \
++	    $(innerclass))
+ 	@$(java-vm-cleanup)
+ 	@$(TOUCH) $@
+ 
+diff -Nru openjdk-boot.orig/jdk/make/sun/awt/FILES_export_unix.gmk openjdk-boot/jdk/make/sun/awt/FILES_export_unix.gmk
+--- openjdk-boot.orig/jdk/make/sun/awt/FILES_export_unix.gmk	2009-12-04 23:26:35.000000000 +0000
++++ openjdk-boot/jdk/make/sun/awt/FILES_export_unix.gmk	2009-12-13 21:11:04.000000000 +0000
+@@ -189,3 +189,5 @@
+ 	java/awt/dnd/DnDConstants.java \
+ 	sun/awt/CausedFocusEvent.java
+ 
++EXPORTED_inner = \
++    sun.java2d.opengl.OGLContext$$OGLContextCaps
+diff -Nru openjdk-boot.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h openjdk-boot/jdk/src/share/native/sun/java2d/opengl/OGLContext.h
+--- openjdk-boot.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h	2009-12-04 23:33:16.000000000 +0000
++++ openjdk-boot/jdk/src/share/native/sun/java2d/opengl/OGLContext.h	2009-12-13 21:11:04.000000000 +0000
+@@ -27,6 +27,7 @@
+ #define OGLContext_h_Included
+ 
+ #include "sun_java2d_pipe_BufferedContext.h"
++#include "sun_java2d_pipe_hw_ContextCapabilities.h"
+ #include "sun_java2d_opengl_OGLContext.h"
+ #include "sun_java2d_opengl_OGLContext_OGLContextCaps.h"
+ 
+@@ -100,39 +101,39 @@
+  * See OGLContext.java for more on these flags.
+  */
+ #define CAPS_EMPTY           \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EMPTY
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_EMPTY
+ #define CAPS_RT_PLAIN_ALPHA  \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_PLAIN_ALPHA
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_PLAIN_ALPHA
+ #define CAPS_RT_TEXTURE_ALPHA       \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_TEXTURE_ALPHA
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_TEXTURE_ALPHA
+ #define CAPS_RT_TEXTURE_OPAQUE      \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_TEXTURE_OPAQUE
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_TEXTURE_OPAQUE
+ #define CAPS_MULTITEXTURE    \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_MULTITEXTURE
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_MULTITEXTURE
+ #define CAPS_TEXNONPOW2      \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_TEXNONPOW2
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_TEXNONPOW2
+ #define CAPS_TEXNONSQUARE    \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_TEXNONSQUARE
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_TEXNONSQUARE
+ #define CAPS_PS20            \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_PS20
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_PS20
+ #define CAPS_PS30            \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_PS30
++    sun_java2d_pipe_hw_ContextCapabilities_CAPS_PS30
+ #define LAST_SHARED_CAP      \
+     sun_java2d_opengl_OGLContext_OGLContextCaps_LAST_SHARED_CAP
+ #define CAPS_EXT_FBOBJECT    \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_FBOBJECT
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_FBOBJECT
+ #define CAPS_STORED_ALPHA    \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_STORED_ALPHA
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_STORED_ALPHA
+ #define CAPS_DOUBLEBUFFERED  \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_DOUBLEBUFFERED
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_DOUBLEBUFFERED
+ #define CAPS_EXT_LCD_SHADER  \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_LCD_SHADER
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_LCD_SHADER
+ #define CAPS_EXT_BIOP_SHADER \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_BIOP_SHADER
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_BIOP_SHADER
+ #define CAPS_EXT_GRAD_SHADER \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_GRAD_SHADER
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_GRAD_SHADER
+ #define CAPS_EXT_TEXRECT     \
+-    sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_TEXRECT
++    sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_TEXRECT
+ 
+ /**
+  * Evaluates to true if the given capability bitmask is present for the
diff --git a/bootstrap-jaxp-dependency.patch b/bootstrap-jaxp-dependency.patch
new file mode 100644
index 0000000..aa60814
--- /dev/null
+++ b/bootstrap-jaxp-dependency.patch
@@ -0,0 +1,25 @@
+diff -Nru openjdk-boot.orig/jaxws/build.properties openjdk-boot/jaxws/build.properties
+--- openjdk-boot.orig/jaxws/build.properties	2010-07-29 21:54:11.000000000 +0100
++++ openjdk-boot/jaxws/build.properties	2010-09-01 21:25:29.587888259 +0100
+@@ -62,6 +62,9 @@
+ build.dir=${output.dir}/build
+ build.classes.dir=${build.dir}/classes
+ 
++# JAXP built files
++jaxp.classes.dir=${output.dir}/../jaxp/build/classes
++
+ # Distributed results
+ dist.dir=${output.dir}/dist
+ dist.lib.dir=${dist.dir}/lib
+diff -Nru openjdk-boot.orig/jaxws/build.xml openjdk-boot/jaxws/build.xml
+--- openjdk-boot.orig/jaxws/build.xml	2010-09-01 21:00:02.000000000 +0100
++++ openjdk-boot/jaxws/build.xml	2010-09-01 21:25:29.595887577 +0100
+@@ -124,7 +124,7 @@
+         <mkdir dir="${build.classes.dir}"/>
+         <javac 
+ 	     includeAntRuntime="false" 
+-	     classpath="${build.classes.dir}:${tools.jar}"
++	     classpath="${jaxp.classes.dir}:${build.classes.dir}:${tools.jar}"
+ 	     fork="true"
+              destdir="${build.classes.dir}"
+              memoryInitialSize="${javac.memoryInitialSize}"
diff --git a/bootstrap-jaxws-jdk-dependency.patch b/bootstrap-jaxws-jdk-dependency.patch
new file mode 100644
index 0000000..aca4e78
--- /dev/null
+++ b/bootstrap-jaxws-jdk-dependency.patch
@@ -0,0 +1,43 @@
+--- openjdk-boot.orig/jaxws/build.properties	2011-03-08 18:40:33.955159212 +0000
++++ openjdk-boot/jaxws/build.properties	2011-03-08 20:19:51.000000000 +0000
+@@ -66,6 +66,9 @@
+ # JAXP built files
+ jaxp.classes.dir=${output.dir}/../jaxp/build/classes
+ 
++# JDK sources
++jdk.sources=${jdk.topdir}/src/share/classes
++
+ # Distributed results
+ dist.dir=${output.dir}/dist
+ dist.lib.dir=${dist.dir}/lib
+@@ -110,6 +113,7 @@
+   dist.dir=${dist.dir}${line.separator}\
+   drop.dir=${drop.dir}${line.separator}\
+   drops.dir=${drops.dir}${line.separator}\
++  jdk.topdir=${jdk.topdir}${line.separator}\
+ ${line.separator}
+ 
+ # Failure messages when source cannot be found on the file system
+--- openjdk-boot.orig/jaxws/build.xml	2011-03-08 18:40:29.639288336 +0000
++++ openjdk-boot/jaxws/build.xml	2011-03-08 20:22:31.000000000 +0000
+@@ -125,6 +125,7 @@
+         <javac 
+ 	     includeAntRuntime="false" 
+ 	     classpath="${jaxp.classes.dir}:${build.classes.dir}:${langtools.jar}"
++	     sourcepath="${jdk.sources}"
+ 	     fork="true"
+              destdir="${build.classes.dir}"
+              memoryInitialSize="${javac.memoryInitialSize}"
+--- openjdk-boot.orig/jaxws/make/Makefile	2011-03-08 18:40:14.167751211 +0000
++++ openjdk-boot/jaxws/make/Makefile	2011-03-08 20:18:23.000000000 +0000
+@@ -140,6 +140,10 @@
+   endif
+ endif
+ 
++ifdef JDK_TOPDIR
++  ANT_OPTIONS += -Djdk.topdir=$(JDK_TOPDIR)
++endif
++
+ # Default target and expected 'do everything' target
+ default: all
+ 
diff --git a/bootstrap-jaxws-langtools-dependency.patch b/bootstrap-jaxws-langtools-dependency.patch
new file mode 100644
index 0000000..9c0f03a
--- /dev/null
+++ b/bootstrap-jaxws-langtools-dependency.patch
@@ -0,0 +1,48 @@
+diff -Nru openjdk-boot.orig/jaxws/build.properties openjdk-boot/jaxws/build.properties
+--- openjdk-boot.orig/jaxws/build.properties	2011-03-08 18:42:23.703875234 +0000
++++ openjdk-boot/jaxws/build.properties	2011-03-08 18:40:33.955159212 +0000
+@@ -32,7 +32,8 @@
+ # other tools, and product versions of all the tools.
+ # Override this path as needed, either on the command line or in 
+ # one of the standard user build.properties files (see build.xml)
+-javac.jar=${bootstrap.dir}/lib/javac.jar
++javac.jar=${langtools.dist}/bootstrap/lib/javac.jar
++langtools.jar=${langtools.dist}/lib/classes.jar
+ 
+ # The tools.jar is needed in the classpath to compile these sources
+ jdk.home=${java.home}/..
+@@ -93,8 +94,9 @@
+   os.name=${os.name}${line.separator}\
+   os.arch=${os.arch}${line.separator}\
+   os.version=${os.version}${line.separator}\
+-  bootstrap.dir=${bootstrap.dir}${line.separator}\
++  bootstrap.dir=${langtools.dist}/bootstrap${line.separator}\
+   javac.jar=${javac.jar}${line.separator}\
++  langtools.jar=${langtools.jar}${line.separator}\
+   javac.memoryInitialSize=${javac.memoryInitialSize}${line.separator}\
+   javac.memoryMaximumSize=${javac.memoryMaximumSize}${line.separator}\
+   javac.source=${javac.source}${line.separator}\
+diff -Nru openjdk-boot.orig/jaxws/build.xml openjdk-boot/jaxws/build.xml
+--- openjdk-boot.orig/jaxws/build.xml	2011-03-08 18:43:11.778436442 +0000
++++ openjdk-boot/jaxws/build.xml	2011-03-08 18:40:29.639288336 +0000
+@@ -124,7 +124,7 @@
+         <mkdir dir="${build.classes.dir}"/>
+         <javac 
+ 	     includeAntRuntime="false" 
+-	     classpath="${jaxp.classes.dir}:${build.classes.dir}:${tools.jar}"
++	     classpath="${jaxp.classes.dir}:${build.classes.dir}:${langtools.jar}"
+ 	     fork="true"
+              destdir="${build.classes.dir}"
+              memoryInitialSize="${javac.memoryInitialSize}"
+diff -Nru openjdk-boot.orig/jaxws/make/Makefile openjdk-boot/jaxws/make/Makefile
+--- openjdk-boot.orig/jaxws/make/Makefile	2011-03-08 18:41:00.178374622 +0000
++++ openjdk-boot/jaxws/make/Makefile	2011-03-08 18:40:14.167751211 +0000
+@@ -120,7 +120,7 @@
+     ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR)
+     ANT_OPTIONS += -Djdk.home=$(ALT_BOOTDIR)
+   endif
+-  ANT_OPTIONS += -Dbootstrap.dir=$(ALT_LANGTOOLS_DIST)/bootstrap
++  ANT_OPTIONS += -Dlangtools.dist=$(ALT_LANGTOOLS_DIST)
+ else
+   ifdef ALT_JDK_IMPORT_PATH
+     ANT_JAVA_HOME = JAVA_HOME=$(ALT_JDK_IMPORT_PATH)
diff --git a/bootstrap-jopt.patch b/bootstrap-jopt.patch
new file mode 100644
index 0000000..4f0f48c
--- /dev/null
+++ b/bootstrap-jopt.patch
@@ -0,0 +1,26 @@
+diff -Nru openjdk-boot.orig/corba/make/common/shared/Defs-java.gmk openjdk-boot/corba/make/common/shared/Defs-java.gmk
+--- openjdk-boot.orig/corba/make/common/shared/Defs-java.gmk	2008-10-22 18:45:43.000000000 +0100
++++ openjdk-boot/corba/make/common/shared/Defs-java.gmk	2008-10-22 18:49:29.000000000 +0100
+@@ -75,7 +75,9 @@
+ JAVAC_JVM_FLAGS    += $(JAVA_TOOLS_FLAGS:%=-J%)
+ 
+ # The jar -J options are special, must be added at the end of the command line
++ifneq (,$(JAR_KNOWS_J_OPTIONS))
+ JAR_JFLAGS       = $(JAVA_TOOLS_FLAGS:%=-J%)
++endif
+ 
+ # JAVA_TOOLS_DIR is the default location to find Java tools to run, if
+ #    langtools is not available.
+diff -Nru openjdk-boot.orig/jdk/make/common/shared/Defs-java.gmk openjdk-boot/jdk/make/common/shared/Defs-java.gmk
+--- openjdk-boot.orig/jdk/make/common/shared/Defs-java.gmk	2008-10-22 19:14:30.000000000 +0100
++++ openjdk-boot/jdk/make/common/shared/Defs-java.gmk	2008-10-22 19:15:00.000000000 +0100
+@@ -82,7 +82,9 @@
+ JAVAC_JVM_FLAGS    += $(JAVA_TOOLS_FLAGS:%=-J%)
+ 
+ # The jar -J options are special, must be added at the end of the command line
++ifneq (,$(JAR_KNOWS_J_OPTIONS))
+ JAR_JFLAGS       = $(JAVA_TOOLS_FLAGS:%=-J%)
++endif
+ 
+ # JAVA_TOOLS_DIR is the default location to find Java tools to run, if
+ #    langtools is not available.
diff --git a/bootstrap-langtools-force-old-jdk.patch b/bootstrap-langtools-force-old-jdk.patch
new file mode 100644
index 0000000..e662203
--- /dev/null
+++ b/bootstrap-langtools-force-old-jdk.patch
@@ -0,0 +1,16 @@
+diff -Nru openjdk-boot.orig/langtools/make/build.xml openjdk-boot/langtools/make/build.xml
+--- openjdk-boot.orig/langtools/make/build.xml	2011-03-08 11:36:45.555852490 +0000
++++ openjdk-boot/langtools/make/build.xml	2011-03-08 18:33:09.332454251 +0000
+@@ -185,12 +185,6 @@
+         <isset property="import.jdk.jar"/>
+     </condition>
+ 
+-    <condition property="boot.java.provides.latest.jdk">
+-        <available
+-            ignoresystemclasses="true"
+-            classpath="${boot.java.home}/jre/lib/rt.jar" classname="java.nio.file.Path"/>
+-    </condition>
+-
+     <condition property="bootstrap.exclude.files" value="" else="${require.latest.jdk.files}">
+         <isset property="boot.java.provides.latest.jdk"/>
+     </condition>
diff --git a/bootstrap-pr40188.patch b/bootstrap-pr40188.patch
new file mode 100644
index 0000000..a6afe5f
--- /dev/null
+++ b/bootstrap-pr40188.patch
@@ -0,0 +1,15 @@
+diff -Nru openjdk-boot.orig/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c openjdk-boot/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c
+--- openjdk-boot.orig/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c	2009-03-30 17:23:08.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c	2009-05-18 19:58:36.000000000 +0100
+@@ -192,9 +192,9 @@
+     lockResult = fcntl(fd, cmd, &fl);
+     if (lockResult < 0) {
+         if ((cmd == F_SETLK64) && (errno == EAGAIN))
+-            return sun_nio_ch_FileDispatcherImpl_NO_LOCK;
++            return sun_nio_ch_FileDispatcher_NO_LOCK;
+         if (errno == EINTR)
+-            return sun_nio_ch_FileDispatcherImpl_INTERRUPTED;
++            return sun_nio_ch_FileDispatcher_INTERRUPTED;
+         JNU_ThrowIOExceptionWithLastError(env, "Lock failed");
+     }
+     return 0;
diff --git a/bootstrap-revert-6941137.patch b/bootstrap-revert-6941137.patch
new file mode 100644
index 0000000..3fd2f7c
--- /dev/null
+++ b/bootstrap-revert-6941137.patch
@@ -0,0 +1,12 @@
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java openjdk-boot/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java	2011-06-11 00:38:11.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java	2011-06-14 01:44:11.082438342 +0100
+@@ -486,7 +486,7 @@
+                     String otherDir = getZoneInfoDir(homeDir);
+                     if (otherDir != null)
+                         zi = otherDir;
+-                    zi = FileSystems.getDefault().getPath(zi).toRealPath().toString();
++                    zi = new File(zi).getCanonicalPath();
+                 } catch(Exception e) {
+                 }
+                 return zi;
diff --git a/bootstrap-revert-6973616.patch b/bootstrap-revert-6973616.patch
new file mode 100644
index 0000000..5abb0b9
--- /dev/null
+++ b/bootstrap-revert-6973616.patch
@@ -0,0 +1,12 @@
+diff -Nru openjdk-boot.orig/jdk/make/common/shared/Defs-versions.gmk openjdk-boot/jdk/make/common/shared/Defs-versions.gmk
+--- openjdk-boot.orig/jdk/make/common/shared/Defs-versions.gmk	2011-04-11 15:03:04.000000000 +0100
++++ openjdk-boot/jdk/make/common/shared/Defs-versions.gmk	2011-04-11 17:19:36.394376477 +0100
+@@ -209,7 +209,7 @@
+ 
+ # Generic
+ REQUIRED_ANT_VER          = 1.7.1
+-REQUIRED_BOOT_VER         = 1.6
++REQUIRED_BOOT_VER         = 1.5
+ REQUIRED_FREETYPE_VERSION = 2.2.1
+ REQUIRED_MAKE_VER         = 3.81
+ REQUIRED_UNZIP_VER        = 5.12
diff --git a/bootstrap-symbols.patch b/bootstrap-symbols.patch
new file mode 100644
index 0000000..8803b0c
--- /dev/null
+++ b/bootstrap-symbols.patch
@@ -0,0 +1,23 @@
+diff -Nru openjdk-boot.orig/jdk/make/common/Release.gmk openjdk-boot/jdk/make/common/Release.gmk
+--- openjdk-boot.orig/jdk/make/common/Release.gmk	2011-06-13 17:19:59.000000000 +0100
++++ openjdk-boot/jdk/make/common/Release.gmk	2011-06-14 01:19:26.469436464 +0100
+@@ -975,19 +975,6 @@
+ 	@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
+ 	$(CP) $(LIBDIR)/tools.jar $(JDK_IMAGE_DIR)/lib/tools.jar
+ 	@#
+-	@# lib/ct.sym
+-	@#
+-	$(MKDIR) -p $(OUTPUTDIR)/symbols/META-INF/sym
+-	$(JAVAC_CMD) -XDprocess.packages -proc:only \
+-	    -processor com.sun.tools.javac.sym.CreateSymbols \
+-	    -Acom.sun.tools.javac.sym.Jar=$(RT_JAR) \
+-	    -Acom.sun.tools.javac.sym.Dest=$(OUTPUTDIR)/symbols/META-INF/sym/rt.jar \
+-	    $(CORE_PKGS) $(NON_CORE_PKGS) $(EXCLUDE_PROPWARN_PKGS) $(EXPORTED_PRIVATE_PKGS)
+-	$(BOOT_JAR_CMD) $(CREATE_JAR_OPTS_NOMANIFEST) $(LIBDIR)/ct.sym \
+-	    -C $(OUTPUTDIR)/symbols META-INF $(BOOT_JAR_JFLAGS)
+-	@$(java-vm-cleanup)
+-	$(CP) $(LIBDIR)/ct.sym $(JDK_IMAGE_DIR)/lib/ct.sym
+-	@#
+ 	@# CORBA supported orb.idl and ir.idl should be copied to lib
+ 	@#
+ 	$(CP) $(LIBDIR)/orb.idl $(JDK_IMAGE_DIR)/lib/orb.idl
diff --git a/bootstrap-test_gamma.patch b/bootstrap-test_gamma.patch
new file mode 100644
index 0000000..a60b5d0
--- /dev/null
+++ b/bootstrap-test_gamma.patch
@@ -0,0 +1,46 @@
+diff -up ./openjdk-boot/hotspot/make/linux/Makefile.sav ./openjdk-boot/hotspot/make/linux/Makefile
+--- ./openjdk-boot/hotspot/make/linux/Makefile.sav	2011-07-06 13:05:08.731565476 -0400
++++ ./openjdk-boot/hotspot/make/linux/Makefile	2011-07-06 13:05:25.129310942 -0400
+@@ -287,42 +287,36 @@ platform_zero: $(GAMMADIR)/make/$(OSNAME
+ 
+ $(TARGETS_C2):  $(SUBDIRS_C2)
+ 	cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS)
+-	cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && ./test_gamma
+ ifdef INSTALL
+ 	cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install
+ endif
+ 
+ $(TARGETS_TIERED):  $(SUBDIRS_TIERED)
+ 	cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS)
+-	cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && ./test_gamma
+ ifdef INSTALL
+ 	cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
+ 
+ $(TARGETS_C1):  $(SUBDIRS_C1)
+ 	cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS)
+-	cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && ./test_gamma
+ ifdef INSTALL
+ 	cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
+ 
+ $(TARGETS_CORE):  $(SUBDIRS_CORE)
+ 	cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS)
+-	cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && ./test_gamma
+ ifdef INSTALL
+ 	cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
+ 
+ $(TARGETS_ZERO):  $(SUBDIRS_ZERO)
+ 	cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS)
+-	cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && ./test_gamma
+ ifdef INSTALL
+ 	cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
+ 
+ $(TARGETS_SHARK):  $(SUBDIRS_SHARK)
+ 	cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS)
+-	cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && ./test_gamma
+ ifdef INSTALL
+ 	cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
diff --git a/bootstrap-tobin.patch b/bootstrap-tobin.patch
new file mode 100644
index 0000000..cdf6469
--- /dev/null
+++ b/bootstrap-tobin.patch
@@ -0,0 +1,39 @@
+diff -Nru ../openjdk.orig/openjdk-boot/jdk/make/sun/xawt/Makefile openjdk-boot/jdk/make/sun/xawt/Makefile
+--- ../openjdk.orig/openjdk-boot/jdk/make/sun/xawt/Makefile	2009-10-30 16:49:39.000000000 +0000
++++ openjdk-boot/jdk/make/sun/xawt/Makefile	2009-10-30 16:59:16.000000000 +0000
+@@ -294,11 +294,7 @@
+ 
+ TEMPDIR_CLASSES = $(TEMPDIR)/classes
+ 
+-$(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class: ToBin.java
+-	@$(prep-target)
+-	$(BOOT_JAVAC_CMD) -d $(TEMPDIR_CLASSES) $<
+-
+-$(TEMPDIR)/.gen_icons: $(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class $(ICONS)
++$(TEMPDIR)/.gen_icons: $(ICONS)
+ 	$(prep-target)
+ 	for i in $(ICONS); do \
+             filename=`basename $$i`; \
+@@ -308,20 +304,14 @@
+ 	    $(ECHO) "package sun.awt.X11;" >> $$classname ; \
+ 	    $(ECHO) "public class XAWTIcon32_$$name {" >> $$classname; \
+ 	    $(ECHO) "public static int[] $$name = { " >> $$classname;  \
+-	    $(CAT) $$i | \
+-	      $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES)  \
+-		-Djava.awt.headless=true \
+-		sun.awt.X11.ToBin >> $$classname; \
++	    $(ECHO) "0,0" >> $$classname ;  \
+ 	    $(ECHO) "}; }" >> $$classname;  \
+             classname=$(GEN_DIR)/XAWTIcon64_$$name.java; \
+ 	    $(RM) $$classname; \
+ 	    $(ECHO) "package sun.awt.X11;" >> $$classname ; \
+ 	    $(ECHO) "public class XAWTIcon64_$$name {" >> $$classname; \
+ 	    $(ECHO) "public static long[] $$name = { " >> $$classname;  \
+-	    $(CAT) $$i | \
+-	      $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES)  \
+-		-Djava.awt.headless=true \
+-		sun.awt.X11.ToBin >> $$classname; \
++	    $(ECHO) "0,0" >> $$classname ;  \
+ 	    $(ECHO) "}; }" >> $$classname;  \
+ 	done
+ 	$(TOUCH) $@
diff --git a/bootstrap-tools.jar.patch b/bootstrap-tools.jar.patch
new file mode 100644
index 0000000..846993a
--- /dev/null
+++ b/bootstrap-tools.jar.patch
@@ -0,0 +1,14 @@
+diff -Nru openjdk-boot.orig/hotspot/make/linux/makefiles/sa.make openjdk-boot/hotspot/make/linux/makefiles/sa.make
+--- openjdk-boot.orig/hotspot/make/linux/makefiles/sa.make	2010-08-27 19:15:27.000000000 +0100
++++ openjdk-boot/hotspot/make/linux/makefiles/sa.make	2010-09-01 20:49:39.417105243 +0100
+@@ -71,8 +71,8 @@
+ 	  echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \
+ 	  exit 1; \
+ 	fi
+-	$(QUIETLY) if [ ! -f $(SA_CLASSPATH) -a ! -d $(MODULELIB_PATH) ] ; then \
+-	  echo "Missing $(SA_CLASSPATH) file. Use 1.6.0 or later version of JDK";\
++	$(QUIETLY) if [ ! -d $(MODULELIB_PATH) ] ; then \
++	  echo "$(MODULELIB_PATH) is not a directory.";\
+ 	  echo ""; \
+ 	  exit 1; \
+ 	fi
diff --git a/bootstrap-xbootclasspath.patch b/bootstrap-xbootclasspath.patch
new file mode 100644
index 0000000..3839394
--- /dev/null
+++ b/bootstrap-xbootclasspath.patch
@@ -0,0 +1,120 @@
+diff -Nru openjdk-boot.orig/corba/make/common/shared/Defs-java.gmk openjdk-boot/corba/make/common/shared/Defs-java.gmk
+--- openjdk-boot.orig/corba/make/common/shared/Defs-java.gmk	2011-03-14 22:08:07.000000000 +0000
++++ openjdk-boot/corba/make/common/shared/Defs-java.gmk	2011-04-22 00:44:23.902652962 +0100
+@@ -131,26 +131,14 @@
+ CLASS_VERSION = -target $(TARGET_CLASS_VERSION)
+ JAVACFLAGS  += $(CLASS_VERSION)
+ JAVACFLAGS  += -encoding ascii
+-JAVACFLAGS  += -classpath $(BOOTDIR)/lib/tools.jar
++JAVACFLAGS  += -classpath $(BOOTDIR)/lib/rt.jar
+ JAVACFLAGS  += $(OTHER_JAVACFLAGS)
+ 
+ # Langtools
+-ifdef LANGTOOLS_DIST
+-  JAVAC_JAR   = $(LANGTOOLS_DIST)/bootstrap/lib/javac.jar
+-  JAVADOC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javadoc.jar
+-  DOCLETS_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/doclets.jar
+-  JAVAC_CMD   = $(BOOT_JAVA_CMD) \
+-		"-Xbootclasspath/p:$(JAVAC_JAR)" \
+-		-jar $(JAVAC_JAR) $(JAVACFLAGS)
+-  JAVADOC_CMD = $(BOOT_JAVA_CMD) \
+-		"-Xbootclasspath/p:$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)$(CLASSPATH_SEPARATOR)$(DOCLETS_JAR)" \
+-		-jar $(JAVADOC_JAR)
+-else
+-  # If no explicit tools, use boot tools (add VM flags in this case)
+-  JAVAC_CMD     = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
+-		  $(JAVACFLAGS)
+-  JAVADOC_CMD   = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%)
+-endif
++# If no explicit tools, use boot tools (add VM flags in this case)
++JAVAC_CMD     = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
++	  $(JAVACFLAGS)
++JAVADOC_CMD   = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%)
+ 
+ # Override of what javac to use (see deploy workspace)
+ ifdef JAVAC
+diff -Nru openjdk-boot.orig/jdk/make/common/shared/Defs-java.gmk openjdk-boot/jdk/make/common/shared/Defs-java.gmk
+--- openjdk-boot.orig/jdk/make/common/shared/Defs-java.gmk	2011-04-21 23:24:38.000000000 +0100
++++ openjdk-boot/jdk/make/common/shared/Defs-java.gmk	2011-04-22 00:45:22.723492812 +0100
+@@ -147,7 +147,7 @@
+ JAVACFLAGS  += $(OTHER_JAVACFLAGS)
+ 
+ # Needed for javah
+-JAVAHFLAGS += -bootclasspath "$(CLASSBINDIR)$(JCEFLAGS)"
++JAVAHFLAGS += -bootclasspath "$(CLASSBINDIR)$(JCEFLAGS):$(ICEDTEA_RT):$(CLASSDESTDIR)"
+ 
+ # Needed for javadoc to ensure it builds documentation
+ # against the newly built classes
+@@ -158,27 +158,15 @@
+ 
+ # Langtools
+ ifdef LANGTOOLS_DIST
+-  JAVAC_JAR   = $(LANGTOOLS_DIST)/bootstrap/lib/javac.jar
+-  JAVAH_JAR   = $(LANGTOOLS_DIST)/bootstrap/lib/javah.jar
+   JAVADOC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javadoc.jar
+   DOCLETS_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/doclets.jar
+-  JAVAC_CMD   = $(BOOT_JAVA_CMD) \
+-		"-Xbootclasspath/p:$(JAVAC_JAR)" \
+-		-jar $(JAVAC_JAR) $(JAVACFLAGS)
+-  JAVAH_CMD   = $(BOOT_JAVA_CMD) \
+-		"-Xbootclasspath/p:$(JAVAH_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)"  \
+-		-jar $(JAVAH_JAR) $(JAVAHFLAGS)
+   JAVADOC_CMD = $(BOOT_JAVA_CMD) \
+ 		"-Xbootclasspath/p:$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)$(CLASSPATH_SEPARATOR)$(DOCLETS_JAR)" \
+ 		-jar $(JAVADOC_JAR) $(JAVADOCFLAGS)
+-else
+-  # If no explicit tools, use boot tools (add VM flags in this case)
+   JAVAC_CMD     = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
+ 		  $(JAVACFLAGS)
+   JAVAH_CMD     = $(JAVA_TOOLS_DIR)/javah \
+ 		  $(JAVAHFLAGS)
+-  JAVADOC_CMD   = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%) \
+-  		  $(JAVADOCFLAGS)
+ endif
+ 
+ # Override of what javac to use (see deploy workspace)
+diff -Nru openjdk-boot.orig/jdk/make/java/text/base/Makefile openjdk-boot/jdk/make/java/text/base/Makefile
+--- openjdk-boot.orig/jdk/make/java/text/base/Makefile	2011-04-20 04:40:20.000000000 +0100
++++ openjdk-boot/jdk/make/java/text/base/Makefile	2011-04-22 00:44:23.918653190 +0100
+@@ -80,8 +80,8 @@
+ 		-sourcepath $(TEXT_SRCDIR) \
+ 		$(TEXT_SOURCES)
+ 	$(MKDIR) -p  $(TEXT_CLASSDIR)
+-	$(BOOT_JAVA_CMD) -Xbootclasspath/p:$(TEXT_CLASSES) \
+-		-jar $(GENERATEBREAKITERATORDATA_JARFILE) \
++	$(BOOT_JAVA_CMD) -cp $(TEXT_CLASSES):$(GENERATEBREAKITERATORDATA_JARFILE):$(ABS_OUTPUTDIR)/classes \
++		build.tools.generatebreakiteratordata.GenerateBreakIteratorData \
+ 		-o $(TEXT_CLASSDIR) \
+ 		-spec $(UNICODEDATA)/UnicodeData.txt
+ 	@$(java-vm-cleanup)
+diff -Nru openjdk-boot.orig/jdk/make/sun/text/Makefile openjdk-boot/jdk/make/sun/text/Makefile
+--- openjdk-boot.orig/jdk/make/sun/text/Makefile	2011-04-20 04:40:21.000000000 +0100
++++ openjdk-boot/jdk/make/sun/text/Makefile	2011-04-22 00:44:23.918653190 +0100
+@@ -85,8 +85,9 @@
+ 	$(BOOT_JAVAC_CMD) -d $(TEXT_CLASSES) \
+ 		-sourcepath $(TEXT_SRCDIR) \
+ 		$(BIRULES) $(BIINFO)
+-	$(BOOT_JAVA_CMD) -Xbootclasspath/p:$(TEXT_CLASSES) \
+-		-jar $(GENERATEBREAKITERATORDATA_JARFILE) \
++	$(BOOT_JAVA_CMD)  \
++		-cp $(TEXT_CLASSES):$(ABS_OUTPUTDIR)/classes:$(GENERATEBREAKITERATORDATA_JARFILE) \
++		build.tools.generatebreakiteratordata.GenerateBreakIteratorData \
+ 		-o $(CLASSDESTDIR)/sun/text/resources \
+ 		-spec $(UNICODEDATA)/UnicodeData.txt \
+ 		-language th
+diff -r 8e26c4aee63c make/build.xml
+--- openjdk-boot/langtools/make/build.xml	Wed Apr 20 04:37:56 2011 +0100
++++ openjdk-boot/langtools/make/build.xml	Tue Apr 26 10:38:14 2011 +0100
+@@ -868,10 +868,8 @@
+                executable="${boot.java.home}/bin/javac"
+                srcdir="${make.tools.dir}/GenStubs"
+                destdir="${build.toolclasses.dir}/"
+-               classpath="${ant.core.lib}"
+-               includeantruntime="false">
+-            <compilerarg value="-Xbootclasspath/p:${build.bootstrap.dir}/classes"/>
+-        </javac>
++               classpath="${build.bootstrap.dir}/classes:${ant.core.lib}"
++               includeantruntime="false"/>
+         <taskdef name="genstubs"
+                  classname="GenStubs$$Ant"
+                  classpath="${build.toolclasses.dir}:${build.bootstrap.dir}/classes:${ant.home}/lib/ant.jar"/>
diff --git a/bootstrap-xsltproc.patch b/bootstrap-xsltproc.patch
new file mode 100644
index 0000000..7a1fcf0
--- /dev/null
+++ b/bootstrap-xsltproc.patch
@@ -0,0 +1,54 @@
+diff -r 591c7dc0b2ee make/linux/makefiles/jvmti.make
+--- openjdk-boot/hotspot/make/linux/makefiles/jvmti.make	Thu May 19 13:27:44 2011 +0200
++++ openjdk-boot/hotspot/make/linux/makefiles/jvmti.make	Wed May 25 20:01:25 2011 +0100
+@@ -58,8 +58,6 @@
+ 
+ JvmtiGeneratedFiles = $(JvmtiGeneratedNames:%=$(JvmtiOutDir)/%)
+ 
+-XSLT = $(QUIETLY) $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiGen
+-
+ .PHONY: all jvmtidocs clean cleanall
+ 
+ # #########################################################################
+@@ -76,34 +74,34 @@
+ 
+ $(JvmtiOutDir)/jvmtiEnter.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
+ 	@echo Generating $@
+-	$(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnter.xsl -OUT $(JvmtiOutDir)/jvmtiEnter.cpp -PARAM interface jvmti
++	$(XSLT) -o $(JvmtiOutDir)/jvmtiEnter.cpp --stringparam interface jvmti $(JvmtiSrcDir)/jvmtiEnter.xsl $(JvmtiSrcDir)/jvmti.xml
+ 
+ $(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp: $(JvmtiGenClass) $(InterpreterSrcDir)/bytecodeInterpreter.cpp $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl
+ 	@echo Generating $@
+-	$(XSLT) -IN $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml -XSL $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl -OUT $(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp 
++	$(XSLT) -o $(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml
+ 
+ $(JvmtiOutDir)/jvmtiEnterTrace.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
+ 	@echo Generating $@
+-	$(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnter.xsl -OUT $(JvmtiOutDir)/jvmtiEnterTrace.cpp -PARAM interface jvmti -PARAM trace Trace
++	$(XSLT) -o $(JvmtiOutDir)/jvmtiEnterTrace.cpp --stringparam interface jvmti --stringparam trace Trace $(JvmtiSrcDir)/jvmtiEnter.xsl $(JvmtiSrcDir)/jvmti.xml
+ 
+ $(JvmtiOutDir)/jvmtiEnvRecommended.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnv.xsl $(JvmtiSrcDir)/jvmtiEnv.cpp $(JvmtiEnvFillClass)
+ 	@echo Generating $@
+-	$(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnv.xsl -OUT $(JvmtiOutDir)/jvmtiEnvStub.cpp
++	$(XSLT) -o $(JvmtiOutDir)/jvmtiEnvStub.cpp $(JvmtiSrcDir)/jvmtiEnv.xsl $(JvmtiSrcDir)/jvmti.xml
+ 	$(QUIETLY) $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiEnvFill $(JvmtiSrcDir)/jvmtiEnv.cpp $(JvmtiOutDir)/jvmtiEnvStub.cpp $(JvmtiOutDir)/jvmtiEnvRecommended.cpp
+ 
+ $(JvmtiOutDir)/jvmtiEnv.hpp: $(both) $(JvmtiSrcDir)/jvmtiHpp.xsl
+ 	@echo Generating $@
+-	$(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiHpp.xsl -OUT $(JvmtiOutDir)/jvmtiEnv.hpp
++	$(XSLT) -o $(JvmtiOutDir)/jvmtiEnv.hpp $(JvmtiSrcDir)/jvmtiHpp.xsl $(JvmtiSrcDir)/jvmti.xml 
+ 
+ $(JvmtiOutDir)/jvmti.h: $(both) $(JvmtiSrcDir)/jvmtiH.xsl
+ 	@echo Generating $@
+-	$(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiH.xsl -OUT $(JvmtiOutDir)/jvmti.h
++	$(XSLT) -o $(JvmtiOutDir)/jvmti.h $(JvmtiSrcDir)/jvmtiH.xsl $(JvmtiSrcDir)/jvmti.xml
+ 
+ jvmtidocs:  $(JvmtiOutDir)/jvmti.html 
+ 
+ $(JvmtiOutDir)/jvmti.html: $(both) $(JvmtiSrcDir)/jvmti.xsl
+ 	@echo Generating $@
+-	$(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmti.xsl -OUT $(JvmtiOutDir)/jvmti.html
++	$(XSLT) -o $(JvmtiOutDir)/jvmti.html $(JvmtiSrcDir)/jvmti.xsl $(JvmtiSrcDir)/jvmti.xml
+ 
+ # #########################################################################
+ 
diff --git a/clean-crypto.patch b/clean-crypto.patch
new file mode 100644
index 0000000..065ac1e
--- /dev/null
+++ b/clean-crypto.patch
@@ -0,0 +1,1078 @@
+diff -Nru openjdk.orig/jdk/make/javax/crypto/Makefile openjdk/jdk/make/javax/crypto/Makefile
+--- openjdk.orig/jdk/make/javax/crypto/Makefile	2010-07-29 21:55:27.000000000 +0100
++++ openjdk/jdk/make/javax/crypto/Makefile	2010-09-01 10:37:32.926684780 +0100
+@@ -157,7 +157,8 @@
+ #
+ 
+ ifdef OPENJDK
+-all: build-jar install-jar build-policy install-limited
++# We don't need any policy files.
++all: build-jar install-jar
+ else  # OPENJDK
+ ifeq ($(strip $(FILES_java)),)
+ all:
+diff -Nru openjdk.orig/jdk/src/share/classes/javax/crypto/Cipher.java openjdk/jdk/src/share/classes/javax/crypto/Cipher.java
+--- openjdk.orig/jdk/src/share/classes/javax/crypto/Cipher.java	2010-07-29 21:55:43.000000000 +0100
++++ openjdk/jdk/src/share/classes/javax/crypto/Cipher.java	2010-09-01 10:37:32.926684780 +0100
+@@ -144,12 +144,6 @@
+     // The transformation
+     private String transformation;
+ 
+-    // Crypto permission representing the maximum allowable cryptographic
+-    // strength that this Cipher object can be used for. (The cryptographic
+-    // strength is a function of the keysize and algorithm parameters encoded
+-    // in the crypto permission.)
+-    private CryptoPermission cryptoPerm;
+-
+     // The exemption mechanism that needs to be enforced
+     private ExemptionMechanism exmech;
+ 
+@@ -190,16 +184,9 @@
+     protected Cipher(CipherSpi cipherSpi,
+                      Provider provider,
+                      String transformation) {
+-        // See bug 4341369 & 4334690 for more info.
+-        // If the caller is trusted, then okey.
+-        // Otherwise throw a NullPointerException.
+-        if (!JceSecurityManager.INSTANCE.isCallerTrusted()) {
+-            throw new NullPointerException();
+-        }
+         this.spi = cipherSpi;
+         this.provider = provider;
+         this.transformation = transformation;
+-        this.cryptoPerm = CryptoAllPermission.INSTANCE;
+         this.lock = null;
+     }
+ 
+@@ -212,7 +199,6 @@
+     Cipher(CipherSpi cipherSpi, String transformation) {
+         this.spi = cipherSpi;
+         this.transformation = transformation;
+-        this.cryptoPerm = CryptoAllPermission.INSTANCE;
+         this.lock = null;
+     }
+ 
+@@ -442,9 +428,6 @@
+         Exception failure = null;
+         while (t.hasNext()) {
+             Service s = (Service)t.next();
+-            if (JceSecurity.canUseProvider(s.getProvider()) == false) {
+-                continue;
+-            }
+             Transform tr = getTransform(s, transforms);
+             if (tr == null) {
+                 // should never happen
+@@ -570,7 +553,6 @@
+         }
+         Exception failure = null;
+         List transforms = getTransforms(transformation);
+-        boolean providerChecked = false;
+         String paddingError = null;
+         for (Iterator t = transforms.iterator(); t.hasNext();) {
+             Transform tr = (Transform)t.next();
+@@ -578,19 +560,6 @@
+             if (s == null) {
+                 continue;
+             }
+-            if (providerChecked == false) {
+-                // for compatibility, first do the lookup and then verify
+-                // the provider. this makes the difference between a NSAE
+-                // and a SecurityException if the
+-                // provider does not support the algorithm.
+-                Exception ve = JceSecurity.getVerificationResult(provider);
+-                if (ve != null) {
+-                    String msg = "JCE cannot authenticate the provider "
+-                        + provider.getName();
+-                    throw new SecurityException(msg, ve);
+-                }
+-                providerChecked = true;
+-            }
+             if (tr.supportsMode(s) == S_NO) {
+                 continue;
+             }
+@@ -603,7 +572,6 @@
+                 tr.setModePadding(spi);
+                 Cipher cipher = new Cipher(spi, transformation);
+                 cipher.provider = s.getProvider();
+-                cipher.initCryptoPermission();
+                 return cipher;
+             } catch (Exception e) {
+                 failure = e;
+@@ -622,22 +590,6 @@
+                 ("No such algorithm: " + transformation, failure);
+     }
+ 
+-    // If the requested crypto service is export-controlled,
+-    // determine the maximum allowable keysize.
+-    private void initCryptoPermission() throws NoSuchAlgorithmException {
+-        if (JceSecurity.isRestricted() == false) {
+-            cryptoPerm = CryptoAllPermission.INSTANCE;
+-            exmech = null;
+-            return;
+-        }
+-        cryptoPerm = getConfiguredPermission(transformation);
+-        // Instantiate the exemption mechanism (if required)
+-        String exmechName = cryptoPerm.getExemptionMechanism();
+-        if (exmechName != null) {
+-            exmech = ExemptionMechanism.getInstance(exmechName);
+-        }
+-    }
+-
+     // max number of debug warnings to print from chooseFirstProvider()
+     private static int warnCount = 10;
+ 
+@@ -679,9 +631,6 @@
+                     s = (Service)serviceIterator.next();
+                     thisSpi = null;
+                 }
+-                if (JceSecurity.canUseProvider(s.getProvider()) == false) {
+-                    continue;
+-                }
+                 Transform tr = getTransform(s, transforms);
+                 if (tr == null) {
+                     // should never happen
+@@ -699,7 +648,6 @@
+                         thisSpi = (CipherSpi)obj;
+                     }
+                     tr.setModePadding(thisSpi);
+-                    initCryptoPermission();
+                     spi = thisSpi;
+                     provider = s.getProvider();
+                     // not needed any more
+@@ -731,19 +679,15 @@
+             InvalidAlgorithmParameterException {
+         switch (type) {
+         case I_KEY:
+-            checkCryptoPerm(thisSpi, key);
+             thisSpi.engineInit(opmode, key, random);
+             break;
+         case I_PARAMSPEC:
+-            checkCryptoPerm(thisSpi, key, paramSpec);
+             thisSpi.engineInit(opmode, key, paramSpec, random);
+             break;
+         case I_PARAMS:
+-            checkCryptoPerm(thisSpi, key, params);
+             thisSpi.engineInit(opmode, key, params, random);
+             break;
+         case I_CERT:
+-            checkCryptoPerm(thisSpi, key);
+             thisSpi.engineInit(opmode, key, random);
+             break;
+         default:
+@@ -777,9 +721,6 @@
+                 if (s.supportsParameter(key) == false) {
+                     continue;
+                 }
+-                if (JceSecurity.canUseProvider(s.getProvider()) == false) {
+-                    continue;
+-                }
+                 Transform tr = getTransform(s, transforms);
+                 if (tr == null) {
+                     // should never happen
+@@ -793,7 +734,6 @@
+                         thisSpi = (CipherSpi)s.newInstance(null);
+                     }
+                     tr.setModePadding(thisSpi);
+-                    initCryptoPermission();
+                     implInit(thisSpi, initType, opmode, key, paramSpec,
+                                                         params, random);
+                     provider = s.getProvider();
+@@ -939,107 +879,6 @@
+         return exmech;
+     }
+ 
+-    //
+-    // Crypto permission check code below
+-    //
+-    private void checkCryptoPerm(CipherSpi checkSpi, Key key)
+-            throws InvalidKeyException {
+-        if (cryptoPerm == CryptoAllPermission.INSTANCE) {
+-            return;
+-        }
+-        // Check if key size and default parameters are within legal limits
+-        AlgorithmParameterSpec params;
+-        try {
+-            params = getAlgorithmParameterSpec(checkSpi.engineGetParameters());
+-        } catch (InvalidParameterSpecException ipse) {
+-            throw new InvalidKeyException
+-                ("Unsupported default algorithm parameters");
+-        }
+-        if (!passCryptoPermCheck(checkSpi, key, params)) {
+-            throw new InvalidKeyException(
+-                "Illegal key size or default parameters");
+-        }
+-    }
+-
+-    private void checkCryptoPerm(CipherSpi checkSpi, Key key,
+-            AlgorithmParameterSpec params) throws InvalidKeyException,
+-            InvalidAlgorithmParameterException {
+-        if (cryptoPerm == CryptoAllPermission.INSTANCE) {
+-            return;
+-        }
+-        // Determine keysize and check if it is within legal limits
+-        if (!passCryptoPermCheck(checkSpi, key, null)) {
+-            throw new InvalidKeyException("Illegal key size");
+-        }
+-        if ((params != null) && (!passCryptoPermCheck(checkSpi, key, params))) {
+-            throw new InvalidAlgorithmParameterException("Illegal parameters");
+-        }
+-    }
+-
+-    private void checkCryptoPerm(CipherSpi checkSpi, Key key,
+-            AlgorithmParameters params)
+-            throws InvalidKeyException, InvalidAlgorithmParameterException {
+-        if (cryptoPerm == CryptoAllPermission.INSTANCE) {
+-            return;
+-        }
+-        // Convert the specified parameters into specs and then delegate.
+-        AlgorithmParameterSpec pSpec;
+-        try {
+-            pSpec = getAlgorithmParameterSpec(params);
+-        } catch (InvalidParameterSpecException ipse) {
+-            throw new InvalidAlgorithmParameterException
+-                ("Failed to retrieve algorithm parameter specification");
+-        }
+-        checkCryptoPerm(checkSpi, key, pSpec);
+-    }
+-
+-    private boolean passCryptoPermCheck(CipherSpi checkSpi, Key key,
+-                                        AlgorithmParameterSpec params)
+-            throws InvalidKeyException {
+-        String em = cryptoPerm.getExemptionMechanism();
+-        int keySize = checkSpi.engineGetKeySize(key);
+-        // Use the "algorithm" component of the cipher
+-        // transformation so that the perm check would
+-        // work when the key has the "aliased" algo.
+-        String algComponent;
+-        int index = transformation.indexOf('/');
+-        if (index != -1) {
+-            algComponent = transformation.substring(0, index);
+-        } else {
+-            algComponent = transformation;
+-        }
+-        CryptoPermission checkPerm =
+-            new CryptoPermission(algComponent, keySize, params, em);
+-
+-        if (!cryptoPerm.implies(checkPerm)) {
+-            if (debug != null) {
+-                debug.println("Crypto Permission check failed");
+-                debug.println("granted: " + cryptoPerm);
+-                debug.println("requesting: " + checkPerm);
+-            }
+-            return false;
+-        }
+-        if (exmech == null) {
+-            return true;
+-        }
+-        try {
+-            if (!exmech.isCryptoAllowed(key)) {
+-                if (debug != null) {
+-                    debug.println(exmech.getName() + " isn't enforced");
+-                }
+-                return false;
+-            }
+-        } catch (ExemptionMechanismException eme) {
+-            if (debug != null) {
+-                debug.println("Cannot determine whether "+
+-                              exmech.getName() + " has been enforced");
+-                eme.printStackTrace();
+-            }
+-            return false;
+-        }
+-        return true;
+-    }
+-
+     // check if opmode is one of the defined constants
+     // throw InvalidParameterExeption if not
+     private static void checkOpmode(int opmode) {
+@@ -1144,7 +983,6 @@
+         checkOpmode(opmode);
+ 
+         if (spi != null) {
+-            checkCryptoPerm(spi, key);
+             spi.engineInit(opmode, key, random);
+         } else {
+             try {
+@@ -1270,7 +1108,6 @@
+         checkOpmode(opmode);
+ 
+         if (spi != null) {
+-            checkCryptoPerm(spi, key, params);
+             spi.engineInit(opmode, key, params, random);
+         } else {
+             chooseProvider(I_PARAMSPEC, opmode, key, params, null, random);
+@@ -1391,7 +1228,6 @@
+         checkOpmode(opmode);
+ 
+         if (spi != null) {
+-            checkCryptoPerm(spi, key, params);
+             spi.engineInit(opmode, key, params, random);
+         } else {
+             chooseProvider(I_PARAMS, opmode, key, null, params, random);
+@@ -1555,7 +1391,6 @@
+             (certificate==null? null:certificate.getPublicKey());
+ 
+         if (spi != null) {
+-            checkCryptoPerm(spi, publicKey);
+             spi.engineInit(opmode, publicKey, random);
+         } else {
+             try {
+@@ -2361,12 +2196,15 @@
+         return null;
+     }
+ 
++    // Used by getMaxAllowedKeyLength and getMaxAllowedParameterSpec
++    // always returns CryptoAllPermission. Old stuff from bad old days.
+     private static CryptoPermission getConfiguredPermission(
+             String transformation) throws NullPointerException,
+             NoSuchAlgorithmException {
+         if (transformation == null) throw new NullPointerException();
+-        String[] parts = tokenizeTransformation(transformation);
+-        return JceSecurityManager.INSTANCE.getCryptoPermission(parts[0]);
++	// Called to make sure it is a valid transformation.
++        tokenizeTransformation(transformation);
++        return CryptoAllPermission.INSTANCE;
+     }
+ 
+     /**
+diff -Nru openjdk.orig/jdk/src/share/classes/javax/crypto/JarVerifier.java openjdk/jdk/src/share/classes/javax/crypto/JarVerifier.java
+--- openjdk.orig/jdk/src/share/classes/javax/crypto/JarVerifier.java	2010-07-29 21:55:43.000000000 +0100
++++ openjdk/jdk/src/share/classes/javax/crypto/JarVerifier.java	1970-01-01 01:00:00.000000000 +0100
+@@ -1,157 +0,0 @@
+-/*
+- * Copyright (c) 2007, 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 javax.crypto;
+-
+-import java.io.*;
+-import java.net.*;
+-import java.security.*;
+-import java.util.jar.*;
+-
+-/**
+- * This class verifies JAR files (and any supporting JAR files), and
+- * determines whether they may be used in this implementation.
+- *
+- * The JCE in OpenJDK has an open cryptographic interface, meaning it
+- * does not restrict which providers can be used.  Compliance with
+- * United States export controls and with local law governing the
+- * import/export of products incorporating the JCE in the OpenJDK is
+- * the responsibility of the licensee.
+- *
+- * @since 1.7
+- */
+-final class JarVerifier {
+-
+-    // The URL for the JAR file we want to verify.
+-    private URL jarURL;
+-    private boolean savePerms;
+-    private CryptoPermissions appPerms = null;
+-
+-    /**
+-     * Creates a JarVerifier object to verify the given URL.
+-     *
+-     * @param jarURL the JAR file to be verified.
+-     * @param savePerms if true, save the permissions allowed by the
+-     *          exemption mechanism
+-     */
+-    JarVerifier(URL jarURL, boolean savePerms) {
+-        this.jarURL = jarURL;
+-        this.savePerms = savePerms;
+-    }
+-
+-    /**
+-     * Verify the JAR file is signed by an entity which has a certificate
+-     * issued by a trusted CA.
+-     *
+-     * In OpenJDK, we just need to examine the "cryptoperms" file to see
+-     * if any permissions were bundled together with this jar file.
+-     */
+-    void verify() throws JarException, IOException {
+-
+-        // Short-circuit.  If we weren't asked to save any, we're done.
+-        if (!savePerms) {
+-            return;
+-        }
+-
+-        // If the protocol of jarURL isn't "jar", we should
+-        // construct a JAR URL so we can open a JarURLConnection
+-        // for verifying this provider.
+-        final URL url = jarURL.getProtocol().equalsIgnoreCase("jar")?
+-                        jarURL : new URL("jar:" + jarURL.toString() + "!/");
+-
+-        JarFile jf = null;
+-        try {
+-
+-            // Get a link to the Jarfile to search.
+-            try {
+-                jf = (JarFile)
+-                    AccessController.doPrivileged(
+-                        new PrivilegedExceptionAction() {
+-                            public Object run() throws Exception {
+-                                JarURLConnection conn =
+-                                    (JarURLConnection) url.openConnection();
+-                                // You could do some caching here as
+-                                // an optimization.
+-                                conn.setUseCaches(false);
+-                                return conn.getJarFile();
+-                            }
+-                        });
+-            } catch (java.security.PrivilegedActionException pae) {
+-                SecurityException se = new SecurityException(
+-                    "Cannot load " + url.toString());
+-                se.initCause(pae);
+-                throw se;
+-            }
+-
+-            if (jf != null) {
+-                JarEntry je = jf.getJarEntry("cryptoPerms");
+-                if (je == null) {
+-                    throw new JarException(
+-                        "Can not find cryptoPerms");
+-                }
+-                try {
+-                    appPerms = new CryptoPermissions();
+-                    appPerms.load(jf.getInputStream(je));
+-                } catch (Exception ex) {
+-                    JarException jex =
+-                        new JarException("Cannot load/parse" +
+-                            jarURL.toString());
+-                    jex.initCause(ex);
+-                    throw jex;
+-                }
+-            }
+-        } finally {
+-            // Only call close() when caching is not enabled.
+-            // Otherwise, exceptions will be thrown for all
+-            // subsequent accesses of this cached jar.
+-            if (jf != null) {
+-                jf.close();
+-            }
+-        }
+-    }
+-
+-    /**
+-     * Verify that the provided certs include the
+-     * framework signing certificate.
+-     *
+-     * @param certs the list of certs to be checked.
+-     * @throws Exception if the list of certs did not contain
+-     *          the framework signing certificate
+-     */
+-    static void verifyPolicySigned(java.security.cert.Certificate[] certs)
+-            throws Exception {
+-    }
+-
+-    /**
+-     * Returns the permissions which are bundled with the JAR file,
+-     * aka the "cryptoperms" file.
+-     *
+-     * NOTE: if this JarVerifier instance is constructed with "savePerms"
+-     * equal to false, then this method would always return null.
+-     */
+-    CryptoPermissions getPermissions() {
+-        return appPerms;
+-    }
+-}
+diff -Nru openjdk.orig/jdk/src/share/classes/javax/crypto/JceSecurity.java openjdk/jdk/src/share/classes/javax/crypto/JceSecurity.java
+--- openjdk.orig/jdk/src/share/classes/javax/crypto/JceSecurity.java	2010-07-29 21:55:43.000000000 +0100
++++ openjdk/jdk/src/share/classes/javax/crypto/JceSecurity.java	2010-09-01 10:37:32.934684089 +0100
+@@ -27,8 +27,6 @@
+ 
+ import java.util.*;
+ import java.util.jar.*;
+-import java.io.*;
+-import java.net.URL;
+ import java.security.*;
+ 
+ import java.security.Provider.Service;
+@@ -47,72 +45,25 @@
+ 
+ final class JceSecurity {
+ 
++    // Used in KeyGenerator, Cipher and KeyAgreement.
+     static final SecureRandom RANDOM = new SecureRandom();
+ 
+-    // The defaultPolicy and exemptPolicy will be set up
+-    // in the static initializer.
+-    private static CryptoPermissions defaultPolicy = null;
+-    private static CryptoPermissions exemptPolicy = null;
+-
+-    // Map<Provider,?> of the providers we already have verified
+-    // value == PROVIDER_VERIFIED is successfully verified
+-    // value is failure cause Exception in error case
+-    private final static Map verificationResults = new IdentityHashMap();
+-
+-    // Map<Provider,?> of the providers currently being verified
+-    private final static Map verifyingProviders = new IdentityHashMap();
+-
+-    // Set the default value. May be changed in the static initializer.
+-    private static boolean isRestricted = true;
+-
+     /*
+      * Don't let anyone instantiate this.
+      */
+     private JceSecurity() {
+     }
+ 
+-    static {
+-        try {
+-            AccessController.doPrivileged(new PrivilegedExceptionAction() {
+-                public Object run() throws Exception {
+-                    setupJurisdictionPolicies();
+-                    return null;
+-                }
+-            });
+-
+-            isRestricted = defaultPolicy.implies(
+-                CryptoAllPermission.INSTANCE) ? false : true;
+-        } catch (Exception e) {
+-            SecurityException se =
+-                new SecurityException(
+-                    "Can not initialize cryptographic mechanism");
+-            se.initCause(e);
+-            throw se;
+-        }
+-    }
+-
+     static Instance getInstance(String type, Class clazz, String algorithm,
+             String provider) throws NoSuchAlgorithmException,
+             NoSuchProviderException {
+         Service s = GetInstance.getService(type, algorithm, provider);
+-        Exception ve = getVerificationResult(s.getProvider());
+-        if (ve != null) {
+-            String msg = "JCE cannot authenticate the provider " + provider;
+-            throw (NoSuchProviderException)
+-                                new NoSuchProviderException(msg).initCause(ve);
+-        }
+         return GetInstance.getInstance(s, clazz);
+     }
+ 
+     static Instance getInstance(String type, Class clazz, String algorithm,
+             Provider provider) throws NoSuchAlgorithmException {
+         Service s = GetInstance.getService(type, algorithm, provider);
+-        Exception ve = JceSecurity.getVerificationResult(provider);
+-        if (ve != null) {
+-            String msg = "JCE cannot authenticate the provider "
+-                + provider.getName();
+-            throw new SecurityException(msg, ve);
+-        }
+         return GetInstance.getInstance(s, clazz);
+     }
+ 
+@@ -122,10 +73,6 @@
+         NoSuchAlgorithmException failure = null;
+         for (Iterator t = services.iterator(); t.hasNext(); ) {
+             Service s = (Service)t.next();
+-            if (canUseProvider(s.getProvider()) == false) {
+-                // allow only signed providers
+-                continue;
+-            }
+             try {
+                 Instance instance = GetInstance.getInstance(s, clazz);
+                 return instance;
+@@ -137,198 +84,10 @@
+                 + " not available", failure);
+     }
+ 
+-    /**
+-     * Verify if the JAR at URL codeBase is a signed exempt application
+-     * JAR file and returns the permissions bundled with the JAR.
+-     *
+-     * @throws Exception on error
+-     */
+-    static CryptoPermissions verifyExemptJar(URL codeBase) throws Exception {
+-        JarVerifier jv = new JarVerifier(codeBase, true);
+-        jv.verify();
+-        return jv.getPermissions();
+-    }
+-
+-    /**
+-     * Verify if the JAR at URL codeBase is a signed provider JAR file.
+-     *
+-     * @throws Exception on error
+-     */
+-    static void verifyProviderJar(URL codeBase) throws Exception {
+-        // Verify the provider JAR file and all
+-        // supporting JAR files if there are any.
+-        JarVerifier jv = new JarVerifier(codeBase, false);
+-        jv.verify();
+-    }
+-
+-    private final static Object PROVIDER_VERIFIED = Boolean.TRUE;
+-
+-    /*
+-     * Verify that the provider JAR files are signed properly, which
+-     * means the signer's certificate can be traced back to a
+-     * JCE trusted CA.
+-     * Return null if ok, failure Exception if verification failed.
+-     */
+-    static synchronized Exception getVerificationResult(Provider p) {
+-        Object o = verificationResults.get(p);
+-        if (o == PROVIDER_VERIFIED) {
+-            return null;
+-        } else if (o != null) {
+-            return (Exception)o;
+-        }
+-        if (verifyingProviders.get(p) != null) {
+-            // this method is static synchronized, must be recursion
+-            // return failure now but do not save the result
+-            return new NoSuchProviderException("Recursion during verification");
+-        }
+-        try {
+-            verifyingProviders.put(p, Boolean.FALSE);
+-            URL providerURL = getCodeBase(p.getClass());
+-            verifyProviderJar(providerURL);
+-            // Verified ok, cache result
+-            verificationResults.put(p, PROVIDER_VERIFIED);
+-            return null;
+-        } catch (Exception e) {
+-            verificationResults.put(p, e);
+-            return e;
+-        } finally {
+-            verifyingProviders.remove(p);
+-        }
+-    }
+-
+-    // return whether this provider is properly signed and can be used by JCE
++    // Used to return whether this provider is properly signed and
++    // can be used by JCE. These days just returns true. Still used
++    // in SecretKeyFactory, KeyGenerator, Mac and KeyAgreement.
+     static boolean canUseProvider(Provider p) {
+-        return getVerificationResult(p) == null;
+-    }
+-
+-    // dummy object to represent null
+-    private static final URL NULL_URL;
+-
+-    static {
+-        try {
+-            NULL_URL = new URL("http://null.sun.com/");
+-        } catch (Exception e) {
+-            throw new RuntimeException(e);
+-        }
+-    }
+-
+-    // reference to a Map we use as a cache for codebases
+-    private static final Map codeBaseCacheRef = new WeakHashMap();
+-
+-    /*
+-     * Retuns the CodeBase for the given class.
+-     */
+-    static URL getCodeBase(final Class clazz) {
+-        URL url = (URL)codeBaseCacheRef.get(clazz);
+-        if (url == null) {
+-            url = (URL)AccessController.doPrivileged(new PrivilegedAction() {
+-                public Object run() {
+-                    ProtectionDomain pd = clazz.getProtectionDomain();
+-                    if (pd != null) {
+-                        CodeSource cs = pd.getCodeSource();
+-                        if (cs != null) {
+-                            return cs.getLocation();
+-                        }
+-                    }
+-                    return NULL_URL;
+-                }
+-            });
+-            codeBaseCacheRef.put(clazz, url);
+-        }
+-        return (url == NULL_URL) ? null : url;
+-    }
+-
+-    private static void setupJurisdictionPolicies() throws Exception {
+-        String javaHomeDir = System.getProperty("java.home");
+-        String sep = File.separator;
+-        String pathToPolicyJar = javaHomeDir + sep + "lib" + sep +
+-            "security" + sep;
+-
+-        File exportJar = new File(pathToPolicyJar, "US_export_policy.jar");
+-        File importJar = new File(pathToPolicyJar, "local_policy.jar");
+-        URL jceCipherURL = ClassLoader.getSystemResource
+-                ("javax/crypto/Cipher.class");
+-
+-        if ((jceCipherURL == null) ||
+-                !exportJar.exists() || !importJar.exists()) {
+-            throw new SecurityException
+-                                ("Cannot locate policy or framework files!");
+-        }
+-
+-        // Read jurisdiction policies.
+-        CryptoPermissions defaultExport = new CryptoPermissions();
+-        CryptoPermissions exemptExport = new CryptoPermissions();
+-        loadPolicies(exportJar, defaultExport, exemptExport);
+-
+-        CryptoPermissions defaultImport = new CryptoPermissions();
+-        CryptoPermissions exemptImport = new CryptoPermissions();
+-        loadPolicies(importJar, defaultImport, exemptImport);
+-
+-        // Merge the export and import policies for default applications.
+-        if (defaultExport.isEmpty() || defaultImport.isEmpty()) {
+-            throw new SecurityException("Missing mandatory jurisdiction " +
+-                                        "policy files");
+-        }
+-        defaultPolicy = defaultExport.getMinimum(defaultImport);
+-
+-        // Merge the export and import policies for exempt applications.
+-        if (exemptExport.isEmpty())  {
+-            exemptPolicy = exemptImport.isEmpty() ? null : exemptImport;
+-        } else {
+-            exemptPolicy = exemptExport.getMinimum(exemptImport);
+-        }
+-    }
+-
+-    /**
+-     * Load the policies from the specified file. Also checks that the
+-     * policies are correctly signed.
+-     */
+-    private static void loadPolicies(File jarPathName,
+-                                     CryptoPermissions defaultPolicy,
+-                                     CryptoPermissions exemptPolicy)
+-        throws Exception {
+-
+-        JarFile jf = new JarFile(jarPathName);
+-
+-        Enumeration entries = jf.entries();
+-        while (entries.hasMoreElements()) {
+-            JarEntry je = (JarEntry)entries.nextElement();
+-            InputStream is = null;
+-            try {
+-                if (je.getName().startsWith("default_")) {
+-                    is = jf.getInputStream(je);
+-                    defaultPolicy.load(is);
+-                } else if (je.getName().startsWith("exempt_")) {
+-                    is = jf.getInputStream(je);
+-                    exemptPolicy.load(is);
+-                } else {
+-                    continue;
+-                }
+-            } finally {
+-                if (is != null) {
+-                    is.close();
+-                }
+-            }
+-
+-            // Enforce the signer restraint, i.e. signer of JCE framework
+-            // jar should also be the signer of the two jurisdiction policy
+-            // jar files.
+-            JarVerifier.verifyPolicySigned(je.getCertificates());
+-        }
+-        // Close and nullify the JarFile reference to help GC.
+-        jf.close();
+-        jf = null;
+-    }
+-
+-    static CryptoPermissions getDefaultPolicy() {
+-        return defaultPolicy;
+-    }
+-
+-    static CryptoPermissions getExemptPolicy() {
+-        return exemptPolicy;
+-    }
+-
+-    static boolean isRestricted() {
+-        return isRestricted;
++        return true;
+     }
+ }
+diff -Nru openjdk.orig/jdk/src/share/classes/javax/crypto/JceSecurityManager.java openjdk/jdk/src/share/classes/javax/crypto/JceSecurityManager.java
+--- openjdk.orig/jdk/src/share/classes/javax/crypto/JceSecurityManager.java	2010-07-29 21:55:43.000000000 +0100
++++ openjdk/jdk/src/share/classes/javax/crypto/JceSecurityManager.java	1970-01-01 01:00:00.000000000 +0100
+@@ -1,252 +0,0 @@
+-/*
+- * Copyright (c) 1999, 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.  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 javax.crypto;
+-
+-import java.security.*;
+-import java.net.*;
+-import java.util.*;
+-import java.util.jar.*;
+-
+-/**
+- * The JCE security manager.
+- *
+- * <p>The JCE security manager is responsible for determining the maximum
+- * allowable cryptographic strength for a given applet/application, for a given
+- * algorithm, by consulting the configured jurisdiction policy files and
+- * the cryptographic permissions bundled with the applet/application.
+- *
+- * <p>Note that this security manager is never installed, only instantiated.
+- *
+- * @author Jan Luehe
+- *
+- * @since 1.4
+- */
+-
+-final class JceSecurityManager extends SecurityManager {
+-
+-    private static final CryptoPermissions defaultPolicy;
+-    private static final CryptoPermissions exemptPolicy;
+-    private static final CryptoAllPermission allPerm;
+-    private static final Vector TrustedCallersCache = new Vector(2);
+-    private static final Map exemptCache = new HashMap();
+-
+-    // singleton instance
+-    static final JceSecurityManager INSTANCE;
+-
+-    static {
+-        defaultPolicy = JceSecurity.getDefaultPolicy();
+-        exemptPolicy = JceSecurity.getExemptPolicy();
+-        allPerm = CryptoAllPermission.INSTANCE;
+-        INSTANCE = (JceSecurityManager)
+-              AccessController.doPrivileged(new PrivilegedAction() {
+-                  public Object run() {
+-                      return new JceSecurityManager();
+-                  }
+-              });
+-    }
+-
+-    private JceSecurityManager() {
+-        // empty
+-    }
+-
+-    /**
+-     * Returns the maximum allowable crypto strength for the given
+-     * applet/application, for the given algorithm.
+-     */
+-    CryptoPermission getCryptoPermission(String alg) {
+-        // Need to convert to uppercase since the crypto perm
+-        // lookup is case sensitive.
+-        alg = alg.toUpperCase(Locale.ENGLISH);
+-
+-        // If CryptoAllPermission is granted by default, we return that.
+-        // Otherwise, this will be the permission we return if anything goes
+-        // wrong.
+-        CryptoPermission defaultPerm = getDefaultPermission(alg);
+-        if (defaultPerm == CryptoAllPermission.INSTANCE) {
+-            return defaultPerm;
+-        }
+-
+-        // Determine the codebase of the caller of the JCE API.
+-        // This is the codebase of the first class which is not in
+-        // javax.crypto.* packages.
+-        // NOTE: javax.crypto.* package maybe subject to package
+-        // insertion, so need to check its classloader as well.
+-        Class[] context = getClassContext();
+-        URL callerCodeBase = null;
+-        int i;
+-        for (i=0; i<context.length; i++) {
+-            Class cls = context[i];
+-            callerCodeBase = JceSecurity.getCodeBase(cls);
+-            if (callerCodeBase != null) {
+-                break;
+-            } else {
+-                if (cls.getName().startsWith("javax.crypto.")) {
+-                    // skip jce classes since they aren't the callers
+-                    continue;
+-                }
+-                // use default permission when the caller is system classes
+-                return defaultPerm;
+-            }
+-        }
+-
+-        if (i == context.length) {
+-            return defaultPerm;
+-        }
+-
+-        CryptoPermissions appPerms;
+-        synchronized (this.getClass()) {
+-            if (exemptCache.containsKey(callerCodeBase)) {
+-                appPerms = (CryptoPermissions)exemptCache.get(callerCodeBase);
+-            } else {
+-                appPerms = getAppPermissions(callerCodeBase);
+-                exemptCache.put(callerCodeBase, appPerms);
+-            }
+-        }
+-
+-        if (appPerms == null) {
+-            return defaultPerm;
+-        }
+-
+-        // If the app was granted the special CryptoAllPermission, return that.
+-        if (appPerms.implies(allPerm)) {
+-            return allPerm;
+-        }
+-
+-        // Check if the crypto permissions granted to the app contain a
+-        // crypto permission for the requested algorithm that does not require
+-        // any exemption mechanism to be enforced.
+-        // Return that permission, if present.
+-        PermissionCollection appPc = appPerms.getPermissionCollection(alg);
+-        if (appPc == null) {
+-            return defaultPerm;
+-        }
+-        Enumeration enum_ = appPc.elements();
+-        while (enum_.hasMoreElements()) {
+-            CryptoPermission cp = (CryptoPermission)enum_.nextElement();
+-            if (cp.getExemptionMechanism() == null) {
+-                return cp;
+-            }
+-        }
+-
+-        // Check if the jurisdiction file for exempt applications contains
+-        // any entries for the requested algorithm.
+-        // If not, return the default permission.
+-        PermissionCollection exemptPc =
+-            exemptPolicy.getPermissionCollection(alg);
+-        if (exemptPc == null) {
+-            return defaultPerm;
+-        }
+-
+-        // In the jurisdiction file for exempt applications, go through the
+-        // list of CryptoPermission entries for the requested algorithm, and
+-        // stop at the first entry:
+-        //  - that is implied by the collection of crypto permissions granted
+-        //    to the app, and
+-        //  - whose exemption mechanism is available from one of the
+-        //    registered CSPs
+-        enum_ = exemptPc.elements();
+-        while (enum_.hasMoreElements()) {
+-            CryptoPermission cp = (CryptoPermission)enum_.nextElement();
+-            try {
+-                ExemptionMechanism.getInstance(cp.getExemptionMechanism());
+-                if (cp.getAlgorithm().equals(
+-                                      CryptoPermission.ALG_NAME_WILDCARD)) {
+-                    CryptoPermission newCp;
+-                    if (cp.getCheckParam()) {
+-                        newCp = new CryptoPermission(
+-                                alg, cp.getMaxKeySize(),
+-                                cp.getAlgorithmParameterSpec(),
+-                                cp.getExemptionMechanism());
+-                    } else {
+-                        newCp = new CryptoPermission(
+-                                alg, cp.getMaxKeySize(),
+-                                cp.getExemptionMechanism());
+-                    }
+-                    if (appPerms.implies(newCp)) {
+-                        return newCp;
+-                    }
+-                }
+-
+-                if (appPerms.implies(cp)) {
+-                    return cp;
+-                }
+-            } catch (Exception e) {
+-                continue;
+-            }
+-        }
+-        return defaultPerm;
+-    }
+-
+-    private static CryptoPermissions getAppPermissions(URL callerCodeBase) {
+-        // Check if app is exempt, and retrieve the permissions bundled with it
+-        try {
+-            return JceSecurity.verifyExemptJar(callerCodeBase);
+-        } catch (Exception e) {
+-            // Jar verification fails
+-            return null;
+-        }
+-
+-    }
+-
+-    /**
+-     * Returns the default permission for the given algorithm.
+-     */
+-    private CryptoPermission getDefaultPermission(String alg) {
+-        Enumeration enum_ =
+-            defaultPolicy.getPermissionCollection(alg).elements();
+-        return (CryptoPermission)enum_.nextElement();
+-    }
+-
+-    // See  bug 4341369 & 4334690 for more info.
+-    boolean isCallerTrusted() {
+-        // Get the caller and its codebase.
+-        Class[] context = getClassContext();
+-        URL callerCodeBase = null;
+-        int i;
+-        for (i=0; i<context.length; i++) {
+-            callerCodeBase = JceSecurity.getCodeBase(context[i]);
+-            if (callerCodeBase != null) {
+-                break;
+-            }
+-        }
+-        // The caller is in the JCE framework.
+-        if (i == context.length) {
+-            return true;
+-        }
+-        //The caller has been verified.
+-        if (TrustedCallersCache.contains(context[i])) {
+-            return true;
+-        }
+-        // Check whether the caller is a trusted provider.
+-        try {
+-            JceSecurity.verifyProviderJar(callerCodeBase);
+-        } catch (Exception e2) {
+-            return false;
+-        }
+-        TrustedCallersCache.addElement(context[i]);
+-        return true;
+-    }
+-}
+diff -Nru openjdk.orig/jdk/test/com/sun/crypto/provider/Cipher/UTIL/TestUtil.java openjdk/jdk/test/com/sun/crypto/provider/Cipher/UTIL/TestUtil.java
+--- openjdk.orig/jdk/test/com/sun/crypto/provider/Cipher/UTIL/TestUtil.java	2010-07-29 21:56:21.000000000 +0100
++++ openjdk/jdk/test/com/sun/crypto/provider/Cipher/UTIL/TestUtil.java	2010-09-01 10:37:32.934684089 +0100
+@@ -44,18 +44,9 @@
+         }
+     }
+ 
+-    private static boolean isUnlimitedPolicy() throws IOException {
++    private static boolean isUnlimitedPolicy() {
+         if (instance == null) {
+-            String jreDir = System.getProperty("java.home");
+-            String localPolicyPath = jreDir + File.separator + "lib" +
+-                File.separator + "security" + File.separator +
+-                "local_policy.jar";
+-            JarFile localPolicy = new JarFile(localPolicyPath);
+-            if (localPolicy.getEntry("exempt_local.policy") == null) {
+-                return true;
+-            } else {
+-                return false;
+-            }
++            return true;
+         } else {
+             return instance.isUnlimited;
+         }
diff --git a/hotspot-gcc-pr36917.patch b/hotspot-gcc-pr36917.patch
new file mode 100644
index 0000000..4982977
--- /dev/null
+++ b/hotspot-gcc-pr36917.patch
@@ -0,0 +1,9 @@
+--- openjdk/hotspot/make/linux/makefiles/i486.make~	2008-07-10 22:04:18.000000000 +0200
++++ openjdk/hotspot/make/linux/makefiles/i486.make	2008-07-24 12:23:11.344839305 +0200
+@@ -34,3 +34,6 @@
+ CFLAGS += -DVM_LITTLE_ENDIAN
+ 
+ OPT_CFLAGS/compactingPermGenGen.o = -O1
++
++# GCC PR tree-optimization/36917
++OPT_CFLAGS/ciTypeFlow.o += $(OPT_CFLAGS) -fno-ivopts
diff --git a/java-1.7.0-openjdk-accessible-toolkit.patch b/java-1.7.0-openjdk-accessible-toolkit.patch
new file mode 100644
index 0000000..222dcfb
--- /dev/null
+++ b/java-1.7.0-openjdk-accessible-toolkit.patch
@@ -0,0 +1,16 @@
+diff -uNr openjdk-orig/jdk/src/share/classes/java/awt/Toolkit.java openjdk/jdk/src/share/classes/java/awt/Toolkit.java
+--- openjdk-orig/jdk/src/share/classes/java/awt/Toolkit.java	2009-01-23 11:59:47.000000000 -0500
++++ openjdk/jdk/src/share/classes/java/awt/Toolkit.java	2009-01-23 12:05:20.000000000 -0500
+@@ -871,7 +871,11 @@
+                         return null;
+                     }
+                 });
+-                loadAssistiveTechnologies();
++                try {
++                    loadAssistiveTechnologies();
++                } catch ( AWTError error) {
++                    // ignore silently
++                }
+             } finally {
+                 // Make sure to always re-enable the JIT.
+                 java.lang.Compiler.enable();
diff --git a/java-1.7.0-openjdk-debugdocs.patch b/java-1.7.0-openjdk-debugdocs.patch
new file mode 100644
index 0000000..dbfebb2
--- /dev/null
+++ b/java-1.7.0-openjdk-debugdocs.patch
@@ -0,0 +1,12 @@
+--- oldMakefile	2008-07-02 17:48:01.000000000 -0400
++++ openjdk/Makefile	2008-07-02 17:48:09.000000000 -0400
+@@ -176,8 +176,7 @@
+ 
+ COMMON_DEBUG_FLAGS= \
+ 	DEBUG_NAME=$(DEBUG_NAME) \
+-	ALT_OUTPUTDIR=$(_OUTPUTDIR)-$(DEBUG_NAME) \
+-	NO_DOCS=true
++	ALT_OUTPUTDIR=$(_OUTPUTDIR)-$(DEBUG_NAME)
+ 
+ product_build: setup
+ 	@$(ECHO) $@ build started: `$(DATE) '+%y-%m-%d %H:%M'`
diff --git a/java-1.7.0-openjdk-debuginfo.patch b/java-1.7.0-openjdk-debuginfo.patch
new file mode 100644
index 0000000..263d59e
--- /dev/null
+++ b/java-1.7.0-openjdk-debuginfo.patch
@@ -0,0 +1,20 @@
+--- openjdk/hotspot/build/linux/makefiles/saproc.make_back	2009-12-14 13:35:46.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/saproc.make	2009-12-14 13:36:47.000000000 +0100
+@@ -67,6 +67,7 @@
+ 	           -I$(BOOT_JAVA_HOME)/include/$(Platform_os_family)    \
+ 	           $(SASRCFILES)                                        \
+ 	           $(SA_LFLAGS)                                         \
++		   -g							\
+ 	           -o $@                                                \
+ 	           -lthread_db
+ 
+--- openjdk/hotspot/build/linux/makefiles/jsig.make_back	2009-12-14 13:34:56.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/jsig.make	2009-12-14 13:35:31.000000000 +0100
+@@ -44,6 +44,7 @@
+ $(LIBJSIG): $(JSIGSRCDIR)/jsig.c $(LIBJSIG_MAPFILE)
+ 	@echo Making signal interposition lib...
+ 	$(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
++			 -g						  \
+                          $(LFLAGS_JSIG) -o $@ $< -ldl
+ 
+ install_jsig: $(LIBJSIG)
diff --git a/java-1.7.0-openjdk-java-access-bridge-idlj.patch b/java-1.7.0-openjdk-java-access-bridge-idlj.patch
new file mode 100644
index 0000000..6936fa6
--- /dev/null
+++ b/java-1.7.0-openjdk-java-access-bridge-idlj.patch
@@ -0,0 +1,71 @@
+--- oldjava-access-bridge-1.23.0/idlgen/Makefile.am	2008-06-03 02:47:29.000000000 -0400
++++ java-access-bridge-1.23.0/idlgen/Makefile.am	2008-07-31 15:13:26.000000000 -0400
+@@ -3,7 +3,7 @@
+ JARFILES=../gnome-java-bridge.jar ../$(EXTRA_JARFILES)
+ CLASSES=$(wildcard org/GNOME/Bonobo/*.class org/GNOME/Accessibility/*.class)
+ JAR=jar
+-IDLJ_FLAGS=-emitAll $(IDLJ_IDLDIRS)
++IDLJ_FLAGS=-J-client -emitAll $(IDLJ_IDLDIRS)
+ 
+ BONOBO_ACT_IDLFILES=$(wildcard $(BONOBO_ACT_IDLDIR)/*.idl)
+ BONOBO_IDLFILES=$(wildcard $(BONOBO_IDLDIR)/*.idl)
+--- oldjava-access-bridge-1.23.0/idlgen/Makefile.in	2008-06-23 23:34:59.000000000 -0400
++++ java-access-bridge-1.23.0/idlgen/Makefile.in	2008-07-31 15:13:45.000000000 -0400
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.10 from Makefile.am.
++# Makefile.in generated by automake 1.10.1 from Makefile.am.
+ # @configure_input@
+ 
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
++# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -140,7 +140,7 @@
+ SUBDIRS = org
+ JARFILES = ../gnome-java-bridge.jar ../$(EXTRA_JARFILES)
+ CLASSES = $(wildcard org/GNOME/Bonobo/*.class org/GNOME/Accessibility/*.class)
+-IDLJ_FLAGS = -emitAll $(IDLJ_IDLDIRS)
++IDLJ_FLAGS = -J-client -emitAll $(IDLJ_IDLDIRS)
+ BONOBO_ACT_IDLFILES = $(wildcard $(BONOBO_ACT_IDLDIR)/*.idl)
+ BONOBO_IDLFILES = $(wildcard $(BONOBO_IDLDIR)/*.idl)
+ AT_SPI_IDLFILES = $(wildcard $(AT_SPI_IDLDIR)/*.idl)
+@@ -253,8 +253,8 @@
+ 	unique=`for i in $$list; do \
+ 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ 	  done | \
+-	  $(AWK) '    { files[$$0] = 1; } \
+-	       END { for (i in files) print i; }'`; \
++	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
++	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ 	mkid -fID $$unique
+ tags: TAGS
+ 
+@@ -279,8 +279,8 @@
+ 	unique=`for i in $$list; do \
+ 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ 	  done | \
+-	  $(AWK) '    { files[$$0] = 1; } \
+-	       END { for (i in files) print i; }'`; \
++	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
++	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ 	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ 	  test -n "$$unique" || unique=$$empty_fix; \
+ 	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+@@ -290,13 +290,12 @@
+ CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+ 		$(TAGS_FILES) $(LISP)
+ 	tags=; \
+-	here=`pwd`; \
+ 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+ 	unique=`for i in $$list; do \
+ 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ 	  done | \
+-	  $(AWK) '    { files[$$0] = 1; } \
+-	       END { for (i in files) print i; }'`; \
++	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
++	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ 	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ 	     $$tags $$unique
diff --git a/java-1.7.0-openjdk-java-access-bridge-security.patch b/java-1.7.0-openjdk-java-access-bridge-security.patch
new file mode 100644
index 0000000..784a359
--- /dev/null
+++ b/java-1.7.0-openjdk-java-access-bridge-security.patch
@@ -0,0 +1,11 @@
+--- jsorig	2008-12-05 11:43:39.000000000 -0500
++++ openjdk/jdk/src/share/lib/security/java.security	2008-12-05 11:43:45.000000000 -0500
+@@ -127,7 +127,7 @@
+ # passed to checkPackageAccess unless the
+ # corresponding RuntimePermission ("accessClassInPackage."+package) has
+ # been granted.
+-package.access=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.
++package.access=sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,org.GNOME.Accessibility.,org.GNOME.Bonobo.
+ 
+ #
+ # List of comma-separated packages that start with or equal this string
diff --git a/java-1.7.0-openjdk-java-access-bridge-tck.patch b/java-1.7.0-openjdk-java-access-bridge-tck.patch
new file mode 100644
index 0000000..36a23c0
--- /dev/null
+++ b/java-1.7.0-openjdk-java-access-bridge-tck.patch
@@ -0,0 +1,25 @@
+--- java-access-bridge-1.22.0/bridge/org/GNOME/Accessibility/JavaBridge.java.orig	2008-05-22 11:27:00.000000000 -0400
++++ java-access-bridge-1.22.0/bridge/org/GNOME/Accessibility/JavaBridge.java	2008-05-22 11:28:02.000000000 -0400
+@@ -34,6 +34,9 @@
+ import javax.accessibility.AccessibleRole;
+ import javax.accessibility.AccessibleText;
+ import javax.accessibility.AccessibleEditableText;
++import java.security.PrivilegedAction;
++import java.security.AccessController;
++
+ 
+ public class JavaBridge {
+ 
+@@ -332,7 +335,11 @@
+ 			System.err.println ("Java Accessibility Bridge for GNOME loaded.\n");
+ 
+ 		// Not sure what kind of arguments should be sent to ORB
+-		String vm_rev = System.getProperty("java.version");
++		String vm_rev = (String) AccessController.doPrivileged(new PrivilegedAction() {
++			public java.lang.Object run() {
++				return System.getProperty("java.version");
++			}
++		});	
+ 
+ 		if (vm_rev.compareTo("1.4.0") < 0) {
+ 			System.err.println("WARNING: Java Accessibility Bridge " +
diff --git a/java-1.7.0-openjdk.spec b/java-1.7.0-openjdk.spec
new file mode 100644
index 0000000..766cbdf
--- /dev/null
+++ b/java-1.7.0-openjdk.spec
@@ -0,0 +1,1389 @@
+# If gcjbootstrap is 1 OpenJDK is bootstrapped against
+# java-1.5.0-gcj-devel.  If gcjbootstrap is 0 OpenJDK is built against
+# java-1.6.0-openjdk-devel.
+%global gcjbootstrap 1
+
+# If debug is 1, OpenJDK is built with all debug info present.
+%global debug 0
+
+# If runtests is 0 test suites will not be run.
+%global runtests 0
+
+%global openjdkver 147
+%global openjdkbuildver b%{openjdkver}
+%global openjdkdate 27_jun_2011
+
+%global snapshot_date 20110729
+%global icedtea_jdk7_snapshot 3defd24c2671
+%global corba_snapshot 616c760dc288
+%global hotspot_snapshot d438a5890756
+%global jaxp_snapshot c40983d6ae70
+%global jaxws_snapshot 83db5e316798
+%global jdk_snapshot 9cf5ed6b45d6
+%global langtools_snapshot 0df09c966a29
+
+%global accessmajorver 1.23
+%global accessminorver 0
+%global accessver %{accessmajorver}.%{accessminorver}
+%global accessurl http://ftp.gnome.org/pub/GNOME/sources/java-access-bridge/
+
+%global jaxpurl     http://dlc.sun.com.edgesuite.net/jaxp/1.4.5/jaxp145_01.zip
+%global jafurl      https://java.net/downloads/jax-ws/JDK7/jdk7-jaf-2010_08_19.zip
+%global jaxwsurl    http://dlc.sun.com.edgesuite.net/glassfish/components/jax-ws/openjdk/jdk7/jdk7-jaxws2_2_4-b03-2011_05_27.zip
+
+%global openjdkurlbase http://www.java.net/download/openjdk/jdk7/promoted/
+%global openjdkurl %{openjdkurlbase}%{openjdkbuildver}/
+%global openjdkzip  openjdk-7-fcs-src-%{openjdkbuildver}-%{openjdkdate}.zip
+
+%global mauvedate 2008-10-22
+
+%global multilib_arches ppc64 sparc64 x86_64
+
+%global jit_arches %{ix86} x86_64 sparcv9 sparc64
+
+%ifarch x86_64
+%global archbuild amd64
+%global archinstall amd64
+%endif
+%ifarch ppc
+%global archbuild ppc
+%global archinstall ppc
+%endif
+%ifarch ppc64
+%global archbuild ppc64
+%global archinstall ppc64
+%endif
+%ifarch i386
+%global archbuild i586
+%global archinstall i386
+%endif
+%ifarch i686
+%global archbuild i586
+%global archinstall i386
+%endif
+%ifarch ia64
+%global archbuild ia64
+%global archinstall ia64
+%endif
+%ifarch s390
+%global archbuild s390x
+%global archinstall s390x
+%endif
+# 32 bit sparc, optimized for v9
+%ifarch sparcv9
+%global archbuild sparc
+%global archinstall sparc
+%endif
+# 64 bit sparc
+%ifarch sparc64
+%global archbuild sparcv9
+%global archinstall sparcv9
+%endif
+%ifnarch %{jit_arches}
+%global archbuild %{_arch}
+%global archinstall %{_arch}
+%endif
+
+%if %{debug}
+%global debugbuild debug_build
+%else
+%global debugbuild %{nil}
+%endif
+
+%global buildoutputdir openjdk/build/linux-%{archbuild}
+
+%global with_pulseaudio 1
+
+%ifarch %{jit_arches}
+%global with_systemtap 1
+%else
+%global with_systemtap %{nil}
+%endif
+
+# Convert an absolute path to a relative path.  Each symbolic link is
+# specified relative to the directory in which it is installed so that
+# it will resolve properly within chrooted installations.
+%global script 'use File::Spec; print File::Spec->abs2rel($ARGV[0], $ARGV[1])'
+%global abs2rel %{__perl} -e %{script}
+
+# Hard-code libdir on 64-bit architectures to make the 64-bit JDK
+# simply be another alternative.
+%ifarch %{multilib_arches}
+%global syslibdir       %{_prefix}/lib64
+%global _libdir         %{_prefix}/lib
+%global archname        %{name}.%{_arch}
+%else
+%global syslibdir       %{_libdir}
+%global archname        %{name}
+%endif
+
+# Standard JPackage naming and versioning defines.
+%global origin          openjdk
+%global priority        17000
+%global javaver         1.7.0
+%global buildver        0
+
+# Standard JPackage directories and symbolic links.
+# Make 64-bit JDKs just another alternative on 64-bit architectures.
+%ifarch %{multilib_arches}
+%global sdklnk          java-%{javaver}-%{origin}.%{_arch}
+%global jrelnk          jre-%{javaver}-%{origin}.%{_arch}
+%global sdkdir          %{name}-%{version}.%{_arch}
+%else
+%global sdklnk          java-%{javaver}-%{origin}
+%global jrelnk          jre-%{javaver}-%{origin}
+%global sdkdir          %{name}-%{version}
+%endif
+%global jredir          %{sdkdir}/jre
+%global sdkbindir       %{_jvmdir}/%{sdklnk}/bin
+%global jrebindir       %{_jvmdir}/%{jrelnk}/bin
+%ifarch %{multilib_arches}
+%global jvmjardir       %{_jvmjardir}/%{name}-%{version}.%{_arch}
+%else
+%global jvmjardir       %{_jvmjardir}/%{name}-%{version}
+%endif
+
+%ifarch %{jit_arches}
+# Where to install systemtap tapset (links)
+# We would like these to be in a package specific subdir,
+# but currently systemtap doesn't support that, so we have to
+# use the root tapset dir for now. To distinquish between 64
+# and 32 bit architectures we place the tapsets under the arch
+# specific dir (note that systemtap will only pickup the tapset
+# for the primary arch for now). Systemtap uses the machine name
+# aka build_cpu as architecture specific directory name.
+%global tapsetdir /usr/share/systemtap/tapset/%{_build_cpu}
+%endif
+
+# Prevent brp-java-repack-jars from being run.
+%global __jar_repack 0
+
+Name:    java-%{javaver}-%{origin}
+Version: %{javaver}.%{buildver}
+Release: 0.1.%{snapshot_date}%{?dist}
+# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons,
+# and this change was brought into RHEL-4.  java-1.5.0-ibm packages
+# also included the epoch in their virtual provides.  This created a
+# situation where in-the-wild java-1.5.0-ibm packages provided "java =
+# 1:1.5.0".  In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is
+# interpreted as 0:1.6.0.  So the "java >= 1.6.0" requirement would be
+# satisfied by the 1:1.5.0 packages.  Thus we need to set the epoch in
+# JDK package >= 1.6.0 to 1, and packages referring to JDK virtual
+# provides >= 1.6.0 must specify the epoch, "java >= 1:1.6.0".
+Epoch:   1
+Summary: OpenJDK Runtime Environment
+Group:   Development/Languages
+
+License:  ASL 1.1 and ASL 2.0 and GPL+ and GPLv2 and GPLv2 with exceptions and LGPL+ and LGPLv2 and MPLv1.0 and MPLv1.1 and Public Domain and W3C
+URL:      http://openjdk.java.net/
+
+# hg clone http://hg.openjdk.java.net/icedtea/jdk7/rev/%{icedtea_jdk7_snapshot} openjdk
+# hg clone http://hg.openjdk.java.net/icedtea/jdk7/corba/rev/%{corba_snapshot} openjdk/corba
+# hg clone http://hg.openjdk.java.net/icedtea/jdk7/hotspot/rev/%{hotspot_snapshot} openjdk/hotspot
+# hg clone http://hg.openjdk.java.net/icedtea/jdk7/jaxp/rev/%{jaxp_snapshot} openjdk/jaxp
+# hg clone http://hg.openjdk.java.net/icedtea/jdk7/jaxws/rev/%{jaxws_snapshot} openjdk/jaxws
+# hg clone http://hg.openjdk.java.net/icedtea/jdk7/jdk/rev/%{jdk_snapshot} openjdk/jdk
+# hg clone http://hg.openjdk.java.net/icedtea/jdk7/langtools/rev/%{langtools_snapshot} openjdk/langtools
+# find openjdk -name ".hg" -exec rm -rf '{}' \;
+# find openjdk -name ".hgtags" -exec rm -rf '{}' \;
+# tar czf icedtea-jdk7.tar.gz openjdk
+Source0:  icedtea-jdk7.tar.gz
+
+# Gnome access bridge
+Source1:  %{accessurl}%{accessmajorver}/java-access-bridge-%{accessver}.tar.bz2
+
+# README file
+Source2:  README.src
+
+# Mauve test suite
+# FIXME: Is this applicable for 7?
+Source3:  mauve-%{mauvedate}.tar.gz
+Source4:  mauve_tests
+
+# jaxp drop
+Source5:  %{jaxpurl}
+
+# jaf drop
+Source6:  %{jafurl}
+
+# jaxws drop
+Source7:  %{jaxwsurl}
+
+# javac wrapper (used during bootstrap to strip what ecj doesn't support)
+Source8: javac-wrapper
+
+# Auto-generated files (used only in bootstrap)
+# To reproduce: 
+# build OpenJDK7 tarball above with any JDK
+# mv generated.build generated
+# tar czf generated-files.tar.gz generated
+Source9: generated-files.tar.gz
+
+# Class rewrite to rewrite rhino heirarchy
+Source10: class-rewriter.tar.gz
+
+# Systemtap tapsets. Zipped up to keep it small.
+Source11: systemtap-tapset.tar.gz
+
+# .desktop files. Zipped up to keep it small.
+Source12: desktop-files.tar.gz
+
+# nss configuration file
+Source13: nss.cfg
+
+# FIXME: Taken from IcedTea snapshot 877ad5f00f69, but needs to be moved out
+# hg clone -r 877ad5f00f69 http://icedtea.classpath.org/hg/icedtea7
+Source14: pulseaudio.tar.gz
+
+# RPM/distribution specific patches
+
+# Allow TCK to pass with access bridge wired in
+Patch1:   java-1.7.0-openjdk-java-access-bridge-tck.patch
+
+# Adjust idlj compilation switches to match what system idlj supports
+Patch2:   java-1.7.0-openjdk-java-access-bridge-idlj.patch
+
+# Disable access to access-bridge packages by untrusted apps
+Patch3:   java-1.7.0-openjdk-java-access-bridge-security.patch
+
+# Ignore AWTError when assistive technologies are loaded 
+Patch4:   java-1.7.0-openjdk-accessible-toolkit.patch
+
+# Build docs even in debug
+Patch5:   java-1.7.0-openjdk-debugdocs.patch
+Patch6:   %{name}-debuginfo.patch
+
+#
+# OpenJDK specific patches
+#
+
+# Use correct -fPIC/-fpic flag on all platforms.
+Patch100: text-relocations.patch
+
+# Use system JPEG and zlib libraries.
+Patch101: libraries.patch
+
+# Add com.sun.image.codec.jpeg support
+Patch102: jpegclasses.patch
+
+# Produces the "expected" behavior for full screen applications or other
+# situations where developers wish to present elements that would cover things
+# like panels
+Patch103: override-redirect-metacity.patch
+
+# GCC 4.3 miscompilation failure fix:
+# http://icedtea.classpath.org/hg/icedtea/rev/f06de06e1ed4
+Patch104: hotspot-gcc-pr36917.patch
+
+# Add support for using an alternate jar tool in JDK building. 
+Patch105: alt-jar.patch
+
+# FIXME: Uses size_t and idx_t types [May be obsolete]
+Patch106: use-idx_t.patch
+
+# Cleans up crypto API to allow unlimited strength usage
+Patch107: clean-crypto.patch
+
+# FIXME: Hardens code, unknown origin [May be obsolete]
+Patch108: jvmtiEnv.patch
+
+# Add rhino jars to bootclasspath
+Patch109: update-bootclasspath.patch
+
+# Updates list of files to be compiled
+Patch110: javafiles.patch
+
+# Add rhino support
+Patch111: rhino.patch
+
+# We build from OpenJDK6 .. this causes some warnings. Make warnings non-fatal
+Patch112: make-warnings-nonfatal.patch
+
+# Tools are built with -source 6 -target 6 .. we need to remove diamond use in them
+Patch113: boot-jdk-source-diamond.patch
+
+#
+# Bootstrap patches (code with this is never shipped)
+#
+
+# Explicitly set javac, so that the bootstrap version is used
+Patch200: bootstrap-ant-javac.patch
+
+# Adjusted generated sources path to use prebuilt ones
+Patch201: bootstrap-corba-defs.patch
+
+# Do not use idlj to generate sources, as we use prebuilt ones
+Patch202: bootstrap-corba-idlj.patch
+
+# Disable decending into sources dir for generation
+Patch203: bootstrap-corba-no-gen.patch
+
+# Explicitly compile ORB.java
+Patch204: bootstrap-corba-orb.patch
+
+# Don't build demos in bootstrap
+Patch205: bootstrap-demos.patch
+
+# Change hex constants to be numbers instead of 0x... so that ecj can compile them right
+Patch206: bootstrap-ecj-fphexconstants.patch
+
+# Adjust opt flags to remove what ecj doesn't support
+Patch207: bootstrap-ecj-opts.patch
+
+# use pre-generated font config files
+Patch208: bootstrap-fontconfig.patch
+
+# Don't write auto-generation message in bootstrap
+Patch209: bootstrap-generated-comments.patch
+
+# Adjust bootclasspath to match what ecj has
+Patch210: bootstrap-xbootclasspath.patch
+
+# Wire in icedtea rt.jar (FIXME: name needs update, kept same for now to match icedtea name)
+Patch211: bootstrap-icedteart.patch
+
+# Wire in custom compiles rt classes
+Patch212: bootstrap-jar.patch
+
+# Compile inner opengl class explicitly
+Patch213: bootstrap-javah.patch
+
+# Disable ct.sym creation for bootstrap
+Patch214: bootstrap-symbols.patch
+
+# Disable icon generation for bootstrap
+Patch215: bootstrap-tobin.patch
+
+# Don't run test_gamma
+Patch216: bootstrap-test_gamma.patch
+
+# Disable requirement of module_lib path which bootstrap java_home doesn't have
+Patch217: bootstrap-tools.jar.patch
+
+# Allow -J opts to jar only if jar knows of them
+Patch218: bootstrap-jopt.patch
+
+# Explicitly add jaxp classes to classpath
+Patch219: bootstrap-jaxp-dependency.patch
+
+# Don't fork when generating stubs
+Patch220: bootstrap-genstubs-nofork.patch
+
+# Remove dependency on ProcessBuilder which is package private to Oracle implementation
+Patch221: bootstrap-break-processbuilder-dependency.patch
+
+# Allow to build with 1.5
+Patch222: bootstrap-revert-6973616.patch
+
+# Avoid trying to load system zone info provider and failing
+Patch223: bootstrap-revert-6941137.patch
+
+# Replace usage of string switch with if/elseif/else
+Patch224: bootstrap-ecj-stringswitch.patch
+
+# Allow langtools to use older jdk
+Patch225: bootstrap-langtools-force-old-jdk.patch
+
+# Access JDK sources and classes from langtools build
+Patch226: bootstrap-corba-dependencies.patch
+
+# Access langtools classes for Javadoc
+Patch227: bootstrap-jaxws-langtools-dependency.patch
+
+# Access JDK sources for com.sun.net.httpserver
+Patch228: bootstrap-jaxws-jdk-dependency.patch
+
+# Access JDK and generated sources to build servicability agent
+Patch229: bootstrap-hotspot-jdk-dependency.patch
+
+# Remove use of multi-catch and replace with regular multi-level catch
+Patch230: bootstrap-ecj-multicatch.patch
+
+# Remove use of try-with-resources and replace with manual close
+Patch231: bootstrap-ecj-trywithresources.patch
+
+# Disable auto-boxing and manally cast
+Patch232: bootstrap-ecj-autoboxing.patch
+
+# Use custom xslt processor
+Patch233: bootstrap-xsltproc.patch
+
+# Use constants from interface rather than impl
+Patch234: bootstrap-pr40188.patch
+
+# Remove use of diamond operator and replace with manual
+Patch235: bootstrap-ecj-diamond.patch
+
+# Adjust javah switches to only use what bootstrap version supports
+Patch236: bootstrap-javah-xbootclasspath.patch
+
+#
+# Optional component packages
+#
+
+# Make the ALSA based mixer the default when building with the pulseaudio based
+# mixer
+Patch300: pulse-soundproperties.patch
+
+# SystemTap support
+# Workaround for RH613824
+Patch301: systemtap-alloc-size-workaround.patch
+Patch302: systemtap-gcc-4.5.patch
+Patch303: systemtap.patch
+
+BuildRequires: autoconf
+BuildRequires: automake
+BuildRequires: alsa-lib-devel
+BuildRequires: cups-devel
+BuildRequires: desktop-file-utils
+BuildRequires: giflib-devel
+BuildRequires: libX11-devel
+BuildRequires: libXi-devel
+BuildRequires: libXp-devel
+BuildRequires: libXt-devel
+BuildRequires: libXtst-devel
+BuildRequires: libjpeg-devel
+BuildRequires: libpng-devel
+BuildRequires: wget
+BuildRequires: xalan-j2
+BuildRequires: xerces-j2
+BuildRequires: xorg-x11-proto-devel
+BuildRequires: mercurial
+BuildRequires: ant
+BuildRequires: ant-nodeps
+BuildRequires: libXinerama-devel
+BuildRequires: rhino
+BuildRequires: redhat-lsb
+%if %{gcjbootstrap}
+BuildRequires: java-1.5.0-gcj-devel
+%else
+BuildRequires: java-1.6.0-openjdk-devel
+%endif
+# Mauve build requirements.
+BuildRequires: xorg-x11-server-Xvfb
+BuildRequires: xorg-x11-fonts-Type1
+BuildRequires: xorg-x11-fonts-misc
+BuildRequires: freetype-devel >= 2.3.0
+BuildRequires: fontconfig
+BuildRequires: ecj
+# Java Access Bridge for GNOME build requirements.
+BuildRequires: at-spi-devel
+BuildRequires: gawk
+BuildRequires: libbonobo-devel
+BuildRequires: pkgconfig >= 0.9.0
+BuildRequires: xorg-x11-utils
+# PulseAudio build requirements.
+%if %{with_pulseaudio}
+BuildRequires: pulseaudio-libs-devel >= 0.9.11
+BuildRequires: pulseaudio >= 0.9.11
+%endif
+# Zero-assembler build requirement.
+%ifnarch %{jit_arches}
+BuildRequires: libffi-devel
+%endif
+
+ExclusiveArch: x86_64 i686
+
+# cacerts build requirement.
+BuildRequires: openssl
+# execstack build requirement.
+BuildRequires: prelink
+%ifarch %{jit_arches}
+#systemtap build requirement.
+BuildRequires: systemtap-sdt-devel
+%endif
+# visualvm build requirements.
+BuildRequires: jakarta-commons-logging
+
+Requires: rhino
+Requires: libjpeg = 6b
+# Require /etc/pki/java/cacerts.
+Requires: ca-certificates
+# Require jpackage-utils for ant.
+Requires: jpackage-utils >= 1.7.3-1jpp.2
+# Require zoneinfo data provided by tzdata-java subpackage.
+Requires: tzdata-java
+# Post requires alternatives to install tool alternatives.
+Requires(post):   %{_sbindir}/alternatives
+# Postun requires alternatives to uninstall tool alternatives.
+Requires(postun): %{_sbindir}/alternatives
+
+# Standard JPackage base provides.
+Provides: jre-%{javaver}-%{origin} = %{epoch}:%{version}-%{release}
+Provides: jre-%{origin} = %{epoch}:%{version}-%{release}
+Provides: jre-%{javaver} = %{epoch}:%{version}-%{release}
+Provides: java-%{javaver} = %{epoch}:%{version}-%{release}
+Provides: jre = %{javaver}
+Provides: java-%{origin} = %{epoch}:%{version}-%{release}
+Provides: java = %{epoch}:%{javaver}
+# Standard JPackage extensions provides.
+Provides: jndi = %{epoch}:%{version}
+Provides: jndi-ldap = %{epoch}:%{version}
+Provides: jndi-cos = %{epoch}:%{version}
+Provides: jndi-rmi = %{epoch}:%{version}
+Provides: jndi-dns = %{epoch}:%{version}
+Provides: jaas = %{epoch}:%{version}
+Provides: jsse = %{epoch}:%{version}
+Provides: jce = %{epoch}:%{version}
+Provides: jdbc-stdext = 3.0
+Provides: java-sasl = %{epoch}:%{version}
+Provides: java-fonts = %{epoch}:%{version}
+
+%description
+The OpenJDK runtime environment.
+
+%package devel
+Summary: OpenJDK Development Environment
+Group:   Development/Tools
+
+# Require base package.
+Requires:         %{name} = %{epoch}:%{version}-%{release}
+# Post requires alternatives to install tool alternatives.
+Requires(post):   %{_sbindir}/alternatives
+# Postun requires alternatives to uninstall tool alternatives.
+Requires(postun): %{_sbindir}/alternatives
+
+# Standard JPackage devel provides.
+Provides: java-sdk-%{javaver}-%{origin} = %{epoch}:%{version}
+Provides: java-sdk-%{javaver} = %{epoch}:%{version}
+Provides: java-sdk-%{origin} = %{epoch}:%{version}
+Provides: java-sdk = %{epoch}:%{javaver}
+Provides: java-%{javaver}-devel = %{epoch}:%{version}
+Provides: java-devel-%{origin} = %{epoch}:%{version}
+Provides: java-devel = %{epoch}:%{javaver}
+
+
+%description devel
+The OpenJDK development tools.
+
+%package demo
+Summary: OpenJDK Demos
+Group:   Development/Languages
+
+Requires: %{name} = %{epoch}:%{version}-%{release}
+
+%description demo
+The OpenJDK demos.
+
+%package src
+Summary: OpenJDK Source Bundle
+Group:   Development/Languages
+
+Requires: %{name} = %{epoch}:%{version}-%{release}
+
+%description src
+The OpenJDK source bundle.
+
+%package javadoc
+Summary: OpenJDK API Documentation
+Group:   Documentation
+Requires: jpackage-utils
+BuildArch: noarch
+
+# Post requires alternatives to install javadoc alternative.
+Requires(post):   %{_sbindir}/alternatives
+# Postun requires alternatives to uninstall javadoc alternative.
+Requires(postun): %{_sbindir}/alternatives
+
+# Standard JPackage javadoc provides.
+Provides: java-javadoc = %{epoch}:%{version}-%{release}
+Provides: java-%{javaver}-javadoc = %{epoch}:%{version}-%{release}
+
+%description javadoc
+The OpenJDK API documentation.
+
+%prep
+%setup -q -c -n %{name}
+%setup -q -n %{name} -T -D -a 3
+%setup -q -n %{name} -T -D -a 1
+cp %{SOURCE2} .
+cp %{SOURCE4} .
+
+# OpenJDK patches
+%patch100
+%patch101
+%patch102
+%patch103
+%patch104
+%patch105
+%patch106
+%patch107
+%patch108
+%patch109
+%patch110
+%patch111
+%patch112
+%patch113
+
+# pulseaudio support
+%if %{with_pulseaudio}
+%patch300
+%endif
+
+# Add systemtap patches if enabled
+%if %{with_systemtap}
+%patch301
+%patch302
+%patch303
+%endif
+
+# Copy jaxp, jaf and jaxws drops
+mkdir drops/
+cp %{SOURCE5} drops/
+cp %{SOURCE6} drops/
+cp %{SOURCE7} drops/
+
+# Extract the generated files
+tar xzf %{SOURCE9}
+
+# Extract the rewriter (to rewrite rhino classes)
+tar xzf %{SOURCE10}
+
+# Extract systemtap tapsets
+%if %{with_systemtap}
+
+tar xzf %{SOURCE11}
+
+for file in tapset/*.in; do
+
+    OUTPUT_FILE=`echo $file | sed -e s:\.in$::g`
+    sed -e s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir}/jre/lib/amd64/server/libjvm.so:g $file > $OUTPUT_FILE
+    sed -i -e '/@ABS_CLIENT_LIBJVM_SO@/d' $OUTPUT_FILE
+    sed -i -e s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir}:g $OUTPUT_FILE
+    sed -i -e s:@INSTALL_ARCH_DIR@:%{archinstall}:g $OUTPUT_FILE
+
+done
+
+%endif
+
+# Pulseaudio
+%if %{with_pulseaudio}
+tar xzf %{SOURCE14}
+%endif
+
+# Extract desktop files
+tar xzf %{SOURCE12}
+
+# If bootstrapping, apply additional patches
+%if %{gcjbootstrap}
+
+cp -a openjdk openjdk-boot
+
+# Add bootstrap patches
+%patch200
+%patch201
+%patch202
+%patch203
+%patch204
+%patch205
+%patch206
+%patch207
+%patch208
+%patch209
+%patch210
+%patch211
+%patch212
+%patch213
+%patch214
+%patch215
+%patch216
+%patch217
+%patch218
+%patch219
+%patch220
+%patch221
+%patch222
+%patch223
+%patch224
+%patch225
+%patch226
+%patch227
+%patch228
+%patch229
+%patch230
+%patch231
+%patch232
+%patch233
+%patch234
+%patch235
+%patch236
+
+%endif
+
+%build
+# How many cpu's do we have?
+export NUM_PROC=`/usr/bin/getconf _NPROCESSORS_ONLN 2> /dev/null || :`
+export NUM_PROC=${NUM_PROC:-1}
+
+# Build IcedTea and OpenJDK.
+%ifarch sparc64 alpha
+export ARCH_DATA_MODEL=64
+%endif
+%ifarch alpha
+export CFLAGS="$CFLAGS -mieee"
+%endif
+
+patch -l -p0 < %{PATCH3}
+patch -l -p0 < %{PATCH4}
+
+%if %{debug}
+patch -l -p0 < %{PATCH5}
+patch -l -p0 < %{PATCH6}
+%endif
+
+# Build the re-written rhino jar
+mkdir -p rhino/{old,new}
+
+# Compile the rewriter
+(cd rewriter 
+ javac com/redhat/rewriter/ClassRewriter.java
+)
+
+# Extract rhino.jar contents and rewrite
+(cd rhino/old 
+ jar xf /usr/share/java/rhino.jar
+)
+
+java -cp rewriter com.redhat.rewriter.ClassRewriter \
+    $PWD/rhino/old \
+    $PWD/rhino/new \
+    org.mozilla \
+    sun.org.mozilla
+
+(cd rhino/old
+ for file in `find -type f -not -name '*.class'` ; do
+     new_file=../new/`echo $file | sed -e 's#org#sun/org#'`
+     mkdir -pv `dirname $new_file`
+     cp -v $file $new_file
+     sed -ie 's#org\.mozilla#sun.org.mozilla#g' $new_file
+ done
+)
+
+(cd rhino/new
+   jar cfm ../rhino.jar META-INF/MANIFEST.MF sun
+)
+
+%if %{gcjbootstrap}
+
+mkdir -p bootstrap/boot
+
+# Copy over JAVA_HOME from /usr/lib/jvm/java-gcj/
+cp -aL %{_jvmdir}/java-gcj/* bootstrap/boot/ || : # broken symlinks can be non-fatal but may cause this to fail
+
+# Replace javac with a wrapper that does some magic
+cp -af %{SOURCE8} bootstrap/boot/bin/javac
+chmod u+x bootstrap/boot/bin/javac # SOURCE8 may not be +x
+sed -i -e s:@RT_JAR@:$PWD/bootstrap/boot/jre/lib/rt.jar:g bootstrap/boot/bin/javac
+
+# Link the native2ascii binary
+ln -sf /usr/bin/gnative2ascii bootstrap/boot/bin/native2ascii
+
+# We don't need a disassebler, fake it
+echo "#!/bin/sh
+exit 0" > bootstrap/boot/bin/javap
+chmod u+rx bootstrap/boot/bin/javap # We need to run this during build
+
+# Modules directory
+mkdir -p bootstrap/boot/lib/modules
+
+# jdk1.6.0 link
+rm -f bootstrap/jdk1.6.0
+ln -sf boot bootstrap/jdk1.6.0
+
+# Update rt.jar with newer classes
+# Extra classes to compile for reasons like
+# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42003
+echo "openjdk-boot/jdk/src/share/classes/java/util/regex/Matcher.java 
+openjdk-boot/jdk/src/share/classes/javax/management/remote/JMXServiceURL.java 
+openjdk-boot/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanInfo.java 
+openjdk-boot/jdk/src/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java
+openjdk-boot/langtools/src/share/classes/javax/tools/JavaFileManager.java" > rt-source-files
+
+mkdir -p rt
+bootstrap/jdk1.6.0/bin/javac -g -encoding utf-8    -source 6 -target 6 -d rt \
+  -classpath %{_jvmdir}/java-gcj/jre/lib/rt.jar \
+  -sourcepath 'generated:openjdk-boot/jdk/src/share/classes:openjdk-boot/jdk/src/solaris/classes:openjdk-boot/langtools/src/share/classes:openjdk-boot/corba/src/share/classes' \
+  -bootclasspath "\'\'" @rt-source-files
+
+pushd rt
+zip -qur ../bootstrap/jdk1.6.0/jre/lib/rt.jar *
+popd
+
+# clean up
+rm -f rt-source-files
+rm -rf rt
+
+# Build it
+pushd openjdk-boot
+cp -a ../generated generated.build
+chmod u+rwx generated.build
+
+make \
+  ALT_DROPS_DIR=$PWD/../drops \
+  ALT_JDK_IMPORT_PATH="$PWD/../bootstrap/jdk1.6.0" \
+  ANT="/usr/bin/ant" \
+  BUILD_NUMBER="%{openjdkbuildver}" \
+  JDK_UPDATE_VERSION="%{openjdkver}" \
+  JRE_UPDATE_VERSION="fedora-%{release}-%{_arch} (%{javaver}_%{openjdkver}-%{openjdkbuildver}) on `date`" \
+  MILESTONE="fcs" \
+  ALT_BOOTDIR="$PWD/../bootstrap/jdk1.6.0" \
+  ICEDTEA_RT="$PWD/../bootstrap/jdk1.6.0/jre/lib/rt.jar" \
+  ALT_PARALLEL_COMPILE_JOBS="$NUM_PROC" \
+  HOTSPOT_BUILD_JOBS="$NUM_PROC" \
+  DISTRIBUTION_ID="fedora-%{release}-%{_arch}" \
+  STATIC_CXX="false" \
+  NO_DOCS="true" \
+  RHINO_JAR="$PWD/../rhino/rhino.jar" \
+  GENSRCDIR="$PWD/generated.build" \
+  JAR_KNOWS_ATFILE="1" \
+  JAR_KNOWS_J_OPTIONS="1" \
+  JAR_ACCEPTS_STDIN_LIST="1" \
+  DISABLE_NIMBUS="true" \
+  XSLT="/usr/bin/xsltproc"
+
+export JDK_TO_BUILD_WITH=$PWD/build/linux-%{archbuild}/j2sdk-image
+
+popd
+
+%else
+
+export JDK_TO_BUILD_WITH=/usr/lib/jvm/java-openjdk
+
+%endif
+
+pushd openjdk >& /dev/null
+
+make \
+  ALT_DROPS_DIR=$PWD/../drops \
+  ALT_BOOTDIR="$JDK_TO_BUILD_WITH" \
+  ANT="/usr/bin/ant" \
+  BUILD_NUMBER="%{openjdkbuildver}" \
+  JDK_UPDATE_VERSION="%{openjdkver}" \
+  JRE_UPDATE_VERSION="fedora-%{release}-%{_arch} (%{javaver}_%{openjdkver}-%{openjdkbuildver}) on `date`" \
+  MILESTONE="fcs" \
+  ALT_PARALLEL_COMPILE_JOBS="$NUM_PROC" \
+  HOTSPOT_BUILD_JOBS="$NUM_PROC" \
+  DISTRIBUTION_ID="fedora-%{release}-%{_arch}" \
+  STATIC_CXX="false" \
+  RHINO_JAR="$PWD/../rhino/rhino.jar" \
+  GENSRCDIR="$PWD/generated.build" \
+  JAR_KNOWS_ATFILE="1" \
+  JAR_KNOWS_J_OPTIONS="1" \
+  JAR_ACCEPTS_STDIN_LIST="1" \
+  %{debugbuild}
+
+popd >& /dev/null
+
+export JAVA_HOME=$(pwd)/%{buildoutputdir}/j2sdk-image
+
+# Build pulseaudio and install it to JDK build location
+%if %{with_pulseaudio}
+pushd pulseaudio
+make JAVA_HOME=$JAVA_HOME -f Makefile.pulseaudio
+cp -pPRf build/native/libpulse-java.so $JAVA_HOME/jre/lib/%{archbuild}/
+cp -pPRf build/pulse-java.jar $JAVA_HOME/jre/lib/ext/
+popd
+%endif
+
+# Build Java Access Bridge for GNOME.
+pushd java-access-bridge-%{accessver}
+  patch -l -p1 < %{PATCH1}
+  patch -l -p1 < %{PATCH2}
+  OLD_PATH=$PATH
+  export PATH=$JAVA_HOME/bin:$OLD_PATH
+  ./configure
+  make
+  export PATH=$OLD_PATH
+  cp -a bridge/accessibility.properties $JAVA_HOME/jre/lib
+  cp -a gnome-java-bridge.jar $JAVA_HOME/jre/lib/ext
+popd
+
+%if %{runtests}
+# Run jtreg test suite.
+{
+  echo ====================JTREG TESTING========================
+  export DISPLAY=:20
+  Xvfb :20 -screen 0 1x1x24 -ac&
+  echo $! > Xvfb.pid
+  make jtregcheck -k
+  kill -9 `cat Xvfb.pid`
+  unset DISPLAY
+  rm -f Xvfb.pid
+  echo ====================JTREG TESTING END====================
+} || :
+
+# Run Mauve test suite.
+{
+  pushd mauve-%{mauvedate}
+    ./configure
+    make
+    echo ====================MAUVE TESTING========================
+    export DISPLAY=:20
+    Xvfb :20 -screen 0 1x1x24 -ac&
+    echo $! > Xvfb.pid
+    $JAVA_HOME/bin/java Harness -vm $JAVA_HOME/bin/java \
+      -file %{SOURCE4} -timeout 30000 2>&1 | tee mauve_output
+    kill -9 `cat Xvfb.pid`
+    unset DISPLAY
+    rm -f Xvfb.pid
+    echo ====================MAUVE TESTING END====================
+  popd
+} || :
+%endif
+
+%install
+rm -rf $RPM_BUILD_ROOT
+STRIP_KEEP_SYMTAB=libjvm*
+
+pushd %{buildoutputdir}/j2sdk-image
+
+  # Install main files.
+  install -d -m 755 $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}
+  cp -a bin include lib src.zip $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}
+  install -d -m 755 $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}
+  cp -a jre/bin jre/lib $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}
+
+%ifarch %{jit_arches}
+  # Install systemtap support files.
+  install -dm 755 $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/tapset
+  cp -a $RPM_BUILD_DIR/%{name}/tapset/*.stp $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/tapset/
+  install -d -m 755 $RPM_BUILD_ROOT%{tapsetdir}
+  pushd $RPM_BUILD_ROOT%{tapsetdir}
+    RELATIVE=$(%{abs2rel} %{_jvmdir}/%{sdkdir}/tapset %{tapsetdir})
+    ln -sf $RELATIVE/*.stp .
+  popd
+%endif
+
+  # Install cacerts symlink.
+  rm -f $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/security/cacerts
+  pushd $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/security
+    RELATIVE=$(%{abs2rel} %{_sysconfdir}/pki/java \
+      %{_jvmdir}/%{jredir}/lib/security)
+    ln -sf $RELATIVE/cacerts .
+  popd
+
+  # Install extension symlinks.
+  install -d -m 755 $RPM_BUILD_ROOT%{jvmjardir}
+  pushd $RPM_BUILD_ROOT%{jvmjardir}
+    RELATIVE=$(%{abs2rel} %{_jvmdir}/%{jredir}/lib %{jvmjardir})
+    ln -sf $RELATIVE/jsse.jar jsse-%{version}.jar
+    ln -sf $RELATIVE/jce.jar jce-%{version}.jar
+    ln -sf $RELATIVE/rt.jar jndi-%{version}.jar
+    ln -sf $RELATIVE/rt.jar jndi-ldap-%{version}.jar
+    ln -sf $RELATIVE/rt.jar jndi-cos-%{version}.jar
+    ln -sf $RELATIVE/rt.jar jndi-rmi-%{version}.jar
+    ln -sf $RELATIVE/rt.jar jaas-%{version}.jar
+    ln -sf $RELATIVE/rt.jar jdbc-stdext-%{version}.jar
+    ln -sf jdbc-stdext-%{version}.jar jdbc-stdext-3.0.jar
+    ln -sf $RELATIVE/rt.jar sasl-%{version}.jar
+    for jar in *-%{version}.jar
+    do
+      if [ x%{version} != x%{javaver} ]
+      then
+        ln -sf $jar $(echo $jar | sed "s|-%{version}.jar|-%{javaver}.jar|g")
+      fi
+      ln -sf $jar $(echo $jar | sed "s|-%{version}.jar|.jar|g")
+    done
+  popd
+
+  # Install JCE policy symlinks.
+  install -d -m 755 $RPM_BUILD_ROOT%{_jvmprivdir}/%{archname}/jce/vanilla
+
+  # Install versionless symlinks.
+  pushd $RPM_BUILD_ROOT%{_jvmdir}
+    ln -sf %{jredir} %{jrelnk}
+    ln -sf %{sdkdir} %{sdklnk}
+  popd
+
+  pushd $RPM_BUILD_ROOT%{_jvmjardir}
+    ln -sf %{sdkdir} %{jrelnk}
+    ln -sf %{sdkdir} %{sdklnk}
+  popd
+
+  # Remove javaws man page
+  rm -f man/man1/javaws*
+
+  # Install man pages.
+  install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1
+  for manpage in man/man1/*
+  do
+    # Convert man pages to UTF8 encoding.
+    iconv -f ISO_8859-1 -t UTF8 $manpage -o $manpage.tmp
+    mv -f $manpage.tmp $manpage
+    install -m 644 -p $manpage $RPM_BUILD_ROOT%{_mandir}/man1/$(basename \
+      $manpage .1)-%{name}.1
+  done
+
+  # Install demos and samples.
+  cp -a demo $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}
+  mkdir -p sample/rmi
+  mv bin/java-rmi.cgi sample/rmi
+  cp -a sample $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}
+
+popd
+
+
+# Install nss.cfg
+install -m 644 %{SOURCE13} $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/security/
+
+
+# Install Javadoc documentation.
+install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}
+cp -a %{buildoutputdir}/docs $RPM_BUILD_ROOT%{_javadocdir}/%{name}
+
+# Install icons and menu entries.
+for s in 16 24 32 48 ; do
+  install -D -p -m 644 \
+    openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \
+    $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}.png
+done
+
+# Install desktop files.
+install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/{applications,pixmaps}
+for e in jconsole policytool ; do
+    desktop-file-install --vendor=%{name} --mode=644 \
+        --dir=$RPM_BUILD_ROOT%{_datadir}/applications $e.desktop
+done
+
+# Find JRE directories.
+find $RPM_BUILD_ROOT%{_jvmdir}/%{jredir} -type d \
+  | grep -v jre/lib/security \
+  | sed 's|'$RPM_BUILD_ROOT'|%dir |' \
+  > %{name}.files
+# Find JRE files.
+find $RPM_BUILD_ROOT%{_jvmdir}/%{jredir} -type f -o -type l \
+  | grep -v jre/lib/security \
+  | sed 's|'$RPM_BUILD_ROOT'||' \
+  >> %{name}.files
+# Find demo directories.
+find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/demo \
+  $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/sample -type d \
+  | sed 's|'$RPM_BUILD_ROOT'|%dir |' \
+  > %{name}-demo.files
+
+# FIXME: remove SONAME entries from demo DSOs.  See
+# https://bugzilla.redhat.com/show_bug.cgi?id=436497
+
+# Find non-documentation demo files.
+find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/demo \
+  $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/sample \
+  -type f -o -type l | sort \
+  | grep -v README \
+  | sed 's|'$RPM_BUILD_ROOT'||' \
+  >> %{name}-demo.files
+# Find documentation demo files.
+find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/demo \
+  $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/sample \
+  -type f -o -type l | sort \
+  | grep README \
+  | sed 's|'$RPM_BUILD_ROOT'||' \
+  | sed 's|^|%doc |' \
+  >> %{name}-demo.files
+
+# FIXME: identical binaries are copied, not linked. This needs to be
+# fixed upstream.
+%post
+ext=.gz
+alternatives \
+  --install %{_bindir}/java java %{jrebindir}/java %{priority} \
+  --slave %{_jvmdir}/jre jre %{_jvmdir}/%{jrelnk} \
+  --slave %{_jvmjardir}/jre jre_exports %{_jvmjardir}/%{jrelnk} \
+  --slave %{_bindir}/keytool keytool %{jrebindir}/keytool \
+  --slave %{_bindir}/orbd orbd %{jrebindir}/orbd \
+  --slave %{_bindir}/pack200 pack200 %{jrebindir}/pack200 \
+  --slave %{_bindir}/rmid rmid %{jrebindir}/rmid \
+  --slave %{_bindir}/rmiregistry rmiregistry %{jrebindir}/rmiregistry \
+  --slave %{_bindir}/servertool servertool %{jrebindir}/servertool \
+  --slave %{_bindir}/tnameserv tnameserv %{jrebindir}/tnameserv \
+  --slave %{_bindir}/unpack200 unpack200 %{jrebindir}/unpack200 \
+  --slave %{_mandir}/man1/java.1$ext java.1$ext \
+  %{_mandir}/man1/java-%{name}.1$ext \
+  --slave %{_mandir}/man1/keytool.1$ext keytool.1$ext \
+  %{_mandir}/man1/keytool-%{name}.1$ext \
+  --slave %{_mandir}/man1/orbd.1$ext orbd.1$ext \
+  %{_mandir}/man1/orbd-%{name}.1$ext \
+  --slave %{_mandir}/man1/pack200.1$ext pack200.1$ext \
+  %{_mandir}/man1/pack200-%{name}.1$ext \
+  --slave %{_mandir}/man1/rmid.1$ext rmid.1$ext \
+  %{_mandir}/man1/rmid-%{name}.1$ext \
+  --slave %{_mandir}/man1/rmiregistry.1$ext rmiregistry.1$ext \
+  %{_mandir}/man1/rmiregistry-%{name}.1$ext \
+  --slave %{_mandir}/man1/servertool.1$ext servertool.1$ext \
+  %{_mandir}/man1/servertool-%{name}.1$ext \
+  --slave %{_mandir}/man1/tnameserv.1$ext tnameserv.1$ext \
+  %{_mandir}/man1/tnameserv-%{name}.1$ext \
+  --slave %{_mandir}/man1/unpack200.1$ext unpack200.1$ext \
+  %{_mandir}/man1/unpack200-%{name}.1$ext
+
+alternatives \
+  --install %{_jvmdir}/jre-%{origin} \
+  jre_%{origin} %{_jvmdir}/%{jrelnk} %{priority} \
+  --slave %{_jvmjardir}/jre-%{origin} \
+  jre_%{origin}_exports %{_jvmjardir}/%{jrelnk}
+
+alternatives \
+  --install %{_jvmdir}/jre-%{javaver} \
+  jre_%{javaver} %{_jvmdir}/%{jrelnk} %{priority} \
+  --slave %{_jvmjardir}/jre-%{javaver} \
+  jre_%{javaver}_exports %{_jvmjardir}/%{jrelnk}
+
+update-desktop-database %{_datadir}/applications &> /dev/null || :
+
+touch --no-create %{_datadir}/icons/hicolor
+if [ -x %{_bindir}/gtk-update-icon-cache ] ; then
+  %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor
+fi
+
+exit 0
+
+%postun
+if [ $1 -eq 0 ]
+then
+  alternatives --remove java %{jrebindir}/java
+  alternatives --remove jre_%{origin} %{_jvmdir}/%{jrelnk}
+  alternatives --remove jre_%{javaver} %{_jvmdir}/%{jrelnk}
+fi
+
+update-desktop-database %{_datadir}/applications &> /dev/null || :
+
+touch --no-create %{_datadir}/icons/hicolor
+if [ -x %{_bindir}/gtk-update-icon-cache ] ; then
+  %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor
+fi
+
+exit 0
+
+%post devel
+ext=.gz
+alternatives \
+  --install %{_bindir}/javac javac %{sdkbindir}/javac %{priority} \
+  --slave %{_jvmdir}/java java_sdk %{_jvmdir}/%{sdklnk} \
+  --slave %{_jvmjardir}/java java_sdk_exports %{_jvmjardir}/%{sdklnk} \
+  --slave %{_bindir}/appletviewer appletviewer %{sdkbindir}/appletviewer \
+  --slave %{_bindir}/apt apt %{sdkbindir}/apt \
+  --slave %{_bindir}/extcheck extcheck %{sdkbindir}/extcheck \
+  --slave %{_bindir}/jar jar %{sdkbindir}/jar \
+  --slave %{_bindir}/jarsigner jarsigner %{sdkbindir}/jarsigner \
+  --slave %{_bindir}/javadoc javadoc %{sdkbindir}/javadoc \
+  --slave %{_bindir}/javah javah %{sdkbindir}/javah \
+  --slave %{_bindir}/javap javap %{sdkbindir}/javap \
+  --slave %{_bindir}/jconsole jconsole %{sdkbindir}/jconsole \
+  --slave %{_bindir}/jdb jdb %{sdkbindir}/jdb \
+  --slave %{_bindir}/jhat jhat %{sdkbindir}/jhat \
+  --slave %{_bindir}/jinfo jinfo %{sdkbindir}/jinfo \
+  --slave %{_bindir}/jmap jmap %{sdkbindir}/jmap \
+  --slave %{_bindir}/jps jps %{sdkbindir}/jps \
+  --slave %{_bindir}/jrunscript jrunscript %{sdkbindir}/jrunscript \
+  --slave %{_bindir}/jsadebugd jsadebugd %{sdkbindir}/jsadebugd \
+  --slave %{_bindir}/jstack jstack %{sdkbindir}/jstack \
+  --slave %{_bindir}/jstat jstat %{sdkbindir}/jstat \
+  --slave %{_bindir}/jstatd jstatd %{sdkbindir}/jstatd \
+  --slave %{_bindir}/native2ascii native2ascii %{sdkbindir}/native2ascii \
+  --slave %{_bindir}/policytool policytool %{sdkbindir}/policytool \
+  --slave %{_bindir}/rmic rmic %{sdkbindir}/rmic \
+  --slave %{_bindir}/schemagen schemagen %{sdkbindir}/schemagen \
+  --slave %{_bindir}/serialver serialver %{sdkbindir}/serialver \
+  --slave %{_bindir}/wsgen wsgen %{sdkbindir}/wsgen \
+  --slave %{_bindir}/wsimport wsimport %{sdkbindir}/wsimport \
+  --slave %{_bindir}/xjc xjc %{sdkbindir}/xjc \
+  --slave %{_mandir}/man1/appletviewer.1$ext appletviewer.1$ext \
+  %{_mandir}/man1/appletviewer-%{name}.1$ext \
+  --slave %{_mandir}/man1/apt.1$ext apt.1$ext \
+  %{_mandir}/man1/apt-%{name}.1$ext \
+  --slave %{_mandir}/man1/extcheck.1$ext extcheck.1$ext \
+  %{_mandir}/man1/extcheck-%{name}.1$ext \
+  --slave %{_mandir}/man1/jar.1$ext jar.1$ext \
+  %{_mandir}/man1/jar-%{name}.1$ext \
+  --slave %{_mandir}/man1/jarsigner.1$ext jarsigner.1$ext \
+  %{_mandir}/man1/jarsigner-%{name}.1$ext \
+  --slave %{_mandir}/man1/javac.1$ext javac.1$ext \
+  %{_mandir}/man1/javac-%{name}.1$ext \
+  --slave %{_mandir}/man1/javadoc.1$ext javadoc.1$ext \
+  %{_mandir}/man1/javadoc-%{name}.1$ext \
+  --slave %{_mandir}/man1/javah.1$ext javah.1$ext \
+  %{_mandir}/man1/javah-%{name}.1$ext \
+  --slave %{_mandir}/man1/javap.1$ext javap.1$ext \
+  %{_mandir}/man1/javap-%{name}.1$ext \
+  --slave %{_mandir}/man1/jconsole.1$ext jconsole.1$ext \
+  %{_mandir}/man1/jconsole-%{name}.1$ext \
+  --slave %{_mandir}/man1/jdb.1$ext jdb.1$ext \
+  %{_mandir}/man1/jdb-%{name}.1$ext \
+  --slave %{_mandir}/man1/jhat.1$ext jhat.1$ext \
+  %{_mandir}/man1/jhat-%{name}.1$ext \
+  --slave %{_mandir}/man1/jinfo.1$ext jinfo.1$ext \
+  %{_mandir}/man1/jinfo-%{name}.1$ext \
+  --slave %{_mandir}/man1/jmap.1$ext jmap.1$ext \
+  %{_mandir}/man1/jmap-%{name}.1$ext \
+  --slave %{_mandir}/man1/jps.1$ext jps.1$ext \
+  %{_mandir}/man1/jps-%{name}.1$ext \
+  --slave %{_mandir}/man1/jrunscript.1$ext jrunscript.1$ext \
+  %{_mandir}/man1/jrunscript-%{name}.1$ext \
+  --slave %{_mandir}/man1/jsadebugd.1$ext jsadebugd.1$ext \
+  %{_mandir}/man1/jsadebugd-%{name}.1$ext \
+  --slave %{_mandir}/man1/jstack.1$ext jstack.1$ext \
+  %{_mandir}/man1/jstack-%{name}.1$ext \
+  --slave %{_mandir}/man1/jstat.1$ext jstat.1$ext \
+  %{_mandir}/man1/jstat-%{name}.1$ext \
+  --slave %{_mandir}/man1/jstatd.1$ext jstatd.1$ext \
+  %{_mandir}/man1/jstatd-%{name}.1$ext \
+  --slave %{_mandir}/man1/native2ascii.1$ext native2ascii.1$ext \
+  %{_mandir}/man1/native2ascii-%{name}.1$ext \
+  --slave %{_mandir}/man1/policytool.1$ext policytool.1$ext \
+  %{_mandir}/man1/policytool-%{name}.1$ext \
+  --slave %{_mandir}/man1/rmic.1$ext rmic.1$ext \
+  %{_mandir}/man1/rmic-%{name}.1$ext \
+  --slave %{_mandir}/man1/schemagen.1$ext schemagen.1$ext \
+  %{_mandir}/man1/schemagen-%{name}.1$ext \
+  --slave %{_mandir}/man1/serialver.1$ext serialver.1$ext \
+  %{_mandir}/man1/serialver-%{name}.1$ext \
+  --slave %{_mandir}/man1/wsgen.1$ext wsgen.1$ext \
+  %{_mandir}/man1/wsgen-%{name}.1$ext \
+  --slave %{_mandir}/man1/wsimport.1$ext wsimport.1$ext \
+  %{_mandir}/man1/wsimport-%{name}.1$ext \
+  --slave %{_mandir}/man1/xjc.1$ext xjc.1$ext \
+  %{_mandir}/man1/xjc-%{name}.1$ext
+
+alternatives \
+  --install %{_jvmdir}/java-%{origin} \
+  java_sdk_%{origin} %{_jvmdir}/%{sdklnk} %{priority} \
+  --slave %{_jvmjardir}/java-%{origin} \
+  java_sdk_%{origin}_exports %{_jvmjardir}/%{sdklnk}
+
+alternatives \
+  --install %{_jvmdir}/java-%{javaver} \
+  java_sdk_%{javaver} %{_jvmdir}/%{sdklnk} %{priority} \
+  --slave %{_jvmjardir}/java-%{javaver} \
+  java_sdk_%{javaver}_exports %{_jvmjardir}/%{sdklnk}
+
+exit 0
+
+%postun devel
+if [ $1 -eq 0 ]
+then
+  alternatives --remove javac %{sdkbindir}/javac
+  alternatives --remove java_sdk_%{origin} %{_jvmdir}/%{sdklnk}
+  alternatives --remove java_sdk_%{javaver} %{_jvmdir}/%{sdklnk}
+fi
+
+exit 0
+
+%post javadoc
+alternatives \
+  --install %{_javadocdir}/java javadocdir %{_javadocdir}/%{name}/api \
+  %{priority}
+
+exit 0
+
+%postun javadoc
+if [ $1 -eq 0 ]
+then
+  alternatives --remove javadocdir %{_javadocdir}/%{name}/api
+fi
+
+exit 0
+
+
+%files -f %{name}.files
+%defattr(-,root,root,-)
+%doc %{buildoutputdir}/j2sdk-image/jre/ASSEMBLY_EXCEPTION
+%doc %{buildoutputdir}/j2sdk-image/jre/LICENSE
+%doc %{buildoutputdir}/j2sdk-image/jre/THIRD_PARTY_README
+
+%dir %{_jvmdir}/%{sdkdir}
+%{_jvmdir}/%{jrelnk}
+%{_jvmjardir}/%{jrelnk}
+%{_jvmprivdir}/*
+%{jvmjardir}
+%dir %{_jvmdir}/%{jredir}/lib/security
+%{_jvmdir}/%{jredir}/lib/security/cacerts
+%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.policy
+%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.security
+%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}.png
+%{_mandir}/man1/java-%{name}.1*
+%{_mandir}/man1/keytool-%{name}.1*
+%{_mandir}/man1/orbd-%{name}.1*
+%{_mandir}/man1/pack200-%{name}.1*
+%{_mandir}/man1/rmid-%{name}.1*
+%{_mandir}/man1/rmiregistry-%{name}.1*
+%{_mandir}/man1/servertool-%{name}.1*
+%{_mandir}/man1/tnameserv-%{name}.1*
+%{_mandir}/man1/unpack200-%{name}.1*
+%{_jvmdir}/%{jredir}/lib/security/nss.cfg
+
+%files devel
+%defattr(-,root,root,-)
+%doc %{buildoutputdir}/j2sdk-image/ASSEMBLY_EXCEPTION
+%doc %{buildoutputdir}/j2sdk-image/LICENSE
+%doc %{buildoutputdir}/j2sdk-image/THIRD_PARTY_README
+%dir %{_jvmdir}/%{sdkdir}/bin
+%dir %{_jvmdir}/%{sdkdir}/include
+%dir %{_jvmdir}/%{sdkdir}/lib
+%ifarch %{jit_arches}
+%dir %{_jvmdir}/%{sdkdir}/tapset
+%endif
+%{_jvmdir}/%{sdkdir}/bin/*
+%{_jvmdir}/%{sdkdir}/include/*
+%{_jvmdir}/%{sdkdir}/lib/*
+%ifarch %{jit_arches}
+%{_jvmdir}/%{sdkdir}/tapset/*.stp
+%endif
+%{_jvmdir}/%{sdklnk}
+%{_jvmjardir}/%{sdklnk}
+%{_datadir}/applications/*jconsole.desktop
+%{_datadir}/applications/*policytool.desktop
+%{_mandir}/man1/appletviewer-%{name}.1*
+%{_mandir}/man1/apt-%{name}.1*
+%{_mandir}/man1/extcheck-%{name}.1*
+%{_mandir}/man1/idlj-%{name}.1*
+%{_mandir}/man1/jar-%{name}.1*
+%{_mandir}/man1/jarsigner-%{name}.1*
+%{_mandir}/man1/javac-%{name}.1*
+%{_mandir}/man1/javadoc-%{name}.1*
+%{_mandir}/man1/javah-%{name}.1*
+%{_mandir}/man1/javap-%{name}.1*
+%{_mandir}/man1/jconsole-%{name}.1*
+%{_mandir}/man1/jdb-%{name}.1*
+%{_mandir}/man1/jhat-%{name}.1*
+%{_mandir}/man1/jinfo-%{name}.1*
+%{_mandir}/man1/jmap-%{name}.1*
+%{_mandir}/man1/jps-%{name}.1*
+%{_mandir}/man1/jrunscript-%{name}.1*
+%{_mandir}/man1/jsadebugd-%{name}.1*
+%{_mandir}/man1/jstack-%{name}.1*
+%{_mandir}/man1/jstat-%{name}.1*
+%{_mandir}/man1/jstatd-%{name}.1*
+%{_mandir}/man1/native2ascii-%{name}.1*
+%{_mandir}/man1/policytool-%{name}.1*
+%{_mandir}/man1/rmic-%{name}.1*
+%{_mandir}/man1/schemagen-%{name}.1*
+%{_mandir}/man1/serialver-%{name}.1*
+%{_mandir}/man1/wsgen-%{name}.1*
+%{_mandir}/man1/wsimport-%{name}.1*
+%{_mandir}/man1/xjc-%{name}.1*
+%ifarch %{jit_arches}
+%{tapsetdir}/*.stp
+%endif
+
+%files demo -f %{name}-demo.files
+%defattr(-,root,root,-)
+%doc %{buildoutputdir}/j2sdk-image/jre/LICENSE
+
+%files src
+%defattr(-,root,root,-)
+%doc README.src
+%{_jvmdir}/%{sdkdir}/src.zip
+%if %{runtests}
+# FIXME: put these in a separate testresults subpackage.
+%doc mauve_tests
+%doc mauve-%{mauvedate}/mauve_output
+%doc test/jtreg-summary.log
+%endif
+
+%files javadoc
+%defattr(-,root,root,-)
+%doc %{_javadocdir}/%{name}
+%doc %{buildoutputdir}/j2sdk-image/jre/LICENSE
+
+%changelog
+* Wed Aug 03 2011 Deepak Bhole <dbhole at redhat.com> - 1.7.0.0-0.1.20110729
+- Initial build from java-1.6.0-openjdk RPM
diff --git a/javac-wrapper b/javac-wrapper
new file mode 100644
index 0000000..1b004d1
--- /dev/null
+++ b/javac-wrapper
@@ -0,0 +1,61 @@
+#!/usr/bin/perl -w
+use strict;
+use constant NO_DUP_ARGS => qw(-source -target -d -encoding);
+use constant STRIP_ARGS => qw(-Werror -implicit:none);
+
+my ($ECJ_WARNINGS, $JAVAC_WARNINGS);
+
+if ("no" eq "yes")
+{
+    $ECJ_WARNINGS="-warn:-deprecation,serial,unused,warningToken";
+    $JAVAC_WARNINGS="-Xlint:unchecked,cast,divzero,empty,finally,overrides";
+}
+else
+{
+    $ECJ_WARNINGS="-nowarn";
+    $JAVAC_WARNINGS="-nowarn";
+}
+
+my @bcoption;
+push @bcoption, '-bootclasspath', glob '@RT_JAR@'
+    unless grep {$_ eq '-bootclasspath'} @ARGV;
+my @ecj_parms = ($ECJ_WARNINGS, @bcoption);
+my @javac_parms = ($JAVAC_WARNINGS, '-Xprefer:source', '-J-Xmx1024m');
+
+# Work around ecj's inability to handle duplicate command-line
+# options and unknown javac options.
+sub gen_ecj_opts
+{
+    my @new_args = @{$_[0]};
+
+    for my $opt (NO_DUP_ARGS) 
+    {
+	my @indices = reverse grep {$new_args[$_] eq $opt} 0..$#new_args;
+	if (@indices > 1) {
+	    shift @indices;    # keep last instance only
+	    splice @new_args, $_, 2 for @indices;
+	}
+    }
+
+    for my $opt (STRIP_ARGS) 
+    {
+	my @indices = reverse grep {$new_args[$_] eq $opt} 0..$#new_args;
+	splice @new_args, $_, 1 for @indices;
+    }
+
+    return @new_args;
+}
+
+if ( -e "/usr/lib/jvm/java-gcj/bin/javac" )
+{
+	my @ecj_args = gen_ecj_opts( \@ARGV );
+	exec '/usr/lib/jvm/java-gcj/bin/javac', @ecj_parms, @ecj_args ;
+}
+else
+{
+    my @ecj_args = gen_ecj_opts( \@ARGV );
+    my @CLASSPATH = ('/usr/share/java/eclipse-ecj.jar');
+    push @CLASSPATH, split /:/, $ENV{"CLASSPATH"} if exists $ENV{"CLASSPATH"};
+    $ENV{"CLASSPATH"} = join ':', @CLASSPATH;
+    exec '/usr/lib/jvm/java-gcj/bin/java', 'org.eclipse.jdt.internal.compiler.batch.Main', @ecj_parms, @ecj_args;
+}
diff --git a/javafiles.patch b/javafiles.patch
new file mode 100644
index 0000000..0fb51fa
--- /dev/null
+++ b/javafiles.patch
@@ -0,0 +1,164 @@
+diff -Nru openjdk.orig/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_encoding.jmk openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_encoding.jmk
+--- openjdk.orig/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_encoding.jmk	2010-07-29 21:54:09.000000000 +0100
++++ openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_encoding.jmk	2011-03-16 20:45:33.914471077 +0000
+@@ -62,7 +62,6 @@
+ 	com/sun/corba/se/impl/encoding/TypeCodeInputStream.java \
+ 	com/sun/corba/se/impl/encoding/TypeCodeOutputStream.java \
+ 	com/sun/corba/se/impl/encoding/TypeCodeReader.java \
+-	com/sun/corba/se/impl/encoding/WrapperInputStream.java
+-
+-
+-
++	com/sun/corba/se/impl/encoding/WrapperInputStream.java \
++	com/sun/corba/se/impl/encoding/IDLJavaSerializationInputStream.java \
++	com/sun/corba/se/impl/encoding/IDLJavaSerializationOutputStream.java
+diff -Nru openjdk.orig/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_ior.jmk openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_ior.jmk
+--- openjdk.orig/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_ior.jmk	2010-07-29 21:54:09.000000000 +0100
++++ openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_ior.jmk	2011-03-16 20:45:33.922471207 +0000
+@@ -66,4 +66,5 @@
+ 	com/sun/corba/se/impl/ior/iiop/JavaSerializationComponent.java \
+ 	com/sun/corba/se/impl/ior/iiop/MaxStreamFormatVersionComponentImpl.java \
+ 	com/sun/corba/se/impl/ior/iiop/RequestPartitioningComponentImpl.java \
+-	com/sun/corba/se/impl/ior/iiop/ORBTypeComponentImpl.java
++	com/sun/corba/se/impl/ior/iiop/ORBTypeComponentImpl.java \
++	com/sun/corba/se/impl/ior/iiop/JavaSerializationComponent.java
+diff -Nru openjdk.orig/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk
+--- openjdk.orig/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk	2010-07-29 21:54:09.000000000 +0100
++++ openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk	2011-03-16 20:45:33.922471207 +0000
+@@ -81,4 +81,5 @@
+ 	com/sun/corba/se/impl/orbutil/graph/Node.java \
+ 	com/sun/corba/se/impl/orbutil/graph/NodeData.java \
+ 	com/sun/corba/se/impl/orbutil/graph/Graph.java \
+-	com/sun/corba/se/impl/orbutil/graph/GraphImpl.java 
++	com/sun/corba/se/impl/orbutil/graph/GraphImpl.java \
++	com/sun/corba/se/impl/orbutil/GetPropertyAction.java
+diff -Nru openjdk.orig/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_protocol.jmk openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_protocol.jmk
+--- openjdk.orig/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_protocol.jmk	2010-07-29 21:54:09.000000000 +0100
++++ openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_protocol.jmk	2011-03-16 20:45:33.922471207 +0000
+@@ -81,5 +81,5 @@
+ 	com/sun/corba/se/impl/protocol/giopmsgheaders/RequestMessage_1_1.java \
+ 	com/sun/corba/se/impl/protocol/giopmsgheaders/RequestMessage_1_2.java \
+ 	com/sun/corba/se/impl/protocol/giopmsgheaders/TargetAddress.java \
+-	com/sun/corba/se/impl/protocol/giopmsgheaders/TargetAddressHelper.java
+-
++	com/sun/corba/se/impl/protocol/giopmsgheaders/TargetAddressHelper.java \
++	com/sun/corba/se/impl/protocol/giopmsgheaders/LocateReplyOrReplyMessage.java
+diff -Nru openjdk.orig/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_monitoring.jmk openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_monitoring.jmk
+--- openjdk.orig/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_monitoring.jmk	2010-07-29 21:54:09.000000000 +0100
++++ openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_monitoring.jmk	2011-03-16 20:45:33.922471207 +0000
+@@ -30,6 +30,7 @@
+ 	com/sun/corba/se/spi/monitoring/StringMonitoredAttributeBase.java \
+ 	com/sun/corba/se/spi/monitoring/LongMonitoredAttributeBase.java \
+ 	com/sun/corba/se/spi/monitoring/MonitoringFactories.java \
++	com/sun/corba/se/spi/monitoring/MonitoringConstants.java \
+ 	com/sun/corba/se/spi/monitoring/MonitoredAttributeInfo.java \
+ 	com/sun/corba/se/spi/monitoring/MonitoredObject.java \
+ 	com/sun/corba/se/spi/monitoring/MonitoredObjectFactory.java \
+diff -Nru openjdk.orig/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_presentation_rmi.jmk openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_presentation_rmi.jmk
+--- openjdk.orig/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_presentation_rmi.jmk	2010-07-29 21:54:09.000000000 +0100
++++ openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_presentation_rmi.jmk	2011-03-16 20:45:33.922471207 +0000
+@@ -29,5 +29,6 @@
+ 	com/sun/corba/se/spi/presentation/rmi/IDLNameTranslator.java \
+ 	com/sun/corba/se/spi/presentation/rmi/PresentationDefaults.java \
+ 	com/sun/corba/se/spi/presentation/rmi/PresentationManager.java \
++	com/sun/corba/se/spi/presentation/rmi/PresentationDefaults.java \
+ 	com/sun/corba/se/spi/presentation/rmi/StubAdapter.java
+ 
+diff -Nru openjdk.orig/jdk/make/java/java/FILES_java.gmk openjdk/jdk/make/java/java/FILES_java.gmk
+--- openjdk.orig/jdk/make/java/java/FILES_java.gmk	2011-03-14 22:10:30.000000000 +0000
++++ openjdk/jdk/make/java/java/FILES_java.gmk	2011-03-16 20:45:33.922471207 +0000
+@@ -29,6 +29,80 @@
+ # will generate header files
+ #
+ JAVA_JAVA_java = \
++    java/lang/reflect/AccessibleObject.java \
++    java/lang/reflect/AnnotatedElement.java \
++    java/lang/reflect/Array.java \
++    java/lang/reflect/Constructor.java \
++    java/lang/reflect/Field.java \
++    java/lang/reflect/GenericArrayType.java \
++    java/lang/reflect/GenericDeclaration.java \
++    java/lang/reflect/GenericSignatureFormatError.java \
++    java/lang/reflect/InvocationHandler.java \
++    java/lang/reflect/InvocationTargetException.java \
++    java/lang/reflect/MalformedParameterizedTypeException.java \
++    java/lang/reflect/Member.java \
++    java/lang/reflect/Method.java \
++    java/lang/reflect/Modifier.java \
++    java/lang/reflect/package-info.java \
++    java/lang/reflect/ParameterizedType.java \
++    java/lang/reflect/Proxy.java \
++    java/lang/reflect/ReflectAccess.java \
++    java/lang/reflect/ReflectPermission.java \
++    java/lang/reflect/Type.java \
++    java/lang/reflect/TypeVariable.java \
++    java/lang/reflect/UndeclaredThrowableException.java \
++    java/lang/reflect/WildcardType.java \
++    java/lang/ref/Finalizer.java \
++    java/lang/ref/FinalReference.java \
++    java/lang/ref/PhantomReference.java \
++    java/lang/ref/Reference.java \
++    java/lang/ref/ReferenceQueue.java \
++    java/lang/ref/SoftReference.java \
++    java/lang/ref/WeakReference.java \
++    java/lang/management/ClassLoadingMXBean.java \
++    java/lang/management/CompilationMXBean.java \
++    java/lang/management/GarbageCollectorMXBean.java \
++    java/lang/management/LockInfo.java \
++    java/lang/management/ManagementFactory.java \
++    java/lang/management/ManagementPermission.java \
++    java/lang/management/MemoryManagerMXBean.java \
++    java/lang/management/MemoryMXBean.java \
++    java/lang/management/MemoryNotificationInfo.java \
++    java/lang/management/MemoryPoolMXBean.java \
++    java/lang/management/MemoryType.java \
++    java/lang/management/MemoryUsage.java \
++    java/lang/management/MonitorInfo.java \
++    java/lang/management/OperatingSystemMXBean.java \
++    java/lang/management/RuntimeMXBean.java \
++    java/lang/management/ThreadInfo.java \
++    java/lang/management/ThreadMXBean.java \
++    java/lang/instrument/ClassDefinition.java \
++    java/lang/instrument/ClassFileTransformer.java \
++    java/lang/instrument/IllegalClassFormatException.java \
++    java/lang/instrument/Instrumentation.java \
++    java/lang/instrument/UnmodifiableClassException.java \
++    java/lang/annotation/AnnotationFormatError.java \
++    java/lang/annotation/Annotation.java \
++    java/lang/annotation/AnnotationTypeMismatchException.java \
++    java/lang/annotation/Documented.java \
++    java/lang/annotation/ElementType.java \
++    java/lang/annotation/IncompleteAnnotationException.java \
++    java/lang/annotation/Inherited.java \
++    java/lang/annotation/package-info.java \
++    java/lang/annotation/Retention.java \
++    java/lang/annotation/RetentionPolicy.java \
++    java/lang/annotation/Target.java \
++    java/io/IOError.java \
++    java/lang/Deprecated.java \
++    java/lang/Iterable.java \
++    java/util/RandomAccess.java \
++    java/lang/CharacterData00.java \
++    java/lang/CharacterData01.java \
++    java/lang/CharacterData02.java \
++    java/lang/CharacterData0E.java \
++    java/lang/CharacterDataLatin1.java \
++    java/lang/CharacterDataPrivateUse.java \
++    java/lang/CharacterDataUndefined.java \
+     java/lang/Object.java \
+     java/lang/AutoCloseable.java \
+     java/lang/Class.java \
+@@ -139,13 +213,6 @@
+     java/lang/Override.java \
+     java/lang/SafeVarargs.java \
+     java/lang/SuppressWarnings.java \
+-    java/lang/ref/Reference.java \
+-        java/lang/ref/SoftReference.java \
+-	java/lang/ref/WeakReference.java \
+-	java/lang/ref/FinalReference.java \
+-	java/lang/ref/PhantomReference.java \
+-    java/lang/ref/ReferenceQueue.java \
+-    java/lang/ref/Finalizer.java \
+     java/util/BitSet.java \
+     java/util/Calendar.java \
+         java/util/GregorianCalendar.java \
diff --git a/jpegclasses.patch b/jpegclasses.patch
new file mode 100644
index 0000000..79236af
--- /dev/null
+++ b/jpegclasses.patch
@@ -0,0 +1,647 @@
+diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/ImageFormatException.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/ImageFormatException.java
+--- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/ImageFormatException.java	1969-12-31 19:00:00.000000000 -0500
++++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/ImageFormatException.java	2008-03-31 18:04:57.000000000 -0400
+@@ -0,0 +1,51 @@
++/* ImageFormatException.java
++   Copyright (C) 2007 Matthew Flaschen
++
++   This file is part of IcedTea
++
++   IcedTea is free software; you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 2, or (at your option)
++   any later version.
++
++   IcedTea 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 for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with GNU Classpath; see the file COPYING.  If not, write to the
++   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++   02110-1301 USA.
++
++   Linking this library statically or dynamically with other modules is
++   making a combined work based on this library.  Thus, the terms and
++   conditions of the GNU General Public License cover the whole
++   combination.
++
++   As a special exception, the copyright holders of this library give you
++   permission to link this library with independent modules to produce an
++   executable, regardless of the license terms of these independent
++   modules, and to copy and distribute the resulting executable under
++   terms of your choice, provided that you also meet, for each linked
++   independent module, the terms and conditions of the license of that
++   module.  An independent module is a module which is not derived from
++   or based on this library.  If you modify this library, you may extend
++   this exception to your version of the library, but you are not
++   obligated to do so.  If you do not wish to do so, delete this
++   exception statement from your version. */
++
++package com.sun.image.codec.jpeg;
++
++public class ImageFormatException extends RuntimeException
++{
++	public ImageFormatException()
++	{
++		this("");
++	}
++
++	public ImageFormatException(String s)
++	{
++		super(s);
++	}
++}
+diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGCodec.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGCodec.java
+--- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGCodec.java	1969-12-31 19:00:00.000000000 -0500
++++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGCodec.java	2008-03-31 18:04:57.000000000 -0400
+@@ -0,0 +1,146 @@
++/* JPEGCodec.java -- 
++   Copyright (C) 2007 Free Software Foundation, Inc.
++   Copyright (C) 2007 Matthew Flaschen
++
++   This file is part of GNU Classpath.
++
++   GNU Classpath is free software; you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 2, or (at your option)
++   any later version.
++
++   GNU Classpath 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 for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with GNU Classpath; see the file COPYING.  If not, write to the
++   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++   02110-1301 USA.
++
++   Linking this library statically or dynamically with other modules is
++   making a combined work based on this library.  Thus, the terms and
++   conditions of the GNU General Public License cover the whole
++   combination.
++
++   As a special exception, the copyright holders of this library give you
++   permission to link this library with independent modules to produce an
++   executable, regardless of the license terms of these independent
++   modules, and to copy and distribute the resulting executable under
++   terms of your choice, provided that you also meet, for each linked
++   independent module, the terms and conditions of the license of that
++   module.  An independent module is a module which is not derived from
++   or based on this library.  If you modify this library, you may extend
++   this exception to your version of the library, but you are not
++   obligated to do so.  If you do not wish to do so, delete this
++   exception statement from your version. */
++
++package com.sun.image.codec.jpeg;
++
++import java.io.InputStream;
++import java.io.OutputStream;
++import java.io.IOException;
++
++import java.awt.image.BufferedImage;
++import java.awt.image.Raster;
++
++import javax.imageio.*;
++import javax.imageio.stream.*;
++import javax.imageio.plugins.jpeg.*;
++
++import java.util.Iterator;
++
++public class JPEGCodec
++{
++
++	public static JPEGImageDecoder createJPEGDecoder(InputStream is)
++	{
++		return new ImageIOJPEGImageDecoder(is);
++	}
++
++	public static JPEGImageEncoder createJPEGEncoder(OutputStream os)
++	{
++		return null;
++	}
++
++	public static JPEGImageDecoder createJPEGDecoder(InputStream src, JPEGDecodeParam jdp)
++	{
++		return null; 
++	}
++        
++	public static JPEGImageEncoder createJPEGEncoder(OutputStream dest, JPEGEncodeParam jep)
++	{
++		return null;
++	}
++        
++	public static JPEGEncodeParam getDefaultJPEGEncodeParam(BufferedImage bi)
++	{
++		return null;
++	}
++        
++	public static JPEGEncodeParam getDefaultJPEGEncodeParam(int numBands, int colorID)
++	{
++		return null;
++	}
++		
++	public static JPEGEncodeParam getDefaultJPEGEncodeParam(JPEGDecodeParam jdp)
++	{
++		return null;
++	}
++        
++	public static JPEGEncodeParam getDefaultJPEGEncodeParam(Raster ras, int colorID)
++	{
++		return null;
++	}
++        
++
++	private static class ImageIOJPEGImageDecoder implements JPEGImageDecoder
++	{
++		
++		private static final String JPGMime = "image/jpeg";
++    
++		private ImageReader JPGReader;
++		
++		private InputStream in;
++		
++		private ImageIOJPEGImageDecoder (InputStream newIs)
++		{
++			in = newIs;
++			
++			Iterator<ImageReader> JPGReaderIter = ImageIO.getImageReadersByMIMEType(JPGMime);
++			if(JPGReaderIter.hasNext())
++			{
++				JPGReader  = JPGReaderIter.next();
++			}
++			
++			JPGReader.setInput(new MemoryCacheImageInputStream(in));
++		}
++
++		public BufferedImage decodeAsBufferedImage() throws IOException, ImageFormatException
++		{
++			return JPGReader.read(0);
++		}
++		
++		public Raster decodeAsRaster() throws IOException, ImageFormatException
++		{
++			return JPGReader.readRaster(0, null);
++		}
++		
++		public InputStream getInputStream()
++		{
++			return in;
++		}
++		
++		public JPEGDecodeParam getJPEGDecodeParam()
++		{
++			return null;
++		}
++
++		public void setJPEGDecodeParam(JPEGDecodeParam jdp)
++		{
++			return;
++		}
++
++	}
++}
+diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGDecodeParam.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGDecodeParam.java
+--- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGDecodeParam.java	1969-12-31 19:00:00.000000000 -0500
++++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGDecodeParam.java	2008-03-31 18:04:57.000000000 -0400
+@@ -0,0 +1,50 @@
++/* JPEGImageDecoder.java -- 
++   Copyright (C) 2007 Free Software Foundation, Inc.
++   Copyright (C) 2007 Matthew Flaschen
++
++   This file is part of GNU Classpath.
++
++   GNU Classpath is free software; you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 2, or (at your option)
++   any later version.
++
++   GNU Classpath 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 for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with GNU Classpath; see the file COPYING.  If not, write to the
++   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++   02110-1301 USA.
++
++   Linking this library statically or dynamically with other modules is
++   making a combined work based on this library.  Thus, the terms and
++   conditions of the GNU General Public License cover the whole
++   combination.
++
++   As a special exception, the copyright holders of this library give you
++   permission to link this library with independent modules to produce an
++   executable, regardless of the license terms of these independent
++   modules, and to copy and distribute the resulting executable under
++   terms of your choice, provided that you also meet, for each linked
++   independent module, the terms and conditions of the license of that
++   module.  An independent module is a module which is not derived from
++   or based on this library.  If you modify this library, you may extend
++   this exception to your version of the library, but you are not
++   obligated to do so.  If you do not wish to do so, delete this
++   exception statement from your version. */
++
++package com.sun.image.codec.jpeg;
++
++public interface JPEGDecodeParam
++{
++
++  public static final int COLOR_ID_UNKNOWN = 0;
++  public static final int COLOR_ID_RGBA = 1;
++  public static final int COLOR_ID_RGB = 2;
++  public static final int COLOR_ID_GRAY = 3;
++  public static final int COLOR_ID_YCbCrA = 4;
++  public static final int COLOR_ID_YCbCr = 5;
++}
+diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGEncodeParam.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGEncodeParam.java
+--- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGEncodeParam.java	1969-12-31 19:00:00.000000000 -0500
++++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGEncodeParam.java	2008-03-31 18:04:57.000000000 -0400
+@@ -0,0 +1,139 @@
++/* JPEGEncodeParam.java -- 
++   Copyright (C) 2007 Free Software Foundation, Inc.
++
++   This file is part of GNU Classpath.
++
++   GNU Classpath is free software; you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 2, or (at your option)
++   any later version.
++
++   GNU Classpath 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 for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with GNU Classpath; see the file COPYING.  If not, write to the
++   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++   02110-1301 USA.
++
++   Linking this library statically or dynamically with other modules is
++   making a combined work based on this library.  Thus, the terms and
++   conditions of the GNU General Public License cover the whole
++   combination.
++
++   As a special exception, the copyright holders of this library give you
++   permission to link this library with independent modules to produce an
++   executable, regardless of the license terms of these independent
++   modules, and to copy and distribute the resulting executable under
++   terms of your choice, provided that you also meet, for each linked
++   independent module, the terms and conditions of the license of that
++   module.  An independent module is a module which is not derived from
++   or based on this library.  If you modify this library, you may extend
++   this exception to your version of the library, but you are not
++   obligated to do so.  If you do not wish to do so, delete this
++   exception statement from your version. */
++
++package com.sun.image.codec.jpeg;
++
++public class JPEGEncodeParam
++{
++	public static final int COLOR_ID_UNKNOWN = 0;
++	public static final int COLOR_ID_RGBA = 1;
++	public static final int COLOR_ID_RGB = 2;
++	public static final int COLOR_ID_GRAY = 3;
++	public static final int COLOR_ID_YCbCrA = 4;
++	public static final int COLOR_ID_CMYK = 5;
++	public static final int COLOR_ID_YCbCr = 6;
++
++	public JPEGEncodeParam()
++	{
++	}
++
++	public void setQuality(float i, boolean b)
++        {
++        }	
++
++	public void setQuality(int i, boolean b)
++	{
++	}
++
++	public JPEGEncodeParam clone()
++	{
++	  return null;
++	}
++
++	public void setTableInfoValid(boolean b)
++	{
++	}
++
++	public void setImageInfoValid(boolean b)
++	{
++	}
++
++	public int getHorizontalSubsampling(int i)
++	{
++	  return 0;
++	}
++
++	public int getVerticalSubsampling(int i)
++        {
++          return 0;
++        }
++
++	public int getWidth()
++	{
++	  return 0;
++	}
++
++	public int getHeight()
++	{
++	  return 0;
++	}
++
++	public int getDensityUnit()
++        {
++          return 0;
++        }
++
++        public int getXDensity()
++        {
++          return 0;
++        }
++
++        public int getYDensity()
++        {
++          return 0;
++        }
++
++        public int getRestartInterval()
++        {
++          return 0;
++        }
++
++        public JPEGQTable getQTable(int i)
++        {
++          return new JPEGQTable();
++        }	
++
++	public void setDensityUnit(int i)
++	{
++	}
++
++	public void setXDensity(int i)
++	{
++	}
++
++	public void setYDensity(int i)
++	{
++	}
++
++	public void setRestartInterval(int i)
++	{
++	}
++
++	public void setQTable(int i, JPEGQTable jqt)
++	{
++	}
++}
+diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageDecoder.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageDecoder.java
+--- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageDecoder.java	1969-12-31 19:00:00.000000000 -0500
++++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageDecoder.java	2008-03-31 18:04:57.000000000 -0400
+@@ -0,0 +1,60 @@
++/* JPEGImageDecoder.java -- 
++   Copyright (C) 2007 Free Software Foundation, Inc.
++   Copyright (C) 2007 Matthew Flaschen
++
++   This file is part of GNU Classpath.
++
++   GNU Classpath is free software; you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 2, or (at your option)
++   any later version.
++
++   GNU Classpath 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 for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with GNU Classpath; see the file COPYING.  If not, write to the
++   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++   02110-1301 USA.
++
++   Linking this library statically or dynamically with other modules is
++   making a combined work based on this library.  Thus, the terms and
++   conditions of the GNU General Public License cover the whole
++   combination.
++
++   As a special exception, the copyright holders of this library give you
++   permission to link this library with independent modules to produce an
++   executable, regardless of the license terms of these independent
++   modules, and to copy and distribute the resulting executable under
++   terms of your choice, provided that you also meet, for each linked
++   independent module, the terms and conditions of the license of that
++   module.  An independent module is a module which is not derived from
++   or based on this library.  If you modify this library, you may extend
++   this exception to your version of the library, but you are not
++   obligated to do so.  If you do not wish to do so, delete this
++   exception statement from your version. */
++
++
++package com.sun.image.codec.jpeg;
++import java.awt.image.BufferedImage;
++import java.awt.image.Raster;
++
++import java.io.InputStream;
++import java.io.IOException;
++
++
++public interface JPEGImageDecoder
++{
++
++	public BufferedImage decodeAsBufferedImage() throws IOException, ImageFormatException;
++	
++	public Raster decodeAsRaster() throws IOException, ImageFormatException;
++	
++	public InputStream getInputStream();
++
++	public JPEGDecodeParam getJPEGDecodeParam();
++
++	public void setJPEGDecodeParam(JPEGDecodeParam jdp);
++}
+diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageEncoder.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageEncoder.java
+--- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageEncoder.java	1969-12-31 19:00:00.000000000 -0500
++++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageEncoder.java	2008-03-31 18:04:57.000000000 -0400
+@@ -0,0 +1,67 @@
++/* JPEGImageEncoder.java -- 
++   Copyright (C) 2007 Free Software Foundation, Inc.
++
++   This file is part of GNU Classpath.
++
++   GNU Classpath is free software; you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 2, or (at your option)
++   any later version.
++
++   GNU Classpath 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 for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with GNU Classpath; see the file COPYING.  If not, write to the
++   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++   02110-1301 USA.
++
++   Linking this library statically or dynamically with other modules is
++   making a combined work based on this library.  Thus, the terms and
++   conditions of the GNU General Public License cover the whole
++   combination.
++
++   As a special exception, the copyright holders of this library give you
++   permission to link this library with independent modules to produce an
++   executable, regardless of the license terms of these independent
++   modules, and to copy and distribute the resulting executable under
++   terms of your choice, provided that you also meet, for each linked
++   independent module, the terms and conditions of the license of that
++   module.  An independent module is a module which is not derived from
++   or based on this library.  If you modify this library, you may extend
++   this exception to your version of the library, but you are not
++   obligated to do so.  If you do not wish to do so, delete this
++   exception statement from your version. */
++
++package com.sun.image.codec.jpeg;
++
++import com.sun.image.codec.jpeg.*;
++import java.awt.image.BufferedImage;
++import java.awt.image.Raster;
++
++public class JPEGImageEncoder
++{
++	public JPEGImageEncoder()
++	{
++	}
++	
++	public JPEGEncodeParam getDefaultJPEGEncodeParam(BufferedImage bi)
++	{
++		return null;
++	}
++
++	public void encode(BufferedImage bi, JPEGEncodeParam p)
++	{
++	}
++
++	public void encode(Raster bi)
++        {
++        }
++
++	public void encode(BufferedImage bi)
++        {
++        }
++
++}
+diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGQTable.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGQTable.java
+--- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGQTable.java	1969-12-31 19:00:00.000000000 -0500
++++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGQTable.java	2008-03-31 18:04:57.000000000 -0400
+@@ -0,0 +1,44 @@
++/* JPEGQTable.java -- 
++   Copyright (C) 2007 Free Software Foundation, Inc.
++   Copyright (C) 2007 Matthew Flaschen
++
++   This file is part of GNU Classpath.
++
++   GNU Classpath is free software; you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 2, or (at your option)
++   any later version.
++
++   GNU Classpath 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 for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with GNU Classpath; see the file COPYING.  If not, write to the
++   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++   02110-1301 USA.
++
++   Linking this library statically or dynamically with other modules is
++   making a combined work based on this library.  Thus, the terms and
++   conditions of the GNU General Public License cover the whole
++   combination.
++
++   As a special exception, the copyright holders of this library give you
++   permission to link this library with independent modules to produce an
++   executable, regardless of the license terms of these independent
++   modules, and to copy and distribute the resulting executable under
++   terms of your choice, provided that you also meet, for each linked
++   independent module, the terms and conditions of the license of that
++   module.  An independent module is a module which is not derived from
++   or based on this library.  If you modify this library, you may extend
++   this exception to your version of the library, but you are not
++   obligated to do so.  If you do not wish to do so, delete this
++   exception statement from your version. */
++
++package com.sun.image.codec.jpeg;
++
++public class JPEGQTable
++{
++
++}
+diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/TruncatedFileException.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/TruncatedFileException.java
+--- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/TruncatedFileException.java	1969-12-31 19:00:00.000000000 -0500
++++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/TruncatedFileException.java	2008-03-31 19:38:37.000000000 -0400
+@@ -0,0 +1,58 @@
++/* TruncatedFileException.java
++   Copyright (C) 2007 Matthew Flaschen
++
++   This file is part of IcedTea
++
++   IcedTea is free software; you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 2, or (at your option)
++   any later version.
++
++   IcedTea 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 for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with GNU Classpath; see the file COPYING.  If not, write to the
++   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++   02110-1301 USA.
++
++   Linking this library statically or dynamically with other modules is
++   making a combined work based on this library.  Thus, the terms and
++   conditions of the GNU General Public License cover the whole
++   combination.
++
++   As a special exception, the copyright holders of this library give you
++   permission to link this library with independent modules to produce an
++   executable, regardless of the license terms of these independent
++   modules, and to copy and distribute the resulting executable under
++   terms of your choice, provided that you also meet, for each linked
++   independent module, the terms and conditions of the license of that
++   module.  An independent module is a module which is not derived from
++   or based on this library.  If you modify this library, you may extend
++   this exception to your version of the library, but you are not
++   obligated to do so.  If you do not wish to do so, delete this
++   exception statement from your version. */
++
++package com.sun.image.codec.jpeg;
++
++import java.awt.image.BufferedImage;
++
++public class TruncatedFileException extends RuntimeException
++{
++	public TruncatedFileException()
++	{
++		this("");
++	}
++
++	public TruncatedFileException(String s)
++	{
++		super(s);
++	}
++
++	public BufferedImage getBufferedImage()
++	{
++	  return null;
++	}
++}
diff --git a/jvmtiEnv.patch b/jvmtiEnv.patch
new file mode 100644
index 0000000..42056e0
--- /dev/null
+++ b/jvmtiEnv.patch
@@ -0,0 +1,12 @@
+--- openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp.old	2009-02-26 17:18:35.000000000 +0000
++++ openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp	2009-02-26 17:16:59.000000000 +0000
+@@ -2702,6 +2702,9 @@
+   (*entry_count_ptr) = num_entries;
+   (*table_ptr) = jvmti_table;
+ 
++  if (num_entries == 0)
++    return JVMTI_ERROR_ABSENT_INFORMATION;
++
+   return JVMTI_ERROR_NONE;
+ } /* end GetLineNumberTable */
+ 
diff --git a/libraries.patch b/libraries.patch
new file mode 100644
index 0000000..eb0ae4b
--- /dev/null
+++ b/libraries.patch
@@ -0,0 +1,1277 @@
+diff -Nru openjdk.orig/jdk/make/com/sun/java/pack/Makefile openjdk/jdk/make/com/sun/java/pack/Makefile
+--- openjdk.orig/jdk/make/com/sun/java/pack/Makefile	2011-06-11 00:38:06.000000000 +0100
++++ openjdk/jdk/make/com/sun/java/pack/Makefile	2011-06-13 15:12:16.465040427 +0100
+@@ -70,12 +70,10 @@
+ 	     $(ZIPOBJDIR)/inftrees.$(OBJECT_SUFFIX) \
+ 	     $(ZIPOBJDIR)/inffast.$(OBJECT_SUFFIX)
+ 
+-  ZINCLUDE=-I$(SHARE_SRC)/native/java/util/zip/zlib-$(ZLIB_VERSION)
+-  OTHER_CXXFLAGS += $(ZINCLUDE)
+-  LDDFLAGS += $(ZIPOBJS)
++  OTHER_LDLIBS += -lz
+ else
+   OTHER_CXXFLAGS += -DNO_ZLIB -DUNPACK_JNI
+-  OTHER_LDLIBS += $(JVMLIB)
++  OTHER_LDLIBS += -lz $(JVMLIB)
+ endif
+ 
+ CXXFLAGS_DBG += -DFULL
+@@ -94,12 +92,12 @@
+   RES = $(OBJDIR)/$(PGRM).res
+ else
+   LDOUTPUT = -o #Have a space 
+-  LDDFLAGS += -lc
++  LDDFLAGS += -lz -lc
+   OTHER_LDLIBS  += $(LIBCXX)
+ # setup the list of libraries to link in...
+ ifeq ($(PLATFORM), linux)
+ ifeq ("$(CC_VER_MAJOR)", "3")
+-  OTHER_LDLIBS  += -Wl,-Bstatic -lgcc_eh -Wl,-Bdynamic
++  OTHER_LDLIBS  += -lz -Wl,-Bstatic -lgcc_eh -Wl,-Bdynamic
+ endif
+ endif #LINUX
+ endif #PLATFORM
+diff -Nru openjdk.orig/jdk/make/common/Program.gmk openjdk/jdk/make/common/Program.gmk
+--- openjdk.orig/jdk/make/common/Program.gmk	2011-06-11 00:38:06.000000000 +0100
++++ openjdk/jdk/make/common/Program.gmk	2011-06-13 15:12:16.465040427 +0100
+@@ -91,6 +91,7 @@
+ 	endif
+     endif
+     ifeq ($(PLATFORM), linux)
++        LDFLAGS += -lz
+ 	LDFLAGS += $(LDFLAG_Z_ORIGIN)
+ 	LDFLAGS += -Wl,--allow-shlib-undefined
+ 	LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../lib/$(LIBARCH)/jli
+@@ -247,7 +248,6 @@
+ endif
+ 
+ OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC)/bin -I$(LAUNCHER_PLATFORM_SRC)/bin
+-OTHER_INCLUDES += -I$(SHARE_SRC)/native/java/util/zip/zlib-1.1.3
+ 
+ OTHER_CPPFLAGS += -DPROGNAME='"$(PROGRAM)"'
+ VERSION_DEFINES += -DFULL_VERSION='"$(FULL_VERSION)"'
+diff -Nru openjdk.orig/jdk/make/java/jli/Makefile openjdk/jdk/make/java/jli/Makefile
+--- openjdk.orig/jdk/make/java/jli/Makefile	2011-06-11 00:38:06.000000000 +0100
++++ openjdk/jdk/make/java/jli/Makefile	2011-06-13 15:12:16.465040427 +0100
+@@ -44,7 +44,6 @@
+ 
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+-ZIP_SRC = $(SHARE_SRC)/native/java/util/zip/zlib-$(ZLIB_VERSION)
+ LAUNCHER_SHARE_SRC = $(SHARE_SRC)/bin
+ LAUNCHER_PLATFORM_SRC = $(PLATFORM_SRC)/bin
+ 
+@@ -69,13 +68,7 @@
+ 	parse_manifest.c \
+ 	version_comp.c \
+ 	wildcard.c \
+-	jli_util.c \
+-	inflate.c \
+-	inftrees.c \
+-	inffast.c \
+-	zadler32.c \
+-	zcrc32.c \
+-	zutil.c
++	jli_util.c
+ 
+ ifneq ($(PLATFORM), windows)
+   FILES_c += ergo.c 
+@@ -105,7 +98,7 @@
+ 	# Note: its important to keep this order meaning -lc is the
+ 	# last library otherwise it could cause compatibility issues
+ 	# by pulling in SUNW_private symbols from libc
+-	LDLIBS = -ldl -lc
++	LDLIBS = -ldl -lz -lc
+ ifeq ($(USE_PTHREADS),true)
+ 	LDLIBS += -lpthread
+ endif # USE_PTHREADS 
+@@ -129,7 +122,6 @@
+ 
+ OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC)
+ OTHER_INCLUDES += -I$(LAUNCHER_PLATFORM_SRC)
+-OTHER_INCLUDES += -I$(ZIP_SRC)
+ 
+ #
+ # Library to compile.
+@@ -164,4 +156,4 @@
+ #
+ # Add to ambient vpath so we pick up the library files
+ #
+-vpath %.c $(LAUNCHER_SHARE_SRC) $(ZIP_SRC) $(LAUNCHER_PLATFORM_SRC)
++vpath %.c $(LAUNCHER_SHARE_SRC) $(LAUNCHER_PLATFORM_SRC)
+diff -Nru openjdk.orig/jdk/make/java/zip/FILES_c.gmk openjdk/jdk/make/java/zip/FILES_c.gmk
+--- openjdk.orig/jdk/make/java/zip/FILES_c.gmk	2010-07-29 21:55:27.000000000 +0100
++++ openjdk/jdk/make/java/zip/FILES_c.gmk	2011-06-13 15:12:16.477040613 +0100
+@@ -29,16 +29,4 @@
+ 	Deflater.c \
+ 	Inflater.c \
+ 	ZipFile.c \
+-	zip_util.c \
+-	compress.c \
+-	deflate.c \
+-	gzio.c \
+-	infback.c \
+-	inffast.c \
+-	inflate.c \
+-	inftrees.c \
+-	trees.c \
+-	uncompr.c \
+-	zadler32.c \
+-	zcrc32.c \
+-	zutil.c 
++	zip_util.c
+diff -Nru openjdk.orig/jdk/make/java/zip/Makefile openjdk/jdk/make/java/zip/Makefile
+--- openjdk.orig/jdk/make/java/zip/Makefile	2011-06-11 00:38:06.000000000 +0100
++++ openjdk/jdk/make/java/zip/Makefile	2011-06-13 15:12:16.477040613 +0100
+@@ -74,16 +74,10 @@
+ CPPFLAGS += -UDEBUG 
+ endif
+ 
+-CPPFLAGS += -I$(SHARE_SRC)/native/java/util/zip/zlib-$(ZLIB_VERSION)
+ CPPFLAGS += -I$(SHARE_SRC)/native/java/io
+ CPPFLAGS += -I$(PLATFORM_SRC)/native/java/io
+ 
+ #
+-# Add to ambient vpath so we pick up the library files
+-#
+-vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/zlib-$(ZLIB_VERSION)
+-
+-#
+ # Link to JVM library for JVM_Zip* functions
+ #
+-OTHER_LDLIBS = $(JVMLIB)
++OTHER_LDLIBS = $(JVMLIB) -lz
+diff -Nru openjdk.orig/jdk/make/sun/jpeg/FILES_c.gmk openjdk/jdk/make/sun/jpeg/FILES_c.gmk
+--- openjdk.orig/jdk/make/sun/jpeg/FILES_c.gmk	2010-07-29 21:55:29.000000000 +0100
++++ openjdk/jdk/make/sun/jpeg/FILES_c.gmk	2011-06-13 15:12:16.477040613 +0100
+@@ -25,51 +25,7 @@
+ 
+ FILES_c = \
+ 	imageioJPEG.c \
+-	jpegdecoder.c \
+-	jcomapi.c \
+-	jdapimin.c \
+-	jdapistd.c \
+-	jdcoefct.c \
+-	jdcolor.c \
+-	jddctmgr.c \
+-	jdhuff.c \
+-	jdinput.c \
+-	jdmainct.c \
+-	jdmarker.c \
+-	jdmaster.c \
+-	jdmerge.c \
+-	jdphuff.c \
+-	jdpostct.c \
+-	jdsample.c \
+-	jerror.c \
+-	jidctflt.c \
+-	jidctfst.c \
+-	jidctint.c \
+-	jidctred.c \
+-	jmemmgr.c \
+-	jmemnobs.c \
+-	jquant1.c \
+-	jquant2.c \
+-	jutils.c \
+-	jcapimin.c \
+-	jcapistd.c \
+-	jccoefct.c \
+-	jccolor.c \
+-	jcdctmgr.c \
+-	jchuff.c \
+-	jcinit.c \
+-	jcmainct.c \
+-	jcmarker.c \
+-	jcmaster.c \
+-	jcparam.c \
+-	jcphuff.c \
+-	jcprepct.c \
+-	jcsample.c \
+-	jctrans.c \
+-	jdtrans.c \
+-	jfdctflt.c \
+-	jfdctfst.c \
+-	jfdctint.c
++	jpegdecoder.c
+ 
+ ifndef OPENJDK
+ FILES_c += \
+diff -Nru openjdk.orig/jdk/make/sun/jpeg/Makefile openjdk/jdk/make/sun/jpeg/Makefile
+--- openjdk.orig/jdk/make/sun/jpeg/Makefile	2011-06-11 00:38:07.000000000 +0100
++++ openjdk/jdk/make/sun/jpeg/Makefile	2011-06-13 15:12:16.477040613 +0100
+@@ -86,6 +86,8 @@
+ include $(BUILDDIR)/common/Mapfile-vers.gmk
+ include $(BUILDDIR)/common/Library.gmk
+ 
++LDLIBS += -ldl 
++
+ #
+ # Add to ambient vpath to get files in a subdirectory
+ #
+diff -Nru openjdk.orig/jdk/make/sun/splashscreen/FILES_c.gmk openjdk/jdk/make/sun/splashscreen/FILES_c.gmk
+--- openjdk.orig/jdk/make/sun/splashscreen/FILES_c.gmk	2010-07-29 21:55:29.000000000 +0100
++++ openjdk/jdk/make/sun/splashscreen/FILES_c.gmk	2011-06-13 15:12:16.477040613 +0100
+@@ -30,79 +30,5 @@
+ 	splashscreen_impl.c \
+ 	splashscreen_jpeg.c \
+ 	splashscreen_png.c \
+-	splashscreen_sys.c \
+-	png.c \
+-	pngerror.c \
+-	pngget.c \
+-	pngmem.c  \
+-	pngpread.c \
+-	pngread.c \
+-	pngrio.c \
+-	pngrtran.c \
+-	pngrutil.c \
+-	pngset.c \
+-	pngtrans.c \
+-	pngwio.c \
+-	pngwrite.c \
+-	pngwtran.c \
+-	pngwutil.c \
+-	dgif_lib.c \
+-	gif_err.c \
+-	gifalloc.c \
+-	compress.c \
+-	deflate.c \
+-	gzio.c \
+-	infback.c \
+-	inffast.c \
+-	inflate.c \
+-	inftrees.c \
+-	trees.c \
+-	uncompr.c \
+-	zadler32.c \
+-	zcrc32.c \
+-	zutil.c \
+-	jcomapi.c \
+-	jdapimin.c \
+-	jdapistd.c \
+-	jdcoefct.c \
+-	jdcolor.c \
+-	jddctmgr.c \
+-	jdhuff.c \
+-	jdinput.c \
+-	jdmainct.c \
+-	jdmarker.c \
+-	jdmaster.c \
+-	jdmerge.c \
+-	jdphuff.c \
+-	jdpostct.c \
+-	jdsample.c \
+-	jerror.c \
+-	jidctflt.c \
+-	jidctfst.c \
+-	jidctint.c \
+-	jidctred.c \
+-	jmemmgr.c \
+-	jmemnobs.c \
+-	jquant1.c \
+-	jquant2.c \
+-	jutils.c \
+-	jcapimin.c \
+-	jcapistd.c \
+-	jccoefct.c \
+-	jccolor.c \
+-	jcdctmgr.c \
+-	jchuff.c \
+-	jcinit.c \
+-	jcmainct.c \
+-	jcmarker.c \
+-	jcmaster.c \
+-	jcparam.c \
+-	jcphuff.c \
+-	jcprepct.c \
+-	jcsample.c \
+-	jctrans.c \
+-	jdtrans.c \
+-	jfdctflt.c \
+-	jfdctfst.c \
+-	jfdctint.c
++	splashscreen_sys.c
+ 
+diff -Nru openjdk.orig/jdk/make/sun/splashscreen/Makefile openjdk/jdk/make/sun/splashscreen/Makefile
+--- openjdk.orig/jdk/make/sun/splashscreen/Makefile	2011-06-11 00:38:07.000000000 +0100
++++ openjdk/jdk/make/sun/splashscreen/Makefile	2011-06-13 15:12:16.477040613 +0100
+@@ -59,12 +59,12 @@
+ # C Flags
+ #
+ 
+-CFLAGS += -DSPLASHSCREEN
++CFLAGS += -DSPLASHSCREEN -DPNG_NO_MMX_CODE
+ 
+ ifneq ($(PLATFORM), windows)
+   CFLAGS += -DWITH_X11
+   CPPFLAGS += -I$(OPENWIN_HOME)/include -I$(OPENWIN_HOME)/include/X11/extensions
+-  OTHER_LDLIBS += -L$(OPENWIN_LIB) -lX11 -lXext $(LIBM) -lpthread
++  OTHER_LDLIBS += -L$(OPENWIN_LIB) -lX11 -lXext $(LIBM) -lpng -ljpeg -lgif -lz -lpthread
+ else # PLATFORM
+   CFLAGS += -DWITH_WIN32
+   OTHER_LDLIBS += kernel32.lib user32.lib gdi32.lib delayimp.lib /DELAYLOAD:user32.dll
+@@ -76,14 +76,10 @@
+ #
+ vpath %.c   $(SHARE_SRC)/native/$(PKGDIR)/splashscreen
+ vpath %.c   $(SHARE_SRC)/native/$(PKGDIR)
+-vpath %.c   $(SHARE_SRC)/native/$(PKGDIR)/giflib
+-vpath %.c   $(SHARE_SRC)/native/java/util/zip/zlib-$(ZLIB_VERSION)
+-vpath %.c   $(SHARE_SRC)/native/$(PKGDIR)/libpng
+ vpath %.c   $(SHARE_SRC)/native/$(PKGDIR)/image/jpeg
+ vpath %.c   $(PLATFORM_SRC)/native/$(PKGDIR)/splashscreen
+ 
+ CPPFLAGS += -I$(PLATFORM_SRC)/native/$(PKGDIR)/splashscreen -I$(SHARE_SRC)/native/$(PKGDIR)/splashscreen
+-CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR)/image/jpeg -I$(SHARE_SRC)/native/java/util/zip/zlib-$(ZLIB_VERSION)
+ 
+ # Shun the less than portable MMX assembly code in pnggccrd.c,
+ # and use alternative implementations in C.
+diff -Nru openjdk.orig/jdk/src/share/native/com/sun/java/util/jar/pack/defines.h openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/defines.h
+--- openjdk.orig/jdk/src/share/native/com/sun/java/util/jar/pack/defines.h	2010-07-29 21:56:11.000000000 +0100
++++ openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/defines.h	2011-06-13 15:12:16.477040613 +0100
+@@ -89,11 +89,7 @@
+ // bytes and byte arrays
+ 
+ typedef unsigned int uint;
+-#ifdef _LP64
+-typedef unsigned int uLong; // Historical zlib, should be 32-bit.
+-#else
+ typedef unsigned long uLong;
+-#endif
+ #ifdef _MSC_VER
+ typedef LONGLONG        jlong;
+ typedef DWORDLONG       julong;
+diff -Nru openjdk.orig/jdk/src/share/native/java/util/zip/Adler32.c openjdk/jdk/src/share/native/java/util/zip/Adler32.c
+--- openjdk.orig/jdk/src/share/native/java/util/zip/Adler32.c	2010-07-29 21:56:11.000000000 +0100
++++ openjdk/jdk/src/share/native/java/util/zip/Adler32.c	2011-06-13 15:12:16.477040613 +0100
+@@ -29,7 +29,7 @@
+ 
+ #include "jni.h"
+ #include "jni_util.h"
+-#include "zlib.h"
++#include <zlib.h>
+ 
+ #include "java_util_zip_Adler32.h"
+ 
+diff -Nru openjdk.orig/jdk/src/share/native/java/util/zip/CRC32.c openjdk/jdk/src/share/native/java/util/zip/CRC32.c
+--- openjdk.orig/jdk/src/share/native/java/util/zip/CRC32.c	2010-07-29 21:56:11.000000000 +0100
++++ openjdk/jdk/src/share/native/java/util/zip/CRC32.c	2011-06-13 15:12:16.477040613 +0100
+@@ -29,7 +29,7 @@
+ 
+ #include "jni.h"
+ #include "jni_util.h"
+-#include "zlib.h"
++#include <zlib.h>
+ 
+ #include "java_util_zip_CRC32.h"
+ 
+diff -Nru openjdk.orig/jdk/src/share/native/java/util/zip/Deflater.c openjdk/jdk/src/share/native/java/util/zip/Deflater.c
+--- openjdk.orig/jdk/src/share/native/java/util/zip/Deflater.c	2011-06-11 00:38:12.000000000 +0100
++++ openjdk/jdk/src/share/native/java/util/zip/Deflater.c	2011-06-13 15:12:16.481040676 +0100
+@@ -32,7 +32,7 @@
+ #include "jlong.h"
+ #include "jni.h"
+ #include "jni_util.h"
+-#include "zlib.h"
++#include <zlib.h>
+ 
+ #include "java_util_zip_Deflater.h"
+ 
+diff -Nru openjdk.orig/jdk/src/share/native/java/util/zip/Inflater.c openjdk/jdk/src/share/native/java/util/zip/Inflater.c
+--- openjdk.orig/jdk/src/share/native/java/util/zip/Inflater.c	2011-06-11 00:38:12.000000000 +0100
++++ openjdk/jdk/src/share/native/java/util/zip/Inflater.c	2011-06-13 15:12:16.481040676 +0100
+@@ -35,7 +35,7 @@
+ #include "jni.h"
+ #include "jvm.h"
+ #include "jni_util.h"
+-#include "zlib.h"
++#include <zlib.h>
+ #include "java_util_zip_Inflater.h"
+ 
+ #define ThrowDataFormatException(env, msg) \
+diff -Nru openjdk.orig/jdk/src/share/native/java/util/zip/zip_util.c openjdk/jdk/src/share/native/java/util/zip/zip_util.c
+--- openjdk.orig/jdk/src/share/native/java/util/zip/zip_util.c	2011-03-14 22:10:33.000000000 +0000
++++ openjdk/jdk/src/share/native/java/util/zip/zip_util.c	2011-06-13 15:12:16.481040676 +0100
+@@ -44,7 +44,8 @@
+ #include "io_util.h"
+ #include "io_util_md.h"
+ #include "zip_util.h"
+-#include "zlib.h"
++
++#include <zlib.h>
+ 
+ /* USE_MMAP means mmap the CEN & ENDHDR part of the zip file. */
+ #ifdef USE_MMAP
+diff -Nru openjdk.orig/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c openjdk/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c
+--- openjdk.orig/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	2011-06-11 00:38:12.000000000 +0100
++++ openjdk/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	2011-06-13 15:12:16.481040676 +0100
+@@ -51,7 +51,9 @@
+ 
+ /* headers from the JPEG library */
+ #include <jpeglib.h>
+-#include "jerror.h"
++#include <jerror.h>
++
++#include <dlfcn.h>
+ 
+ #undef MAX
+ #define MAX(a,b)        ((a) > (b) ? (a) : (b))
+@@ -75,6 +77,62 @@
+ static jfieldID JPEGHuffmanTable_lengthsID;
+ static jfieldID JPEGHuffmanTable_valuesID;
+ 
++static void initIDs();
++
++typedef struct jpeg_error_mgr * (*fn_jpegstderror)(struct jpeg_error_mgr *);
++typedef boolean (*fn_jpegresynctorestart)(j_decompress_ptr, int);
++typedef JDIMENSION (*fn_jpegreadscanlines)(j_decompress_ptr, JSAMPARRAY, JDIMENSION);
++typedef boolean (*fn_jpegfinishoutput)(j_decompress_ptr);
++typedef int (*fn_jpegreadheader)(j_decompress_ptr, boolean);
++typedef boolean (*fn_jpegstartdecompress)(j_decompress_ptr);
++typedef boolean (*fn_jpeghasmultiplescans)(j_decompress_ptr);
++typedef boolean (*fn_jpegfinishdecompress)(j_decompress_ptr);
++typedef boolean (*fn_jpegstartoutput)(j_decompress_ptr, int);
++typedef void (*fn_jpegabort)(j_common_ptr);
++typedef void (*fn_jpegabortdecompress)(j_decompress_ptr);
++typedef JHUFF_TBL * (*fn_jpegallochufftable)(j_common_ptr);
++typedef JQUANT_TBL * (*fn_jpegallocquanttable)(j_common_ptr);
++typedef void (*fn_jpegcreatecompress)(j_compress_ptr, int, size_t);
++typedef void (*fn_jpegcreatedecompress)(j_decompress_ptr, int, size_t);
++typedef void (*fn_jpegdestroy)(j_common_ptr);
++typedef void (*fn_jpegfinishcompress)(j_compress_ptr);
++typedef boolean (*fn_jpeginputcomplete)(j_decompress_ptr);
++typedef void (*fn_jpegsavemarkers)(j_decompress_ptr, int, unsigned int);
++typedef void (*fn_jpegsetcolorspace)(j_compress_ptr, J_COLOR_SPACE);
++typedef void (*fn_jpegsetdefaults)(j_compress_ptr);
++typedef void (*fn_jpegsimpleprogression)(j_compress_ptr);
++typedef void (*fn_jpegstartcompress)(j_compress_ptr, boolean);
++typedef void (*fn_jpegsuppresstables)(j_compress_ptr, boolean);
++typedef JDIMENSION (*fn_jpegwritescanlines)(j_compress_ptr, JSAMPARRAY, JDIMENSION);
++typedef void (*fn_jpegwritetables)(j_compress_ptr);
++
++fn_jpegabort jpegabort;
++fn_jpegabortdecompress jpegabortdecompress;
++fn_jpegallochufftable jpegallochufftable;
++fn_jpegallocquanttable jpegallocquanttable;
++fn_jpegcreatecompress jpegcreatecompress;
++fn_jpegcreatedecompress jpegcreatedecompress;
++fn_jpegdestroy jpegdestroy;
++fn_jpegfinishcompress jpegfinishcompress;
++fn_jpeginputcomplete jpeginputcomplete;
++fn_jpegsavemarkers jpegsavemarkers;
++fn_jpegsetcolorspace jpegsetcolorspace;
++fn_jpegsetdefaults jpegsetdefaults;
++fn_jpegsimpleprogression jpegsimpleprogression;
++fn_jpegstartcompress jpegstartcompress;
++fn_jpegsuppresstables jpegsuppresstables;
++fn_jpegwritescanlines jpegwritescanlines;
++fn_jpegwritetables jpegwritetables;
++fn_jpegstderror jpegstderror;
++fn_jpegstartoutput jpegstartoutput;
++fn_jpegfinishdecompress jpegfinishdecompress;
++fn_jpeghasmultiplescans jpeghasmultiplescans;
++fn_jpegstartdecompress jpegstartdecompress;
++fn_jpegreadheader jpegreadheader;
++fn_jpegfinishoutput jpegfinishoutput;
++fn_jpegreadscanlines jpegreadscanlines;
++fn_jpegresynctorestart jpegresynctorestart;
++
+ /*
+  * Defined in jpegdecoder.c.  Copy code from there if and
+  * when that disappears. */
+@@ -608,7 +666,7 @@
+         return;
+     }
+ 
+-    jpeg_abort(cinfo);  // Frees any markers, but not tables
++    jpegabort(cinfo);  // Frees any markers, but not tables
+ 
+ }
+ 
+@@ -633,7 +691,7 @@
+         return;
+     }
+ 
+-    jpeg_abort(cinfo);  // Does not reset tables
++    jpegabort(cinfo);  // Does not reset tables
+ 
+ }
+ 
+@@ -651,7 +709,7 @@
+             free(cinfo->dest);
+             cinfo->dest = NULL;
+         }
+-        jpeg_destroy(info);
++        jpegdestroy(info);
+         free(info);
+     }
+ }
+@@ -691,14 +749,14 @@
+             decomp = (j_decompress_ptr) cinfo;
+             if (decomp->quant_tbl_ptrs[i] == NULL) {
+                 decomp->quant_tbl_ptrs[i] =
+-                    jpeg_alloc_quant_table(cinfo);
++                    jpegallocquanttable(cinfo);
+             }
+             quant_ptr = decomp->quant_tbl_ptrs[i];
+         } else {
+             comp = (j_compress_ptr) cinfo;
+             if (comp->quant_tbl_ptrs[i] == NULL) {
+                 comp->quant_tbl_ptrs[i] =
+-                    jpeg_alloc_quant_table(cinfo);
++                    jpegallocquanttable(cinfo);
+             }
+             quant_ptr = comp->quant_tbl_ptrs[i];
+         }
+@@ -789,14 +847,14 @@
+             decomp = (j_decompress_ptr) cinfo;
+             if (decomp->dc_huff_tbl_ptrs[i] == NULL) {
+                 decomp->dc_huff_tbl_ptrs[i] =
+-                    jpeg_alloc_huff_table(cinfo);
++                    jpegallochufftable(cinfo);
+             }
+             huff_ptr = decomp->dc_huff_tbl_ptrs[i];
+         } else {
+             comp = (j_compress_ptr) cinfo;
+             if (comp->dc_huff_tbl_ptrs[i] == NULL) {
+                 comp->dc_huff_tbl_ptrs[i] =
+-                    jpeg_alloc_huff_table(cinfo);
++                    jpegallochufftable(cinfo);
+             }
+             huff_ptr = comp->dc_huff_tbl_ptrs[i];
+         }
+@@ -814,14 +872,14 @@
+             decomp = (j_decompress_ptr) cinfo;
+             if (decomp->ac_huff_tbl_ptrs[i] == NULL) {
+                 decomp->ac_huff_tbl_ptrs[i] =
+-                    jpeg_alloc_huff_table(cinfo);
++                    jpegallochufftable(cinfo);
+             }
+             huff_ptr = decomp->ac_huff_tbl_ptrs[i];
+         } else {
+             comp = (j_compress_ptr) cinfo;
+             if (comp->ac_huff_tbl_ptrs[i] == NULL) {
+                 comp->ac_huff_tbl_ptrs[i] =
+-                    jpeg_alloc_huff_table(cinfo);
++                    jpegallochufftable(cinfo);
+             }
+             huff_ptr = comp->ac_huff_tbl_ptrs[i];
+         }
+@@ -1381,6 +1439,8 @@
+      jclass ImageInputStreamClass,
+      jclass qTableClass,
+      jclass huffClass) {
++   
++    initIDs();
+ 
+     ImageInputStream_readID = (*env)->GetMethodID(env,
+                                                   ImageInputStreamClass,
+@@ -1467,7 +1527,7 @@
+     }
+ 
+     /* We set up the normal JPEG error routines, then override error_exit. */
+-    cinfo->err = jpeg_std_error(&(jerr->pub));
++    cinfo->err = jpegstderror(&(jerr->pub));
+     jerr->pub.error_exit = sun_jpeg_error_exit;
+     /* We need to setup our own print routines */
+     jerr->pub.output_message = sun_jpeg_output_message;
+@@ -1484,11 +1544,11 @@
+     }
+ 
+     /* Perform library initialization */
+-    jpeg_create_decompress(cinfo);
++    jpegcreatedecompress(cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct jpeg_decompress_struct));
+ 
+     // Set up to keep any APP2 markers, as these might contain ICC profile
+     // data
+-    jpeg_save_markers(cinfo, ICC_MARKER, 0xFFFF);
++    jpegsavemarkers(cinfo, ICC_MARKER, 0xFFFF);
+ 
+     /*
+      * Now set up our source.
+@@ -1507,7 +1567,7 @@
+     cinfo->src->init_source = imageio_init_source;
+     cinfo->src->fill_input_buffer = imageio_fill_input_buffer;
+     cinfo->src->skip_input_data = imageio_skip_input_data;
+-    cinfo->src->resync_to_restart = jpeg_resync_to_restart; // use default
++    cinfo->src->resync_to_restart = jpegresynctorestart; // use default
+     cinfo->src->term_source = imageio_term_source;
+ 
+     /* set up the association to persist for future calls */
+@@ -1627,7 +1687,7 @@
+         src->bytes_in_buffer = 0;
+     }
+ 
+-    ret = jpeg_read_header(cinfo, FALSE);
++    ret = jpegreadheader(cinfo, FALSE);
+ 
+     if (ret == JPEG_HEADER_TABLES_ONLY) {
+         retval = JNI_TRUE;
+@@ -1756,7 +1816,7 @@
+                                cinfo->num_components,
+                                profileData);
+         if (reset) {
+-            jpeg_abort_decompress(cinfo);
++            jpegabortdecompress(cinfo);
+         }
+     }
+ 
+@@ -1951,7 +2011,7 @@
+                    TRUE);
+     }
+ 
+-    progressive = jpeg_has_multiple_scans(cinfo);
++    progressive = jpeghasmultiplescans(cinfo);
+     if (progressive) {
+         cinfo->buffered_image = TRUE;
+         cinfo->input_scan_number = minProgressivePass+1; // Java count from 0
+@@ -1963,7 +2023,7 @@
+ 
+     data->streamBuf.suspendable = FALSE;
+ 
+-    jpeg_start_decompress(cinfo);
++    jpegstartdecompress(cinfo);
+ 
+     if (numBands !=  cinfo->output_components) {
+         JNU_ThrowByName(env, "javax/imageio/IIOException",
+@@ -1988,7 +2048,7 @@
+         if (progressive) {
+             // initialize the next pass.  Note that this skips up to
+             // the first interesting pass.
+-            jpeg_start_output(cinfo, cinfo->input_scan_number);
++            jpegstartoutput(cinfo, cinfo->input_scan_number);
+             if (wantUpdates) {
+                 (*env)->CallVoidMethod(env, this,
+                                        JPEGImageReader_passStartedID,
+@@ -2004,7 +2064,7 @@
+         // Skip until the first interesting line
+         while ((data->abortFlag == JNI_FALSE)
+                && ((jint)cinfo->output_scanline < sourceYStart)) {
+-            jpeg_read_scanlines(cinfo, &scanLinePtr, 1);
++            jpegreadscanlines(cinfo, &scanLinePtr, 1);
+         }
+ 
+         scanlineLimit = sourceYStart+sourceHeight;
+@@ -2017,7 +2077,7 @@
+         while ((data->abortFlag == JNI_FALSE)
+                && ((jint)cinfo->output_scanline < scanlineLimit)) {
+ 
+-            jpeg_read_scanlines(cinfo, &scanLinePtr, 1);
++            jpegreadscanlines(cinfo, &scanLinePtr, 1);
+ 
+             // Now mangle it into our buffer
+             out = data->pixelBuf.buf.bp;
+@@ -2072,13 +2132,13 @@
+                 skipLines = linesLeft;
+             }
+             for(i = 0; i < skipLines; i++) {
+-                jpeg_read_scanlines(cinfo, &scanLinePtr, 1);
++                jpegreadscanlines(cinfo, &scanLinePtr, 1);
+             }
+         }
+         if (progressive) {
+-            jpeg_finish_output(cinfo); // Increments pass counter
++            jpegfinishoutput(cinfo); // Increments pass counter
+             // Call Java to notify pass complete
+-            if (jpeg_input_complete(cinfo)
++            if (jpeginputcomplete(cinfo)
+                 || (cinfo->input_scan_number > maxProgressivePass)) {
+                 done = TRUE;
+             }
+@@ -2098,9 +2158,9 @@
+     if (cinfo->output_scanline == cinfo->output_height) {
+         //    if ((cinfo->output_scanline == cinfo->output_height) &&
+         //(jpeg_input_complete(cinfo))) {  // We read the whole file
+-        jpeg_finish_decompress(cinfo);
++        jpegfinishdecompress(cinfo);
+     } else {
+-        jpeg_abort_decompress(cinfo);
++        jpegabortdecompress(cinfo);
+     }
+ 
+     free(scanLinePtr);
+@@ -2146,7 +2206,7 @@
+ 
+     cinfo = (j_decompress_ptr) data->jpegObj;
+ 
+-    jpeg_abort_decompress(cinfo);
++    jpegabortdecompress(cinfo);
+ }
+ 
+ 
+@@ -2352,6 +2412,150 @@
+ 
+ /********************** end of destination manager ************/
+ 
++METHODDEF(void)
++initIDs()
++{
++#if JPEG_LIB_VERSION >= 80
++    void *handle = dlopen("libjpeg.so.8", RTLD_LAZY | RTLD_GLOBAL);
++#else
++#if JPEG_LIB_VERSION >= 70
++    void *handle = dlopen("libjpeg.so.7", RTLD_LAZY | RTLD_GLOBAL);
++#else
++    void *handle = dlopen("libjpeg.so.62", RTLD_LAZY | RTLD_GLOBAL);
++#endif
++#endif
++    
++    jpegstderror = (fn_jpegstderror)dlsym(handle, "jpeg_std_error");
++    if (jpegstderror == NULL) {
++       dlclose(handle);
++    }
++
++    jpegreadheader = (fn_jpegreadheader)dlsym(handle, "jpeg_read_header");
++    if (jpegreadheader == NULL) {
++       dlclose(handle);
++    }
++
++    jpeghasmultiplescans = (fn_jpeghasmultiplescans)dlsym(handle, "jpeg_has_multiple_scans");
++    if (jpeghasmultiplescans == NULL) {
++       dlclose(handle);
++    }
++
++    jpegstartdecompress = (fn_jpegstartdecompress)dlsym(handle, "jpeg_start_decompress");
++    if (jpegstartdecompress == NULL) {
++       dlclose(handle);
++    }
++
++    jpegstartoutput = (fn_jpegstartoutput)dlsym(handle, "jpeg_start_output");
++    if (jpegstartoutput == NULL) {
++       dlclose(handle);
++    }
++
++    jpegfinishdecompress = (fn_jpegfinishdecompress)dlsym(handle, "jpeg_finish_decompress");
++    if (jpegfinishdecompress == NULL) {
++       dlclose(handle);
++    }
++
++    jpegreadscanlines = (fn_jpegreadscanlines)dlsym(handle, "jpeg_read_scanlines");
++    if (jpegreadscanlines == NULL) {
++       dlclose(handle);
++    }
++
++    jpegfinishoutput = (fn_jpegfinishoutput)dlsym(handle, "jpeg_finish_output");
++    if (jpegfinishoutput == NULL) {
++       dlclose(handle);
++    }
++
++    jpegresynctorestart = (fn_jpegresynctorestart)dlsym(handle, "jpeg_resync_to_restart");
++    if (jpegresynctorestart == NULL) {
++       dlclose(handle);
++    }
++
++    jpegabort = (fn_jpegabort)dlsym(handle, "jpeg_abort");
++    if (jpegabort == NULL) {
++       dlclose(handle);
++    }
++ 
++    jpegabortdecompress = (fn_jpegabortdecompress)dlsym(handle, "jpeg_abort_decompress");
++    if (jpegabortdecompress == NULL) {
++       dlclose(handle);
++    }
++
++    jpegallochufftable = (fn_jpegallochufftable)dlsym(handle, "jpeg_alloc_huff_table");
++    if (jpegallochufftable == NULL) {
++       dlclose(handle);
++    }
++
++    jpegallocquanttable = (fn_jpegallocquanttable)dlsym(handle, "jpeg_alloc_quant_table");
++    if (jpegallocquanttable == NULL) {
++       dlclose(handle);
++    }
++
++    jpegcreatecompress = (fn_jpegcreatecompress)dlsym(handle, "jpeg_CreateCompress");
++    if (jpegcreatecompress == NULL) {
++       dlclose(handle);
++    }
++
++    jpegcreatedecompress = (fn_jpegcreatedecompress)dlsym(handle, "jpeg_CreateDecompress");
++    if (jpegcreatedecompress == NULL) {
++       dlclose(handle);
++    }
++
++    jpegdestroy = (fn_jpegdestroy)dlsym(handle, "jpeg_destroy");
++    if (jpegdestroy == NULL) {
++       dlclose(handle);
++    }
++
++    jpegfinishcompress = (fn_jpegfinishcompress)dlsym(handle, "jpeg_finish_compress");
++    if (jpegfinishcompress == NULL) {
++       dlclose(handle);
++    }
++
++    jpeginputcomplete = (fn_jpeginputcomplete)dlsym(handle, "jpeg_input_complete");
++    if (jpeginputcomplete == NULL) {
++       dlclose(handle);
++    }
++
++    jpegsavemarkers = (fn_jpegsavemarkers)dlsym(handle, "jpeg_save_markers");
++    if (jpegsavemarkers == NULL) {
++       dlclose(handle);
++    }
++
++    jpegsetcolorspace = (fn_jpegsetcolorspace)dlsym(handle, "jpeg_set_colorspace");
++    if (jpegsetcolorspace == NULL) {
++       dlclose(handle);
++    }
++
++    jpegsetdefaults = (fn_jpegsetdefaults)dlsym(handle, "jpeg_set_defaults");
++    if (jpegsetdefaults == NULL) {
++       dlclose(handle);
++    }
++
++    jpegsimpleprogression = (fn_jpegsimpleprogression)dlsym(handle, "jpeg_simple_progression");
++    if (jpegsimpleprogression == NULL) {
++       dlclose(handle);
++    }
++
++    jpegstartcompress = (fn_jpegstartcompress)dlsym(handle, "jpeg_start_compress");
++    if (jpegstartcompress == NULL) {
++       dlclose(handle);
++    }
++
++    jpegsuppresstables = (fn_jpegsuppresstables)dlsym(handle, "jpeg_suppress_tables");
++    if (jpegsuppresstables == NULL) {
++       dlclose(handle);
++    }
++
++    jpegwritescanlines = (fn_jpegwritescanlines)dlsym(handle, "jpeg_write_scanlines");
++    if (jpegwritescanlines == NULL) {
++       dlclose(handle);
++    }
++
++    jpegwritetables = (fn_jpegwritetables)dlsym(handle, "jpeg_write_tables");
++    if (jpegwritetables == NULL) {
++       dlclose(handle);
++    }
++}
++
+ /********************** Writer JNI calls **********************/
+ 
+ 
+@@ -2363,6 +2567,8 @@
+      jclass qTableClass,
+      jclass huffClass) {
+ 
++    initIDs();
++
+     ImageOutputStream_writeID = (*env)->GetMethodID(env,
+                                                     IOSClass,
+                                                     "write",
+@@ -2436,7 +2642,7 @@
+     }
+ 
+     /* We set up the normal JPEG error routines, then override error_exit. */
+-    cinfo->err = jpeg_std_error(&(jerr->pub));
++    cinfo->err = jpegstderror(&(jerr->pub));
+     jerr->pub.error_exit = sun_jpeg_error_exit;
+     /* We need to setup our own print routines */
+     jerr->pub.output_message = sun_jpeg_output_message;
+@@ -2453,7 +2659,7 @@
+     }
+ 
+     /* Perform library initialization */
+-    jpeg_create_compress(cinfo);
++    jpegcreatecompress(cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct jpeg_compress_struct));
+ 
+     /* Now set up the destination  */
+     dest = malloc(sizeof(struct jpeg_destination_mgr));
+@@ -2560,7 +2766,7 @@
+         return;
+     }
+ 
+-    jpeg_suppress_tables(cinfo, TRUE);  // Suppress writing of any current
++    jpegsuppresstables(cinfo, TRUE);  // Suppress writing of any current
+ 
+     data->streamBuf.suspendable = FALSE;
+     if (qtables != NULL) {
+@@ -2575,7 +2781,7 @@
+                    DCHuffmanTables, ACHuffmanTables, TRUE);
+     }
+ 
+-    jpeg_write_tables(cinfo); // Flushes the buffer for you
++    jpegwritetables(cinfo); // Flushes the buffer for you
+     RELEASE_ARRAYS(env, data, NULL);
+ }
+ 
+@@ -2758,9 +2964,9 @@
+     cinfo->input_components = numBands;
+     cinfo->in_color_space = inCs;
+ 
+-    jpeg_set_defaults(cinfo);
++    jpegsetdefaults(cinfo);
+ 
+-    jpeg_set_colorspace(cinfo, outCs);
++    jpegsetcolorspace(cinfo, outCs);
+ 
+     cinfo->optimize_coding = optimize;
+ 
+@@ -2797,7 +3003,7 @@
+     (*env)->ReleaseIntArrayElements(env, QtableSelectors,
+                                     qsels, JNI_ABORT);
+ 
+-    jpeg_suppress_tables(cinfo, TRUE);  // Disable writing any current
++    jpegsuppresstables(cinfo, TRUE);  // Disable writing any current
+ 
+     qlen = setQTables(env, (j_common_ptr) cinfo, qtables, writeDQT);
+ 
+@@ -2822,7 +3028,7 @@
+ 
+     if (progressive) {
+         if (numScans == 0) { // then use default scans
+-            jpeg_simple_progression(cinfo);
++            jpegsimpleprogression(cinfo);
+         } else {
+             cinfo->num_scans = numScans;
+             // Copy the scanInfo to a local array
+@@ -2864,7 +3070,7 @@
+ #endif
+ 
+     // start the compressor; tables must already be set
+-    jpeg_start_compress(cinfo, FALSE); // Leaves sent_table alone
++    jpegstartcompress(cinfo, FALSE); // Leaves sent_table alone
+ 
+     if (haveMetadata) {
+         // Flush the buffer
+@@ -2927,7 +3133,7 @@
+             }
+         }
+         // write it out
+-        jpeg_write_scanlines(cinfo, (JSAMPARRAY)&scanLinePtr, 1);
++        jpegwritescanlines(cinfo, (JSAMPARRAY)&scanLinePtr, 1);
+         targetLine += stepY;
+     }
+ 
+@@ -2936,9 +3142,9 @@
+      * so use jpeg_abort instead of jpeg_finish_compress.
+      */
+     if (cinfo->next_scanline == cinfo->image_height) {
+-        jpeg_finish_compress(cinfo);  // Flushes buffer with term_dest
++        jpegfinishcompress(cinfo);  // Flushes buffer with term_dest
+     } else {
+-        jpeg_abort((j_common_ptr)cinfo);
++        jpegabort((j_common_ptr)cinfo);
+     }
+ 
+     if (scale != NULL) {
+diff -Nru openjdk.orig/jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c openjdk/jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c
+--- openjdk.orig/jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c	2011-06-11 00:38:12.000000000 +0100
++++ openjdk/jdk/src/share/native/sun/awt/image/jpeg/jpegdecoder.c	2011-06-13 15:12:16.481040676 +0100
+@@ -45,7 +45,9 @@
+ #undef boolean
+ #undef FAR
+ #include <jpeglib.h>
+-#include "jerror.h"
++#include <jerror.h>
++#include <dlfcn.h>
++
+ 
+ /* The method IDs we cache. Note that the last two belongs to the
+  * java.io.InputStream class.
+@@ -56,6 +58,32 @@
+ static jmethodID InputStream_readID;
+ static jmethodID InputStream_availableID;
+ 
++typedef struct jpeg_error_mgr * (*fn_jpegstderror)(struct jpeg_error_mgr *);
++typedef void (*fn_jpegcreatedecompress)(j_decompress_ptr, int, size_t);
++typedef boolean (*fn_jpegresynctorestart)(j_decompress_ptr, int);
++typedef JDIMENSION (*fn_jpegreadscanlines)(j_decompress_ptr, JSAMPARRAY, JDIMENSION);
++typedef boolean (*fn_jpegfinishoutput)(j_decompress_ptr);
++typedef int (*fn_jpegreadheader)(j_decompress_ptr, boolean);
++typedef boolean (*fn_jpegstartdecompress)(j_decompress_ptr);
++typedef boolean (*fn_jpeghasmultiplescans)(j_decompress_ptr);
++typedef void (*fn_jpegdestroydecompress)(j_decompress_ptr);
++typedef int (*fn_jpegconsumeinput)(j_decompress_ptr);
++typedef boolean (*fn_jpegfinishdecompress)(j_decompress_ptr);
++typedef boolean (*fn_jpegstartoutput)(j_decompress_ptr, int);
++
++fn_jpegstderror jpegstderror;
++fn_jpegstartoutput jpegstartoutput;
++fn_jpegfinishdecompress jpegfinishdecompress;
++fn_jpegconsumeinput jpegconsumeinput;
++fn_jpegdestroydecompress jpegdestroydecompress; 
++fn_jpeghasmultiplescans jpeghasmultiplescans;
++fn_jpegstartdecompress jpegstartdecompress;
++fn_jpegreadheader jpegreadheader;
++fn_jpegfinishoutput jpegfinishoutput;
++fn_jpegreadscanlines jpegreadscanlines;
++fn_jpegresynctorestart jpegresynctorestart;
++fn_jpegcreatedecompress jpegcreatedecompress;
++
+ /* Initialize the Java VM instance variable when the library is
+    first loaded */
+ JavaVM *jvm;
+@@ -462,6 +490,76 @@
+ Java_sun_awt_image_JPEGImageDecoder_initIDs(JNIEnv *env, jclass cls,
+                                             jclass InputStreamClass)
+ {
++#if JPEG_LIB_VERSION >= 80
++    void *handle = dlopen("libjpeg.so.8", RTLD_LAZY | RTLD_GLOBAL);
++#else
++#if JPEG_LIB_VERSION >= 70
++    void *handle = dlopen("libjpeg.so.7", RTLD_LAZY | RTLD_GLOBAL);
++#else
++    void *handle = dlopen("libjpeg.so.62", RTLD_LAZY | RTLD_GLOBAL);
++#endif
++#endif
++ 
++    jpegstderror = (fn_jpegstderror)dlsym(handle, "jpeg_std_error");
++    if (jpegstderror == NULL) {
++       dlclose(handle);
++    }
++
++    jpegdestroydecompress = (fn_jpegdestroydecompress)dlsym(handle, "jpeg_destroy_decompress");
++    if (jpegdestroydecompress == NULL) {
++       dlclose(handle);
++    }  
++
++    jpegcreatedecompress = (fn_jpegcreatedecompress)dlsym(handle, "jpeg_CreateDecompress");
++    if (jpegcreatedecompress == NULL) {
++       dlclose(handle);
++    }
++
++    jpegreadheader = (fn_jpegreadheader)dlsym(handle, "jpeg_read_header");
++    if (jpegreadheader == NULL) {
++       dlclose(handle);
++    }
++
++    jpeghasmultiplescans = (fn_jpeghasmultiplescans)dlsym(handle, "jpeg_has_multiple_scans");
++    if (jpeghasmultiplescans == NULL) {
++       dlclose(handle);
++    }
++
++    jpegstartdecompress = (fn_jpegstartdecompress)dlsym(handle, "jpeg_start_decompress");
++    if (jpegstartdecompress == NULL) {
++       dlclose(handle);
++    }
++
++    jpegconsumeinput = (fn_jpegconsumeinput)dlsym(handle, "jpeg_consume_input");
++    if (jpegconsumeinput == NULL) {
++       dlclose(handle);
++    }
++
++    jpegstartoutput = (fn_jpegstartoutput)dlsym(handle, "jpeg_start_output");
++    if (jpegstartoutput == NULL) {
++       dlclose(handle);
++    }
++
++    jpegfinishdecompress = (fn_jpegfinishdecompress)dlsym(handle, "jpeg_finish_decompress");
++    if (jpegfinishdecompress == NULL) {
++       dlclose(handle);
++    }
++
++    jpegreadscanlines = (fn_jpegreadscanlines)dlsym(handle, "jpeg_read_scanlines");
++    if (jpegreadscanlines == NULL) {
++       dlclose(handle);
++    }
++
++    jpegfinishoutput = (fn_jpegfinishoutput)dlsym(handle, "jpeg_finish_output");
++    if (jpegfinishoutput == NULL) {
++       dlclose(handle);
++    }
++
++    jpegresynctorestart = (fn_jpegresynctorestart)dlsym(handle, "jpeg_resync_to_restart");
++    if (jpegresynctorestart == NULL) {
++       dlclose(handle);
++    }
++
+     sendHeaderInfoID = (*env)->GetMethodID(env, cls, "sendHeaderInfo",
+                                            "(IIZZZ)Z");
+     sendPixelsByteID = (*env)->GetMethodID(env, cls, "sendPixels", "([BI)Z");
+@@ -519,7 +617,7 @@
+   /* Step 1: allocate and initialize JPEG decompression object */
+ 
+   /* We set up the normal JPEG error routines, then override error_exit. */
+-  cinfo.err = jpeg_std_error(&jerr.pub);
++  cinfo.err = jpegstderror(&jerr.pub);
+   jerr.pub.error_exit = sun_jpeg_error_exit;
+ 
+   /* We need to setup our own print routines */
+@@ -530,7 +628,7 @@
+     /* If we get here, the JPEG code has signaled an error.
+      * We need to clean up the JPEG object, close the input file, and return.
+      */
+-    jpeg_destroy_decompress(&cinfo);
++    jpegdestroydecompress(&cinfo);
+     RELEASE_ARRAYS(env, &jsrc);
+     if (!(*env)->ExceptionOccurred(env)) {
+         char buffer[JMSG_LENGTH_MAX];
+@@ -541,7 +639,7 @@
+     return;
+   }
+   /* Now we can initialize the JPEG decompression object. */
+-  jpeg_create_decompress(&cinfo);
++  jpegcreatedecompress(&cinfo, JPEG_LIB_VERSION, (size_t) sizeof(struct jpeg_decompress_struct));
+ 
+   /* Step 2: specify data source (eg, a file) */
+ 
+@@ -555,17 +653,17 @@
+   jsrc.pub.init_source = sun_jpeg_init_source;
+   jsrc.pub.fill_input_buffer = sun_jpeg_fill_input_buffer;
+   jsrc.pub.skip_input_data = sun_jpeg_skip_input_data;
+-  jsrc.pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */
++  jsrc.pub.resync_to_restart = jpegresynctorestart; /* use default method */
+   jsrc.pub.term_source = sun_jpeg_term_source;
+   if (!GET_ARRAYS(env, &jsrc)) {
+-    jpeg_destroy_decompress(&cinfo);
++    jpegdestroydecompress(&cinfo);
+     return;
+   }
+   /* Step 3: read file parameters with jpeg_read_header() */
+ 
+-  (void) jpeg_read_header(&cinfo, TRUE);
++  (void) jpegreadheader(&cinfo, TRUE);
+   /* select buffered-image mode if it is a progressive JPEG only */
+-  buffered_mode = cinfo.buffered_image = jpeg_has_multiple_scans(&cinfo);
++  buffered_mode = cinfo.buffered_image = jpeghasmultiplescans(&cinfo);
+   grayscale = (cinfo.out_color_space == JCS_GRAYSCALE);
+ #ifdef YCCALPHA
+   hasalpha = (cinfo.out_color_space == JCS_RGBA);
+@@ -584,7 +682,7 @@
+                                   grayscale, hasalpha, buffered_mode);
+   if ((*env)->ExceptionOccurred(env) || !ret) {
+     /* No more interest in this image... */
+-    jpeg_destroy_decompress(&cinfo);
++    jpegdestroydecompress(&cinfo);
+     return;
+   }
+   /* Make a one-row-high sample array with enough room to expand to ints */
+@@ -595,7 +693,7 @@
+   }
+ 
+   if (jsrc.hOutputBuffer == 0 || !GET_ARRAYS(env, &jsrc)) {
+-    jpeg_destroy_decompress(&cinfo);
++    jpegdestroydecompress(&cinfo);
+     return;
+   }
+ 
+@@ -613,7 +711,7 @@
+ 
+   /* Step 5: Start decompressor */
+ 
+-  jpeg_start_decompress(&cinfo);
++  jpegstartdecompress(&cinfo);
+ 
+   /* We may need to do some setup of our own at this point before reading
+    * the data.  After jpeg_start_decompress() we have the correct scaled
+@@ -638,28 +736,28 @@
+           do {
+               sun_jpeg_fill_suspended_buffer(&cinfo);
+               jsrc.suspendable = TRUE;
+-              ret = jpeg_consume_input(&cinfo);
++	      ret = jpegconsumeinput(&cinfo);
+               jsrc.suspendable = FALSE;
+           } while (ret != JPEG_SUSPENDED && ret != JPEG_REACHED_EOI);
+           if (ret == JPEG_REACHED_EOI) {
+               final_pass = TRUE;
+               cinfo.dct_method = JDCT_ISLOW;
+           }
+-          jpeg_start_output(&cinfo, cinfo.input_scan_number);
++	  jpegstartoutput(&cinfo, cinfo.input_scan_number);
+       }
+       while (cinfo.output_scanline < cinfo.output_height) {
+           if (! final_pass) {
+               do {
+                   sun_jpeg_fill_suspended_buffer(&cinfo);
+                   jsrc.suspendable = TRUE;
+-                  ret = jpeg_consume_input(&cinfo);
++		  ret = jpegconsumeinput(&cinfo);
+                   jsrc.suspendable = FALSE;
+               } while (ret != JPEG_SUSPENDED && ret != JPEG_REACHED_EOI);
+               if (ret == JPEG_REACHED_EOI) {
+                   break;
+               }
+           }
+-          (void) jpeg_read_scanlines(&cinfo, (JSAMPARRAY) &(jsrc.outbuf), 1);
++	  (void) jpegreadscanlines(&cinfo, (JSAMPARRAY) &(jsrc.outbuf), 1);
+ 
+           if (grayscale) {
+               RELEASE_ARRAYS(env, &jsrc);
+@@ -695,18 +793,18 @@
+           if ((*env)->ExceptionOccurred(env) || !ret ||
+               !GET_ARRAYS(env, &jsrc)) {
+               /* No more interest in this image... */
+-              jpeg_destroy_decompress(&cinfo);
++	      jpegdestroydecompress(&cinfo);
+               return;
+           }
+       }
+       if (buffered_mode) {
+-          jpeg_finish_output(&cinfo);
++	  jpegfinishoutput(&cinfo);
+       }
+   } while (! final_pass);
+ 
+   /* Step 7: Finish decompression */
+ 
+-  (void) jpeg_finish_decompress(&cinfo);
++  (void) jpegfinishdecompress(&cinfo);
+   /* We can ignore the return value since suspension is not possible
+    * with the stdio data source.
+    * (nor with the Java data source)
+@@ -715,7 +813,7 @@
+   /* Step 8: Release JPEG decompression object */
+ 
+   /* This is an important step since it will release a good deal of memory. */
+-  jpeg_destroy_decompress(&cinfo);
++  jpegdestroydecompress(&cinfo);
+ 
+   /* After finish_decompress, we can close the input file.
+    * Here we postpone it until after no more JPEG errors are possible,
+diff -Nru openjdk.orig/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gif.c openjdk/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gif.c
+--- openjdk.orig/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gif.c	2011-03-14 22:10:33.000000000 +0000
++++ openjdk/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gif.c	2011-06-13 15:12:16.481040676 +0100
+@@ -26,7 +26,7 @@
+ #include "splashscreen_impl.h"
+ #include "splashscreen_gfx.h"
+ 
+-#include "../giflib/gif_lib.h"
++#include <gif_lib.h>
+ 
+ #define GIF_TRANSPARENT     0x01
+ #define GIF_USER_INPUT      0x02
+diff -Nru openjdk.orig/jdk/src/share/native/sun/awt/splashscreen/splashscreen_jpeg.c openjdk/jdk/src/share/native/sun/awt/splashscreen/splashscreen_jpeg.c
+--- openjdk.orig/jdk/src/share/native/sun/awt/splashscreen/splashscreen_jpeg.c	2010-07-29 21:56:12.000000000 +0100
++++ openjdk/jdk/src/share/native/sun/awt/splashscreen/splashscreen_jpeg.c	2011-06-13 15:12:16.481040676 +0100
+@@ -25,9 +25,8 @@
+ 
+ #include "splashscreen_impl.h"
+ 
+-#include "jinclude.h"
+-#include "jpeglib.h"
+-#include "jerror.h"
++#include <jpeglib.h>
++#include <jerror.h>
+ 
+ #include <setjmp.h>
+ 
+@@ -105,13 +104,9 @@
+     stream_src_ptr src;
+ 
+     if (cinfo->src == NULL) {   /* first time for this JPEG object? */
+-        cinfo->src = (struct jpeg_source_mgr *)
+-            (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo,
+-            JPOOL_PERMANENT, SIZEOF(stream_source_mgr));
+-        src = (stream_src_ptr) cinfo->src;
+-        src->buffer = (JOCTET *)
+-            (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo,
+-            JPOOL_PERMANENT, INPUT_BUF_SIZE * SIZEOF(JOCTET));
++        cinfo->src = (struct jpeg_source_mgr *)(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(stream_source_mgr));
++	src = (stream_src_ptr) cinfo->src;
++    	src->buffer = (JOCTET *)(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, INPUT_BUF_SIZE * sizeof(JOCTET));
+     }
+ 
+     src = (stream_src_ptr) cinfo->src;
+diff -Nru openjdk.orig/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c openjdk/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c
+--- openjdk.orig/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c	2011-03-14 22:10:33.000000000 +0000
++++ openjdk/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c	2011-06-13 15:12:16.481040676 +0100
+@@ -25,7 +25,7 @@
+ 
+ #include "splashscreen_impl.h"
+ 
+-#include "../libpng/png.h"
++#include <png.h>
+ 
+ #include <setjmp.h>
+ 
diff --git a/make-warnings-nonfatal.patch b/make-warnings-nonfatal.patch
new file mode 100644
index 0000000..5d0e8ff
--- /dev/null
+++ b/make-warnings-nonfatal.patch
@@ -0,0 +1,24 @@
+diff -up openjdk/jdk/make/common/shared/Defs-java.gmk.sav openjdk/jdk/make/common/shared/Defs-java.gmk
+diff -up openjdk/jdk/make/com/sun/java/pack/Makefile.sav openjdk/jdk/make/com/sun/java/pack/Makefile
+--- openjdk/jdk/make/com/sun/java/pack/Makefile.sav	2011-07-29 15:15:16.038605376 -0400
++++ openjdk/jdk/make/com/sun/java/pack/Makefile	2011-07-29 15:15:49.166082596 -0400
+@@ -33,7 +33,6 @@ LIBRARY = unpack
+ PRODUCT = sun
+ PGRM = unpack200
+ JAVAC_MAX_WARNINGS=true
+-JAVAC_WARNINGS_FATAL=true
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+ CPLUSPLUSLIBRARY=true
+diff -up openjdk/jdk/make/tools/Makefile.sav openjdk/jdk/make/tools/Makefile
+--- openjdk/jdk/make/tools/Makefile.sav	2011-07-29 15:14:45.728083910 -0400
++++ openjdk/jdk/make/tools/Makefile	2011-07-29 15:14:51.958985518 -0400
+@@ -29,7 +29,7 @@
+ 
+ BUILDDIR = ..
+ 
+-SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=true JAVAC_WARNINGS_FATAL=true
++SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=true
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+ # Note: freetypecheck is built by Sanity.gmk if needed
diff --git a/mauve_tests b/mauve_tests
new file mode 100644
index 0000000..371fbc3
--- /dev/null
+++ b/mauve_tests
@@ -0,0 +1,2571 @@
+javax.xml.xpath.XPath
+javax.xml.parsers.DocumentBuilder.PR27864
+javax.xml.parsers.DocumentBuilder.parseSimpleXML
+javax.crypto.spec.TestOfPBEKeySpec
+javax.crypto.spec.TestOfSecretKeySpec
+javax.accessibility.AccessibleContext.getAccessibleRelationSet
+javax.imageio.plugins.jpeg.TestJPEGImageReadParam
+javax.imageio.plugins.jpeg.TestJPEGHuffmanTable
+javax.imageio.plugins.jpeg.TestJPEGQTable
+javax.imageio.stream.IIOByteBuffer.setOffset
+javax.imageio.stream.IIOByteBuffer.setLength
+javax.imageio.stream.IIOByteBuffer.setData
+javax.imageio.spi.ServiceRegistry.getServiceProviderByClass
+javax.imageio.spi.ServiceRegistry.deregisterAll
+javax.imageio.spi.ServiceRegistry.getCategories
+javax.imageio.spi.ServiceRegistry.lookupProviders
+javax.imageio.spi.ServiceRegistry.registerServiceProvider
+javax.imageio.spi.IIOServiceProvider.getVersion
+javax.imageio.spi.IIOServiceProvider.getVendorName
+javax.imageio.spi.ImageOutputStreamSpi.ImageOutputStreamSpi
+javax.imageio.spi.ImageOutputStreamSpi.needsCacheFile
+javax.imageio.spi.ImageOutputStreamSpi.canUseCacheFile
+javax.imageio.spi.ImageReaderWriterSpi.getNativeImageMetadataFormatName
+javax.imageio.spi.ImageReaderWriterSpi.getFileSuffixes
+javax.imageio.spi.ImageReaderWriterSpi.getExtraImageMetadataFormatNames
+javax.imageio.spi.ImageReaderWriterSpi.getPluginClassName
+javax.imageio.spi.ImageReaderWriterSpi.getNativeStreamMetadataFormatName
+javax.imageio.spi.ImageReaderWriterSpi.getExtraStreamMetadataFormatNames
+javax.imageio.spi.ImageReaderWriterSpi.getMIMETypes
+javax.imageio.spi.ImageReaderWriterSpi.isStandardImageMetadataFormatSupported
+javax.imageio.spi.ImageReaderWriterSpi.getFormatNames
+javax.imageio.spi.ImageReaderWriterSpi.isStandardStreamMetadataFormatSupported
+javax.imageio.spi.ImageInputStreamSpi.ImageInputStreamSpi
+javax.imageio.spi.ImageInputStreamSpi.needsCacheFile
+javax.imageio.spi.ImageInputStreamSpi.canUseCacheFile
+javax.imageio.spi.ImageTranscoderSpi.ImageTranscoderSpi
+javax.imageio.spi.IIORegistry.getDefaultInstance
+javax.naming.CompoundName.simple
+javax.naming.directory.BasicAttribute.Enumerate
+javax.naming.CompositeName.composite
+javax.management.ObjectName.apply
+javax.management.ObjectName.Parsing
+javax.management.ObjectName.ParsingJDK6
+javax.management.ObjectName.applyJDK6
+javax.management.openmbean.ArrayType.IsValue
+javax.management.openmbean.ArrayType.Constructor2
+javax.management.openmbean.ArrayType.Equals
+javax.management.openmbean.ArrayType.IsPrimitiveArray
+javax.management.openmbean.ArrayType.GetArrayType
+javax.management.openmbean.ArrayType.HashCode
+javax.management.openmbean.ArrayType.GetPrimitiveArrayType
+javax.management.openmbean.ArrayType.Constructor1
+javax.management.openmbean.CompositeDataInvocationHandler.Test
+javax.management.MBeanServerPermission.Constructor
+javax.security.auth.login.TestOfPR25202
+javax.print.SimpleDoc.constructor
+javax.print.SimpleDoc.getStreamForBytes
+javax.print.SimpleDoc.getAttributes
+javax.print.SimpleDoc.getReaderForText
+javax.print.DocFlavor.parseMimeType
+javax.print.attribute.TextSyntax.constructors
+javax.print.attribute.ResolutionSyntax.simple
+javax.print.attribute.EnumSyntax.serialize
+javax.print.attribute.EnumSyntax.equals
+javax.print.attribute.AttributeSetUtilities.simple
+javax.print.attribute.Size2DSyntax.simple
+javax.print.attribute.SetOfIntegerSyntax.Simple
+javax.print.attribute.HashAttributeSet.populatedSet
+javax.print.attribute.HashAttributeSet.nullTests
+javax.print.attribute.HashAttributeSet.emptySet
+javax.print.attribute.standard.MediaSize.userClass
+javax.swing.JWindow.isRootPaneCheckingEnabled
+javax.swing.JSplitPane.setComponent
+javax.swing.JSplitPane.setResizeWeight
+javax.swing.JSplitPane.getDividerLocation
+javax.swing.JSplitPane.getInputMap
+javax.swing.JSplitPane.getActionMap
+javax.swing.JSplitPane.paramString
+javax.swing.JSplitPane.Constructor
+javax.swing.JOptionPane.getInputMap
+javax.swing.JTabbedPane.getInputMap
+javax.swing.JTabbedPane.Mnemonic
+javax.swing.JTabbedPane.remove
+javax.swing.JToggleButton.constructor
+javax.swing.JToggleButton.actionEvent
+javax.swing.JToggleButton.isFocusable
+javax.swing.JToggleButton.uidelegate
+javax.swing.JToggleButton.getActionCommand
+javax.swing.JToggleButton.model
+javax.swing.JToggleButton.click
+javax.swing.text.View.getResizeWeight
+javax.swing.text.View.getMaximumSpan
+javax.swing.text.View.getMinimumSpan
+javax.swing.text.View.getAlignment
+javax.swing.text.GapContent.getString
+javax.swing.text.GapContent.GapContentTest
+javax.swing.text.GapContent.length
+javax.swing.text.GapContent.constructors
+javax.swing.text.GapContent.insertString
+javax.swing.text.GapContent.getChars
+javax.swing.text.GapContent.PositionTest
+javax.swing.text.GapContent.remove
+javax.swing.text.ElementIterator.ElementIteratorTest
+javax.swing.text.AbstractDocument.BranchElement.getStartOffset
+javax.swing.text.AbstractDocument.BranchElement.getElementIndexNullPointer
+javax.swing.text.AbstractDocument.BranchElement.BranchElementTest
+javax.swing.text.AbstractDocument.BranchElement.getElementIndex
+javax.swing.text.AbstractDocument.LeafElement.getStartOffset
+javax.swing.text.AbstractDocument.getDocumentProperties
+javax.swing.text.AbstractDocument.ElementChange2
+javax.swing.text.AbstractDocument.AbstractDocumentTest
+javax.swing.text.AbstractDocument.ElementChange
+javax.swing.text.AbstractDocument.filterTest
+javax.swing.text.MaskFormatter.MaskFormatterTest
+javax.swing.text.DefaultFormatter.getValueClass
+javax.swing.text.PlainDocument.getRootElements
+javax.swing.text.PlainDocument.getDocumentProperties
+javax.swing.text.PlainDocument.removeJoinesLines
+javax.swing.text.PlainDocument.multipleLeafs
+javax.swing.text.PlainDocument.getText
+javax.swing.text.PlainDocument.getLength
+javax.swing.text.PlainDocument.createPosition
+javax.swing.text.PlainDocument.insertUpdate
+javax.swing.text.PlainDocument.insertString
+javax.swing.text.PlainDocument.PlainDocumentTest
+javax.swing.text.AttributeSet.isEqual
+javax.swing.text.Segment.clone
+javax.swing.text.Segment.first
+javax.swing.text.Segment.setIndex
+javax.swing.text.Segment.last
+javax.swing.text.Segment.getIndex
+javax.swing.text.Segment.current
+javax.swing.text.Segment.next
+javax.swing.text.Segment.isPartialReturn
+javax.swing.text.Segment.getEndIndex
+javax.swing.text.Segment.setPartialReturn
+javax.swing.text.Segment.getBeginIndex
+javax.swing.text.Segment.constructors
+javax.swing.text.Segment.toString
+javax.swing.text.Segment.previous
+javax.swing.text.TextAction.augmentList
+javax.swing.text.TabSet.getTab
+javax.swing.text.TabSet.constructor
+javax.swing.text.TabSet.getTabCount
+javax.swing.text.TabSet.getTabIndex
+javax.swing.text.TabSet.getTabIndexAfter
+javax.swing.text.TabSet.equals
+javax.swing.text.TabSet.toString
+javax.swing.text.html.HTML.ElementTagAttributeTest
+javax.swing.text.html.HTML.HTML_Test
+javax.swing.text.html.HTMLDocument.FindById
+javax.swing.text.html.parser.Entity.Entity_Test
+javax.swing.text.html.parser.TagElement.TagElement_Test
+javax.swing.text.html.parser.AttributeList.AttributeList_test
+javax.swing.text.html.parser.Element.Element_Test
+javax.swing.text.html.parser.ParserDelegator.Entities
+javax.swing.text.html.parser.ParserDelegator.Text4
+javax.swing.text.html.parser.ParserDelegator.randomTables
+javax.swing.text.html.parser.ParserDelegator.SimpleParsing
+javax.swing.text.html.parser.ParserDelegator.Text3
+javax.swing.text.html.parser.ParserDelegator.Text
+javax.swing.text.html.parser.ParserDelegator.eolnNorification
+javax.swing.text.html.parser.ParserDelegator.tokenLocations
+javax.swing.text.html.parser.DTD.DTD_test
+javax.swing.text.BoxView.spans
+javax.swing.text.StyleConstants.setTabSet
+javax.swing.text.StyleConstants.setUnderline
+javax.swing.text.StyleConstants.getLeftIndent
+javax.swing.text.StyleConstants.getIcon
+javax.swing.text.StyleConstants.setFontFamily
+javax.swing.text.StyleConstants.isBold
+javax.swing.text.StyleConstants.setLineSpacing
+javax.swing.text.StyleConstants.isSubscript
+javax.swing.text.StyleConstants.setItalic
+javax.swing.text.StyleConstants.getFontSize
+javax.swing.text.StyleConstants.setComponent
+javax.swing.text.StyleConstants.setBidiLevel
+javax.swing.text.StyleConstants.getForeground
+javax.swing.text.StyleConstants.setSuperscript
+javax.swing.text.StyleConstants.getSpaceAbove
+javax.swing.text.StyleConstants.getLineSpacing
+javax.swing.text.StyleConstants.setSpaceBelow
+javax.swing.text.StyleConstants.setBackground
+javax.swing.text.StyleConstants.getRightIndent
+javax.swing.text.StyleConstants.getFirstLineIndent
+javax.swing.text.StyleConstants.isItalic
+javax.swing.text.StyleConstants.getTabSet
+javax.swing.text.StyleConstants.setIcon
+javax.swing.text.StyleConstants.isUnderline
+javax.swing.text.StyleConstants.setBold
+javax.swing.text.StyleConstants.setAlignment
+javax.swing.text.StyleConstants.setSubscript
+javax.swing.text.StyleConstants.setRightIndent
+javax.swing.text.StyleConstants.isSuperscript
+javax.swing.text.StyleConstants.getSpaceBelow
+javax.swing.text.StyleConstants.setFontSize
+javax.swing.text.StyleConstants.getFontFamily
+javax.swing.text.StyleConstants.constants
+javax.swing.text.StyleConstants.setStrikeThrough
+javax.swing.text.StyleConstants.setForeground
+javax.swing.text.StyleConstants.getAlignment
+javax.swing.text.StyleConstants.setLeftIndent
+javax.swing.text.StyleConstants.getBackground
+javax.swing.text.StyleConstants.getComponent
+javax.swing.text.StyleConstants.getBidiLevel
+javax.swing.text.StyleConstants.setFirstLineIndent
+javax.swing.text.StyleConstants.setSpaceAbove
+javax.swing.text.StyleConstants.isStrikeThrough
+javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure3
+javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure1
+javax.swing.text.DefaultStyledDocument.ElementBuffer.StyledDocument6
+javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure7
+javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure2
+javax.swing.text.DefaultStyledDocument.ElementBuffer.StyledDocument1
+javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure4
+javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure6
+javax.swing.text.DefaultStyledDocument.ElementBuffer.StyledDocument3
+javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure5
+javax.swing.text.DefaultStyledDocument.ElementBuffer.insert
+javax.swing.text.DefaultStyledDocument.ElementBuffer.ElementStructure8
+javax.swing.text.DefaultStyledDocument.ElementBuffer.StyledDocument2
+javax.swing.text.DefaultStyledDocument.ElementBuffer.StyledDocument5
+javax.swing.text.DefaultStyledDocument.ElementBuffer.StyledDocument4
+javax.swing.text.DefaultStyledDocument.Insert
+javax.swing.text.DefaultStyledDocument.insertString
+javax.swing.text.DefaultStyledDocument.Create
+javax.swing.text.SimpleAttributeSet.removeAttributesOnlyIfMatch
+javax.swing.text.SimpleAttributeSet.clone
+javax.swing.text.SimpleAttributeSet.EMPTY
+javax.swing.text.SimpleAttributeSet.containsAttributes
+javax.swing.text.SimpleAttributeSet.containsChecksParent
+javax.swing.text.SimpleAttributeSet.containsAttribute
+javax.swing.text.SimpleAttributeSet.getResolveParent
+javax.swing.text.SimpleAttributeSet.removeAttribute
+javax.swing.text.SimpleAttributeSet.copyAttributes
+javax.swing.text.SimpleAttributeSet.equals
+javax.swing.text.SimpleAttributeSet.removeAttributes
+javax.swing.text.SimpleAttributeSet.getAttribute
+javax.swing.text.SimpleAttributeSet.isEqual
+javax.swing.text.SimpleAttributeSet.getAttributeCount
+javax.swing.text.SimpleAttributeSet.constructors
+javax.swing.text.SimpleAttributeSet.isDefined
+javax.swing.text.SimpleAttributeSet.addAttribute
+javax.swing.text.SimpleAttributeSet.getAttributeNames
+javax.swing.text.SimpleAttributeSet.setResolveParent
+javax.swing.text.SimpleAttributeSet.isEmpty
+javax.swing.text.SimpleAttributeSet.addAttributes
+javax.swing.text.SimpleAttributeSet.nullValue
+javax.swing.text.ZoneView.getMaximumZoneSize
+javax.swing.text.ZoneView.createZone
+javax.swing.text.ZoneView.constructor
+javax.swing.text.ZoneView.zoneWasLoaded
+javax.swing.text.ZoneView.isZoneLoaded
+javax.swing.text.ZoneView.loadChildren
+javax.swing.text.ZoneView.setMaxZonesLoaded
+javax.swing.text.ZoneView.unloadZone
+javax.swing.text.ZoneView.setMaximumZoneSize
+javax.swing.text.FlowView.FlowStrategy.adjustRow
+javax.swing.text.FlowView.getFlowAxis
+javax.swing.text.InternationalFormatter.InternationalFormatterTest
+javax.swing.text.Utilities.getNextWord
+javax.swing.text.Utilities.getBreakLocation
+javax.swing.text.Utilities.getPreviousWord
+javax.swing.text.Utilities.getWordStart
+javax.swing.text.Utilities.getTabbedTextOffset
+javax.swing.text.TabStop.constructors
+javax.swing.text.TabStop.toString
+javax.swing.text.StringContent.insertUndo
+javax.swing.text.StringContent.BadLocationExceptionTest
+javax.swing.text.StringContent.stickyPosition
+javax.swing.text.StringContent.length
+javax.swing.text.StringContent.removeUndo
+javax.swing.text.StringContent.constructors
+javax.swing.text.StringContent.insertString
+javax.swing.text.StringContent.StringContentTest
+javax.swing.text.StyledEditorKit.createInputAttributesTest
+javax.swing.text.StyleContext.NamedStyleInit
+javax.swing.text.StyleContext.NamedStyleSetResolveParent
+javax.swing.text.StyleContext.addStyle
+javax.swing.text.StyleContext.addAttribute
+javax.swing.JScrollBar.getAccessibleContext
+javax.swing.JScrollBar.getInputMap
+javax.swing.JScrollBar.constructors
+javax.swing.JScrollBar.getActionMap
+javax.swing.JScrollBar.paramString
+javax.swing.plaf.basic.BasicButtonUI.getTextShiftOffset
+javax.swing.plaf.basic.BasicButtonUI.getPropertyPrefix
+javax.swing.plaf.basic.BasicButtonUI.defaultTextIconGap
+javax.swing.plaf.basic.BasicButtonUI.setTextShiftOffset
+javax.swing.plaf.basic.BasicButtonUI.defaultTextShiftOffset
+javax.swing.plaf.basic.BasicButtonUI.clearTextShiftOffset
+javax.swing.plaf.basic.BasicRadioButtonMenuItemUI.getPropertyPrefix
+javax.swing.plaf.basic.BasicToggleButtonUI.getPropertyPrefix
+javax.swing.plaf.basic.BasicSeparatorUI.getPreferredSize
+javax.swing.plaf.basic.BasicSeparatorUI.getMinimumSize
+javax.swing.plaf.basic.BasicSeparatorUI.getMaximumSize
+javax.swing.plaf.basic.BasicLookAndFeel.initSystemColorDefaults
+javax.swing.plaf.basic.BasicCheckBoxMenuItemUI.getPropertyPrefix
+javax.swing.plaf.basic.BasicHTML.isHTMLString
+javax.swing.plaf.basic.BasicScrollBarUI.layoutContainer
+javax.swing.plaf.basic.BasicScrollBarUI.getPreferredSize
+javax.swing.plaf.basic.BasicScrollBarUI.constructor
+javax.swing.plaf.basic.BasicScrollBarUI.getMinimumSize
+javax.swing.plaf.basic.BasicScrollBarUI.createDecreaseButton
+javax.swing.plaf.basic.BasicScrollBarUI.getMaximumSize
+javax.swing.plaf.basic.BasicScrollBarUI.getMaximumThumbSize
+javax.swing.plaf.basic.BasicScrollBarUI.installDefaults
+javax.swing.plaf.basic.BasicScrollBarUI.createIncreaseButton
+javax.swing.plaf.basic.BasicScrollBarUI.installComponents
+javax.swing.plaf.basic.BasicScrollBarUI.getMinimumThumbSize
+javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction.constructor
+javax.swing.plaf.basic.BasicInternalFrameTitlePane.IconifyAction.constructor
+javax.swing.plaf.basic.BasicInternalFrameTitlePane.CloseAction.constructor
+javax.swing.plaf.basic.BasicInternalFrameTitlePane.RestoreAction.constructor
+javax.swing.plaf.basic.BasicInternalFrameTitlePane.MoveAction.constructor
+javax.swing.plaf.basic.BasicInternalFrameTitlePane.SizeAction.constructor
+javax.swing.plaf.basic.BasicPasswordFieldUI.getPropertyPrefix
+javax.swing.plaf.basic.BasicSplitPaneUI.BasicHorizontalLayoutManager.layoutContainer
+javax.swing.plaf.basic.BasicSplitPaneUI.getDividerLocation
+javax.swing.plaf.basic.BasicArrowButton.getPreferredSize
+javax.swing.plaf.basic.BasicArrowButton.isFocusTraversable
+javax.swing.plaf.basic.BasicArrowButton.getMinimumSize
+javax.swing.plaf.basic.BasicArrowButton.isFocusable
+javax.swing.plaf.basic.BasicArrowButton.getMaximumSize
+javax.swing.plaf.basic.BasicSliderUI.xPositionForValue
+javax.swing.plaf.basic.BasicSliderUI.getPreferredSize
+javax.swing.plaf.basic.BasicSliderUI.getMinimumSize
+javax.swing.plaf.basic.BasicSliderUI.valueForYPosition
+javax.swing.plaf.basic.BasicSliderUI.getMaximumSize
+javax.swing.plaf.basic.BasicSliderUI.getThumbSize
+javax.swing.plaf.basic.BasicSliderUI.valueForXPosition
+javax.swing.plaf.basic.BasicSliderUI.constructors
+javax.swing.plaf.basic.BasicSliderUI.yPositionForValue
+javax.swing.plaf.basic.BasicTextFieldUI.getPropertyPrefix
+javax.swing.plaf.basic.BasicTextPaneUI.getPropertyPrefix
+javax.swing.plaf.basic.BasicMenuItemUI.getPropertyPrefix
+javax.swing.plaf.basic.BasicFormattedTextFieldUI.getPropertyPrefix
+javax.swing.plaf.basic.BasicTextAreaUI.getPropertyPrefix
+javax.swing.plaf.basic.BasicComboBoxUI.getDefaultSize
+javax.swing.plaf.basic.BasicComboBoxUI.createEditor
+javax.swing.plaf.basic.BasicComboBoxUI.getMaximumSize
+javax.swing.plaf.basic.BasicListUI.updateLayoutStateNeeded
+javax.swing.plaf.basic.BasicMenuUI.getPropertyPrefix
+javax.swing.plaf.basic.BasicIconFactory.getCheckBoxMenuItemIcon
+javax.swing.plaf.basic.BasicIconFactory.getMenuArrowIcon
+javax.swing.plaf.basic.BasicIconFactory.getCheckBoxIcon
+javax.swing.plaf.basic.BasicFileChooserUI.getFileName
+javax.swing.plaf.basic.BasicFileChooserUI.getApproveButtonText
+javax.swing.plaf.basic.BasicFileChooserUI.constructor
+javax.swing.plaf.basic.BasicFileChooserUI.getApproveButtonMnemonic
+javax.swing.plaf.basic.BasicFileChooserUI.uninstallStrings
+javax.swing.plaf.basic.BasicFileChooserUI.getApproveButton
+javax.swing.plaf.basic.BasicFileChooserUI.getGoHomeAction
+javax.swing.plaf.basic.BasicFileChooserUI.getUpdateAction
+javax.swing.plaf.basic.BasicFileChooserUI.getDirectoryName
+javax.swing.plaf.basic.BasicFileChooserUI.getApproveSelectionAction
+javax.swing.plaf.basic.BasicFileChooserUI.installStrings
+javax.swing.plaf.basic.BasicFileChooserUI.getChangeToParentDirectoryAction
+javax.swing.plaf.basic.BasicFileChooserUI.getCancelSelectionAction
+javax.swing.plaf.basic.BasicFileChooserUI.getFileView
+javax.swing.plaf.basic.BasicFileChooserUI.installIcons
+javax.swing.plaf.basic.BasicFileChooserUI.getNewFolderAction
+javax.swing.plaf.basic.BasicFileChooserUI.getApproveButtonToolTipText
+javax.swing.plaf.basic.BasicFileChooserUI.getDialogTitle
+javax.swing.plaf.basic.BasicCheckBoxUI.getPropertyPrefix
+javax.swing.plaf.basic.BasicComboBoxEditor.removeActionListener
+javax.swing.plaf.basic.BasicComboBoxEditor.addActionListener
+javax.swing.plaf.basic.BasicComboBoxEditor.constructor
+javax.swing.plaf.basic.BasicEditorPaneUI.getPropertyPrefix
+javax.swing.plaf.basic.BasicRootPaneUI.installDefaults
+javax.swing.plaf.basic.BasicRadioButtonUI.getPropertyPrefix
+javax.swing.plaf.ColorUIResource.serialization
+javax.swing.plaf.ColorUIResource.equals
+javax.swing.plaf.ColorUIResource.constructors
+javax.swing.plaf.metal.MetalTheme.MetalThemeTest
+javax.swing.plaf.metal.MetalLookAndFeel.getMenuTextFont
+javax.swing.plaf.metal.MetalLookAndFeel.getDescription
+javax.swing.plaf.metal.MetalLookAndFeel.isNativeLookAndFeel
+javax.swing.plaf.metal.MetalLookAndFeel.getSeparatorBackground
+javax.swing.plaf.metal.MetalLookAndFeel.getPrimaryControl
+javax.swing.plaf.metal.MetalLookAndFeel.getWindowTitleInactiveForeground
+javax.swing.plaf.metal.MetalLookAndFeel.getMenuBackground
+javax.swing.plaf.metal.MetalLookAndFeel.getMenuForeground
+javax.swing.plaf.metal.MetalLookAndFeel.getPrimaryControlShadow
+javax.swing.plaf.metal.MetalLookAndFeel.getWindowTitleForeground
+javax.swing.plaf.metal.MetalLookAndFeel.getControlTextFont
+javax.swing.plaf.metal.MetalLookAndFeel.getControlHighlight
+javax.swing.plaf.metal.MetalLookAndFeel.getPrimaryControlHighlight
+javax.swing.plaf.metal.MetalLookAndFeel.getControlTextColor
+javax.swing.plaf.metal.MetalLookAndFeel.getPrimaryControlDarkShadow
+javax.swing.plaf.metal.MetalLookAndFeel.getSeparatorForeground
+javax.swing.plaf.metal.MetalLookAndFeel.getSubTextFont
+javax.swing.plaf.metal.MetalLookAndFeel.setCurrentTheme
+javax.swing.plaf.metal.MetalLookAndFeel.getControlShadow
+javax.swing.plaf.metal.MetalLookAndFeel.isSupportedLookAndFeel
+javax.swing.plaf.metal.MetalLookAndFeel.getMenuSelectedBackground
+javax.swing.plaf.metal.MetalLookAndFeel.getInactiveControlTextColor
+javax.swing.plaf.metal.MetalLookAndFeel.getWhite
+javax.swing.plaf.metal.MetalLookAndFeel.getUserTextFont
+javax.swing.plaf.metal.MetalLookAndFeel.getAcceleratorForeground
+javax.swing.plaf.metal.MetalLookAndFeel.getControlDisabled
+javax.swing.plaf.metal.MetalLookAndFeel.getID
+javax.swing.plaf.metal.MetalLookAndFeel.getWindowTitleBackground
+javax.swing.plaf.metal.MetalLookAndFeel.getName
+javax.swing.plaf.metal.MetalLookAndFeel.getSystemTextColor
+javax.swing.plaf.metal.MetalLookAndFeel.getWindowTitleFont
+javax.swing.plaf.metal.MetalLookAndFeel.getInactiveSystemTextColor
+javax.swing.plaf.metal.MetalLookAndFeel.getUserTextColor
+javax.swing.plaf.metal.MetalLookAndFeel.getWindowBackground
+javax.swing.plaf.metal.MetalLookAndFeel.getBlack
+javax.swing.plaf.metal.MetalLookAndFeel.getAcceleratorSelectedForeground
+javax.swing.plaf.metal.MetalLookAndFeel.getDesktopColor
+javax.swing.plaf.metal.MetalLookAndFeel.getSystemTextFont
+javax.swing.plaf.metal.MetalLookAndFeel.getControlDarkShadow
+javax.swing.plaf.metal.MetalLookAndFeel.getControlInfo
+javax.swing.plaf.metal.MetalLookAndFeel.getMenuDisabledForeground
+javax.swing.plaf.metal.MetalLookAndFeel.getFocusColor
+javax.swing.plaf.metal.MetalLookAndFeel.getMenuSelectedForeground
+javax.swing.plaf.metal.MetalLookAndFeel.getHighlightedTextColor
+javax.swing.plaf.metal.MetalLookAndFeel.getControl
+javax.swing.plaf.metal.MetalLookAndFeel.getWindowTitleInactiveBackground
+javax.swing.plaf.metal.MetalLookAndFeel.getTextHighlightColor
+javax.swing.plaf.metal.MetalLookAndFeel.getPrimaryControlInfo
+javax.swing.plaf.metal.MetalComboBoxIcon.getIconWidth
+javax.swing.plaf.metal.MetalComboBoxIcon.getIconHeight
+javax.swing.plaf.metal.MetalComboBoxUI.getPreferredSize
+javax.swing.plaf.metal.MetalComboBoxUI.createArrowButton
+javax.swing.plaf.metal.MetalFileChooserUI.getFileName
+javax.swing.plaf.metal.MetalFileChooserUI.createFilterComboBoxModel
+javax.swing.plaf.metal.MetalFileChooserUI.getButtonPanel
+javax.swing.plaf.metal.MetalFileChooserUI.getPreferredSize
+javax.swing.plaf.metal.MetalFileChooserUI.getMinimumSize
+javax.swing.plaf.metal.MetalFileChooserUI.getMaximumSize
+javax.swing.plaf.metal.MetalFileChooserUI.getApproveButton
+javax.swing.plaf.metal.MetalFileChooserUI.setFileName
+javax.swing.plaf.metal.MetalFileChooserUI.getBottomPanel
+javax.swing.plaf.metal.MetalCheckBoxUI.getPropertyPrefix
+javax.swing.plaf.metal.MetalIconFactory.TreeFolderIcon.getAdditionalHeight
+javax.swing.plaf.metal.MetalIconFactory.TreeFolderIcon.getShift
+javax.swing.plaf.metal.MetalIconFactory.PaletteCloseIcon.getIconWidth
+javax.swing.plaf.metal.MetalIconFactory.PaletteCloseIcon.getIconHeight
+javax.swing.plaf.metal.MetalIconFactory.TreeLeafIcon.getAdditionalHeight
+javax.swing.plaf.metal.MetalIconFactory.TreeLeafIcon.getShift
+javax.swing.plaf.metal.MetalIconFactory.getInternalFrameCloseIcon
+javax.swing.plaf.metal.MetalIconFactory.getInternalFrameMaximizeIcon
+javax.swing.plaf.metal.MetalIconFactory.getMenuItemCheckIcon
+javax.swing.plaf.metal.MetalIconFactory.getRadioButtonMenuItemIcon
+javax.swing.plaf.metal.MetalIconFactory.getCheckBoxMenuItemIcon
+javax.swing.plaf.metal.MetalIconFactory.getTreeHardDriveIcon
+javax.swing.plaf.metal.MetalIconFactory.getTreeLeafIcon
+javax.swing.plaf.metal.MetalIconFactory.getMenuArrowIcon
+javax.swing.plaf.metal.MetalIconFactory.getFileChooserNewFolderIcon
+javax.swing.plaf.metal.MetalIconFactory.getTreeControlIcon
+javax.swing.plaf.metal.MetalIconFactory.getFileChooserDetailViewIcon
+javax.swing.plaf.metal.MetalIconFactory.getTreeFloppyDriveIcon
+javax.swing.plaf.metal.MetalIconFactory.getMenuItemArrowIcon
+javax.swing.plaf.metal.MetalIconFactory.getFileChooserListViewIcon
+javax.swing.plaf.metal.MetalIconFactory.getTreeComputerIcon
+javax.swing.plaf.metal.MetalIconFactory.getFileChooserHomeFolderIcon
+javax.swing.plaf.metal.MetalIconFactory.getInternalFrameAltMaximizeIcon
+javax.swing.plaf.metal.MetalIconFactory.getRadioButtonIcon
+javax.swing.plaf.metal.MetalIconFactory.getFileChooserUpFolderIcon
+javax.swing.plaf.metal.MetalIconFactory.getInternalFrameDefaultMenuIcon
+javax.swing.plaf.metal.MetalIconFactory.getInternalFrameMinimizeIcon
+javax.swing.plaf.metal.MetalIconFactory.getCheckBoxIcon
+javax.swing.plaf.metal.MetalIconFactory.getTreeFolderIcon
+javax.swing.plaf.metal.MetalRadioButtonUI.getSelectColor
+javax.swing.plaf.metal.MetalRadioButtonUI.getFocusColor
+javax.swing.plaf.metal.MetalRadioButtonUI.getDisabledTextColor
+javax.swing.plaf.metal.MetalComboBoxButton.setIconOnly
+javax.swing.plaf.metal.MetalComboBoxButton.isFocusTraversable
+javax.swing.plaf.metal.MetalComboBoxButton.setEnabled
+javax.swing.plaf.metal.MetalComboBoxButton.isIconOnly
+javax.swing.plaf.metal.MetalComboBoxButton.getComboBox
+javax.swing.plaf.metal.MetalComboBoxButton.getComboIcon
+javax.swing.plaf.metal.MetalComboBoxButton.setComboBox
+javax.swing.plaf.metal.MetalComboBoxButton.constructors
+javax.swing.plaf.metal.MetalComboBoxButton.setComboIcon
+javax.swing.plaf.metal.DefaultMetalTheme.getMenuTextFont
+javax.swing.plaf.metal.DefaultMetalTheme.DefaultMetalThemeTest
+javax.swing.plaf.metal.DefaultMetalTheme.getControlTextFont
+javax.swing.plaf.metal.DefaultMetalTheme.getSubTextFont
+javax.swing.plaf.metal.DefaultMetalTheme.getUserTextFont
+javax.swing.plaf.metal.DefaultMetalTheme.getName
+javax.swing.plaf.metal.DefaultMetalTheme.getWindowTitleFont
+javax.swing.plaf.metal.DefaultMetalTheme.getSystemTextFont
+javax.swing.plaf.metal.MetalComboBoxEditor.constructor
+javax.swing.plaf.metal.MetalComboBoxEditor.editorBorderInsets
+javax.swing.plaf.metal.MetalToolTipUI.constructor
+javax.swing.plaf.metal.MetalToolTipUI.createUI
+javax.swing.plaf.metal.OceanTheme.OceanThemeTest
+javax.swing.plaf.metal.OceanTheme.addCustomEntriesToTable
+javax.swing.plaf.metal.MetalToggleButtonUI.getSelectColor
+javax.swing.plaf.metal.MetalToggleButtonUI.getFocusColor
+javax.swing.plaf.metal.MetalToggleButtonUI.getDisabledTextColor
+javax.swing.plaf.metal.MetalBorders.ToolBarBorder.getBorderInsets
+javax.swing.plaf.metal.MetalBorders.MenuItemBorder.borderInsets
+javax.swing.plaf.metal.MetalBorders.MenuBarBorder.getBorderInsets
+javax.swing.plaf.metal.MetalBorders.MenuBarBorder.borderInsets
+javax.swing.plaf.metal.MetalBorders.getToggleButtonBorder
+javax.swing.plaf.metal.MetalBorders.getDesktopIconBorder
+javax.swing.plaf.metal.MetalBorders.getButtonBorder
+javax.swing.plaf.metal.MetalBorders.getTextFieldBorder
+javax.swing.plaf.metal.MetalBorders.getTextBorder
+javax.swing.plaf.metal.MetalScrollButton.getButtonWidth
+javax.swing.plaf.metal.MetalScrollButton.getPreferredSize
+javax.swing.plaf.metal.MetalScrollButton.constructor
+javax.swing.plaf.metal.MetalScrollButton.getMinimumSize
+javax.swing.plaf.metal.MetalScrollButton.isFocusable
+javax.swing.plaf.metal.MetalScrollButton.getMaximumSize
+javax.swing.plaf.metal.MetalScrollBarUI.layoutContainer
+javax.swing.plaf.metal.MetalScrollBarUI.getPreferredSize
+javax.swing.plaf.metal.MetalScrollBarUI.constructor
+javax.swing.plaf.metal.MetalScrollBarUI.installDefaults
+javax.swing.plaf.metal.MetalScrollBarUI.getMinimumThumbSize
+javax.swing.plaf.metal.MetalButtonUI.getSelectColor
+javax.swing.plaf.metal.MetalButtonUI.getFocusColor
+javax.swing.plaf.metal.MetalButtonUI.getDisabledTextColor
+javax.swing.plaf.IconUIResource.constructor
+javax.swing.JFrame.isRootPaneCheckingEnabled
+javax.swing.JFrame.glassPaneLayout
+javax.swing.JFrame.constructors
+javax.swing.border.TitledBorder.getTitleFont
+javax.swing.border.TitledBorder.getTitle
+javax.swing.border.TitledBorder.setTitleJustification
+javax.swing.border.TitledBorder.getBorder
+javax.swing.border.TitledBorder.getBorderInsets
+javax.swing.border.TitledBorder.setTitleColor
+javax.swing.border.TitledBorder.setTitle
+javax.swing.border.TitledBorder.setTitlePosition
+javax.swing.border.TitledBorder.getTitleJustification
+javax.swing.border.TitledBorder.setBorder
+javax.swing.border.TitledBorder.getTitleColor
+javax.swing.border.TitledBorder.isBorderOpaque
+javax.swing.border.TitledBorder.constructors
+javax.swing.border.TitledBorder.setTitleFont
+javax.swing.border.TitledBorder.getTitlePosition
+javax.swing.border.CompoundBorder.isBorderOpaque
+javax.swing.JTable.AccessibleJTable.AccessibleJTableHeaderCell.getAccessibleRole
+javax.swing.JTable.AccessibleJTable.AccessibleJTableCell.getAccessibleRole
+javax.swing.JTable.AccessibleJTable.getAccessibleColumnHeader
+javax.swing.JTable.setRowSelectionAllowed
+javax.swing.JTable.getColumn
+javax.swing.JTable.getRowHeight
+javax.swing.JTable.convertColumnIndexToModel
+javax.swing.JTable.createDefaultDataModel
+javax.swing.JTable.getCellEditor
+javax.swing.JTable.setColumnSelectionAllowed
+javax.swing.JTable.setAutoCreateColumnsFromModel
+javax.swing.JTable.setRowHeight
+javax.swing.JTable.createDefaultSelectionModel
+javax.swing.JTable.getAccessibleContext
+javax.swing.JTable.convertColumnIndexToView
+javax.swing.JTable.isCellEditable
+javax.swing.JTable.getInputMap
+javax.swing.JTable.getCellRect
+javax.swing.JTable.isRowSelected
+javax.swing.JTable.getModel
+javax.swing.JTable.initializeLocalVars
+javax.swing.JTable.createDefaultColumnsFromModel
+javax.swing.JTable.getAutoCreateColumnsFromModel
+javax.swing.JTable.isColumnSelected
+javax.swing.JTable.addColumn
+javax.swing.table.AbstractTableModel.getColumnName
+javax.swing.table.AbstractTableModel.fireTableDataChanged
+javax.swing.table.AbstractTableModel.fireTableStructureChanged
+javax.swing.table.AbstractTableModel.fireTableRowsUpdated
+javax.swing.table.AbstractTableModel.fireTableRowsDeleted
+javax.swing.table.AbstractTableModel.getColumnClass
+javax.swing.table.AbstractTableModel.isCellEditable
+javax.swing.table.AbstractTableModel.fireTableChanged
+javax.swing.table.AbstractTableModel.findColumn
+javax.swing.table.AbstractTableModel.fireTableRowsInserted
+javax.swing.table.AbstractTableModel.fireTableCellUpdated
+javax.swing.table.DefaultTableCellRenderer.getTableCellRendererComponent
+javax.swing.table.DefaultTableColumnModel.getListeners
+javax.swing.table.DefaultTableColumnModel.getColumn
+javax.swing.table.DefaultTableColumnModel.getColumnModelListeners
+javax.swing.table.DefaultTableColumnModel.getSelectedColumnCount
+javax.swing.table.DefaultTableColumnModel.getSelectionModel
+javax.swing.table.DefaultTableColumnModel.getTotalColumnWidth
+javax.swing.table.DefaultTableColumnModel.constructor
+javax.swing.table.DefaultTableColumnModel.getColumns
+javax.swing.table.DefaultTableColumnModel.setColumnSelectionAllowed
+javax.swing.table.DefaultTableColumnModel.getColumnSelectionAllowed
+javax.swing.table.DefaultTableColumnModel.getColumnCount
+javax.swing.table.DefaultTableColumnModel.setSelectionModel
+javax.swing.table.DefaultTableColumnModel.setColumnMargin
+javax.swing.table.DefaultTableColumnModel.getColumnIndexAtX
+javax.swing.table.DefaultTableColumnModel.addColumnModelListener
+javax.swing.table.DefaultTableColumnModel.removeColumn
+javax.swing.table.DefaultTableColumnModel.moveColumn
+javax.swing.table.DefaultTableColumnModel.addColumn
+javax.swing.table.DefaultTableColumnModel.getColumnIndex
+javax.swing.table.DefaultTableColumnModel.getColumnMargin
+javax.swing.table.DefaultTableModel.removeRow
+javax.swing.table.DefaultTableModel.getRowCount
+javax.swing.table.DefaultTableModel.setColumnCount
+javax.swing.table.DefaultTableModel.insertRow
+javax.swing.table.DefaultTableModel.getColumnCount
+javax.swing.table.DefaultTableModel.convertToVector
+javax.swing.table.DefaultTableModel.setColumnIdentifiers
+javax.swing.table.DefaultTableModel.isCellEditable
+javax.swing.table.DefaultTableModel.setDataVector
+javax.swing.table.DefaultTableModel.setValueAt
+javax.swing.table.DefaultTableModel.moveRow
+javax.swing.table.DefaultTableModel.newDataAvailable
+javax.swing.table.DefaultTableModel.addRow
+javax.swing.table.DefaultTableModel.constructors
+javax.swing.table.DefaultTableModel.getDataVector
+javax.swing.table.DefaultTableModel.rowsRemoved
+javax.swing.table.DefaultTableModel.addColumn
+javax.swing.table.DefaultTableModel.setRowCount
+javax.swing.table.DefaultTableModel.getValueAt
+javax.swing.table.TableColumn.setCellEditor
+javax.swing.table.TableColumn.getHeaderRenderer
+javax.swing.table.TableColumn.getIdentifier
+javax.swing.table.TableColumn.setPreferredWidth
+javax.swing.table.TableColumn.setHeaderValue
+javax.swing.table.TableColumn.getCellRenderer
+javax.swing.table.TableColumn.sizeWidthToFit
+javax.swing.table.TableColumn.setResizable
+javax.swing.table.TableColumn.properties
+javax.swing.table.TableColumn.removePropertyChangeListener
+javax.swing.table.TableColumn.setIdentifier
+javax.swing.table.TableColumn.addPropertyChangeListener
+javax.swing.table.TableColumn.setMinWidth
+javax.swing.table.TableColumn.setModelIndex
+javax.swing.table.TableColumn.setCellRenderer
+javax.swing.table.TableColumn.getModelIndex
+javax.swing.table.TableColumn.setMaxWidth
+javax.swing.table.TableColumn.setWidth
+javax.swing.table.TableColumn.constants
+javax.swing.table.TableColumn.setHeaderRenderer
+javax.swing.table.TableColumn.getHeaderValue
+javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getLocale
+javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.isFocusTraversable
+javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.setAccessibleName
+javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleName
+javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleDescription
+javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleIndexInParent
+javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleContext
+javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.isVisible
+javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleChild
+javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleRole
+javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleComponent
+javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleChildrenCount
+javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry.getAccessibleValue
+javax.swing.table.JTableHeader.AccessibleJTableHeader.getAccessibleChild
+javax.swing.table.JTableHeader.AccessibleJTableHeader.getAccessibleRole
+javax.swing.table.JTableHeader.AccessibleJTableHeader.getAccessibleChildrenCount
+javax.swing.table.JTableHeader.getAccessibleContext
+javax.swing.event.InternalFrameEvent.constructor
+javax.swing.event.InternalFrameEvent.getInternalFrame
+javax.swing.event.InternalFrameEvent.paramString
+javax.swing.event.ListDataEvent.getIndex0
+javax.swing.event.ListDataEvent.constructor
+javax.swing.event.ListDataEvent.getType
+javax.swing.event.ListDataEvent.getSource
+javax.swing.event.ListDataEvent.getIndex1
+javax.swing.event.ListDataEvent.toString
+javax.swing.event.TableModelEvent.constructors
+javax.swing.event.SwingPropertyChangeSupport.firePropertyChange
+javax.swing.event.SwingPropertyChangeSupport.getPropertyChangeListeners
+javax.swing.event.SwingPropertyChangeSupport.constructor
+javax.swing.event.SwingPropertyChangeSupport.hasListeners
+javax.swing.event.SwingPropertyChangeSupport.removePropertyChangeListener
+javax.swing.event.SwingPropertyChangeSupport.addPropertyChangeListener
+javax.swing.event.EventListenerList.getListeners
+javax.swing.event.EventListenerList.add
+javax.swing.event.EventListenerList.getListenerList
+javax.swing.event.EventListenerList.getListenerCount
+javax.swing.event.EventListenerList.toString
+javax.swing.event.EventListenerList.remove
+javax.swing.event.TreeSelectionEvent.isAddedPath
+javax.swing.event.TreeSelectionEvent.cloneWithSource
+javax.swing.event.TreeSelectionEvent.constructors
+javax.swing.JDesktopPane.constructor
+javax.swing.JRadioButton.isFocusable
+javax.swing.JRadioButton.uidelegate
+javax.swing.JRadioButton.getActionCommand
+javax.swing.JRadioButton.model
+javax.swing.JMenuBar.getComponentIndex
+javax.swing.JMenuBar.getHelpMenu
+javax.swing.JMenuBar.getSubElements
+javax.swing.JMenuBar.setMargin
+javax.swing.JMenuBar.getInputMap
+javax.swing.JMenuBar.setHelpMenu
+javax.swing.JMenuBar.getActionMap
+javax.swing.JMenuBar.getMenu
+javax.swing.JCheckBoxMenuItem.uidelegate
+javax.swing.JCheckBoxMenuItem.getActionCommand
+javax.swing.JCheckBoxMenuItem.model
+javax.swing.JCheckBoxMenuItem.constructors
+javax.swing.JComboBox.getPrototypeDisplayValue
+javax.swing.JComboBox.MutableTest2
+javax.swing.JComboBox.setEditor
+javax.swing.JComboBox.getEditor
+javax.swing.JComboBox.addItem
+javax.swing.JComboBox.MutableTest1
+javax.swing.JComboBox.removeItem
+javax.swing.JComboBox.setModel
+javax.swing.JComboBox.setSelectedIndex
+javax.swing.JComboBox.model
+javax.swing.JComboBox.listenerList
+javax.swing.JComboBox.setPrototypeDisplayValue
+javax.swing.JComboBox.setEditable
+javax.swing.JComboBox.SimpleSelectionTest
+javax.swing.OverlayLayout.layoutContainer
+javax.swing.OverlayLayout.getLayoutAlignmentY
+javax.swing.OverlayLayout.getLayoutAlignmentX
+javax.swing.OverlayLayout.preferredLayoutSize
+javax.swing.OverlayLayout.minimumLayoutSize
+javax.swing.OverlayLayout.maximumLayoutSize
+javax.swing.JScrollPane.AccessibleJScrollPane.resetViewport
+javax.swing.JScrollPane.createHorizontalScrollBar
+javax.swing.JScrollPane.getInputMap
+javax.swing.JScrollPane.createVerticalScrollBar
+javax.swing.JScrollPane.getActionMap
+javax.swing.DefaultListCellRenderer.getListCellRendererComponent
+javax.swing.JFileChooser.setFileHidingEnabled
+javax.swing.JFileChooser.getControlButtonsAreShown
+javax.swing.JFileChooser.setApproveButtonMnemonic
+javax.swing.JFileChooser.setFileSystemView
+javax.swing.JFileChooser.getApproveButtonText
+javax.swing.JFileChooser.setDialogTitle
+javax.swing.JFileChooser.setDialogType
+javax.swing.JFileChooser.setSelectedFile
+javax.swing.JFileChooser.getChoosableFileFilters
+javax.swing.JFileChooser.getApproveButtonMnemonic
+javax.swing.JFileChooser.setApproveButtonText
+javax.swing.JFileChooser.getDialogType
+javax.swing.JFileChooser.getFileFilter
+javax.swing.JFileChooser.setAccessory
+javax.swing.JFileChooser.isAcceptAllFileFilterUsed
+javax.swing.JFileChooser.accept
+javax.swing.JFileChooser.setControlButtonsAreShown
+javax.swing.JFileChooser.setFileView
+javax.swing.JFileChooser.setCurrentDirectory
+javax.swing.JFileChooser.isFileHidingEnabled
+javax.swing.JFileChooser.constructors
+javax.swing.JFileChooser.changeToParentDirectory
+javax.swing.JFileChooser.getFileView
+javax.swing.JFileChooser.getFileSystemView
+javax.swing.JFileChooser.setSelectedFiles
+javax.swing.JFileChooser.setFileFilter
+javax.swing.JFileChooser.getFileSelectionMode
+javax.swing.JFileChooser.setFileSelectionMode
+javax.swing.JFileChooser.getSelectedFiles
+javax.swing.JFileChooser.getAccessory
+javax.swing.JFileChooser.setApproveButtonToolTipText
+javax.swing.JFileChooser.getApproveButtonToolTipText
+javax.swing.JFileChooser.getDialogTitle
+javax.swing.SpinnerDateModel.getPreviousValue
+javax.swing.SpinnerDateModel.setStart
+javax.swing.SpinnerDateModel.setEnd
+javax.swing.SpinnerDateModel.setValue
+javax.swing.SpinnerDateModel.getNextValue
+javax.swing.SpinnerDateModel.constructors
+javax.swing.JDialog.isRootPaneCheckingEnabled
+javax.swing.JPopupMenu.getInputMap
+javax.swing.JSlider.getPaintTrack
+javax.swing.JSlider.addChangeListener
+javax.swing.JSlider.setMinimum
+javax.swing.JSlider.setSnapToTicks
+javax.swing.JSlider.setOrientation
+javax.swing.JSlider.getMinorTickSpacing
+javax.swing.JSlider.setValue
+javax.swing.JSlider.setMaximum
+javax.swing.JSlider.setExtent
+javax.swing.JSlider.setPaintLabels
+javax.swing.JSlider.getSnapToTicks
+javax.swing.JSlider.setMinorTickSpacing
+javax.swing.JSlider.getUIClassID
+javax.swing.JSlider.setLabelTable
+javax.swing.JSlider.getPaintTicks
+javax.swing.JSlider.setModel
+javax.swing.JSlider.getMaximum
+javax.swing.JSlider.setPaintTicks
+javax.swing.JSlider.getPaintLabels
+javax.swing.JSlider.getMinimum
+javax.swing.JSlider.getModel
+javax.swing.JSlider.getInverted
+javax.swing.JSlider.setInverted
+javax.swing.JSlider.constructors
+javax.swing.JSlider.getMajorTickSpacing
+javax.swing.JSlider.createStandardLabels
+javax.swing.JSlider.setMajorTickSpacing
+javax.swing.JSlider.getExtent
+javax.swing.JSlider.setPaintTrack
+javax.swing.JSlider.getLabelTable
+javax.swing.DefaultButtonModel.addActionListener
+javax.swing.DefaultButtonModel.setPressed
+javax.swing.DefaultButtonModel.setEnabled
+javax.swing.DefaultButtonModel.constructor
+javax.swing.DefaultButtonModel.setActionCommand
+javax.swing.DefaultButtonModel.getSelectedObjects
+javax.swing.DefaultButtonModel.setArmed
+javax.swing.DefaultButtonModel.setSelected
+javax.swing.DefaultButtonModel.constants
+javax.swing.DefaultButtonModel.setRollover
+javax.swing.DefaultButtonModel.setGroup
+javax.swing.JComponent.getListeners
+javax.swing.JComponent.setVerifyInputWhenFocusTarget
+javax.swing.JComponent.getVetoableChangeListeners
+javax.swing.JComponent.setInheritsPopupMenu
+javax.swing.JComponent.getPreferredSize
+javax.swing.JComponent.setEnabled
+javax.swing.JComponent.constructor
+javax.swing.JComponent.registerKeyboardAction
+javax.swing.JComponent.setUI
+javax.swing.JComponent.getActionForKeyStroke
+javax.swing.JComponent.setMinimumSize
+javax.swing.JComponent.setPreferredSize
+javax.swing.JComponent.setDefaultLocale
+javax.swing.JComponent.setBackground
+javax.swing.JComponent.setBorder
+javax.swing.JComponent.getInputMap
+javax.swing.JComponent.setVisible
+javax.swing.JComponent.setAlignmentX
+javax.swing.JComponent.setComponentPopupMenu
+javax.swing.JComponent.getFont
+javax.swing.JComponent.setAlignmentY
+javax.swing.JComponent.setMaximumSize
+javax.swing.JComponent.setFont
+javax.swing.JComponent.getVerifyInputWhenFocusTarget
+javax.swing.JComponent.putClientProperty
+javax.swing.JComponent.getAlignmentY
+javax.swing.JComponent.getComponentPopupMenu
+javax.swing.JComponent.getAlignmentX
+javax.swing.JComponent.removeVetoableChangeListener
+javax.swing.JComponent.getRegisteredKeyStrokes
+javax.swing.JComponent.setForeground
+javax.swing.JComponent.paint
+javax.swing.JComponent.setOpaque
+javax.swing.JComponent.addVetoableChangeListener
+javax.swing.JProgressBar.isStringPainted
+javax.swing.JProgressBar.setOrientation
+javax.swing.JProgressBar.setValue
+javax.swing.JProgressBar.setBorderPainted
+javax.swing.JProgressBar.setStringPainted
+javax.swing.JProgressBar.getAccessibleContext
+javax.swing.JProgressBar.getPercentComplete
+javax.swing.JProgressBar.paramString
+javax.swing.JMenu.uidelegate
+javax.swing.JMenu.getInputMap
+javax.swing.JMenu.getActionCommand
+javax.swing.JMenu.model
+javax.swing.JMenu.getPopUpMenu
+javax.swing.JMenu.remove
+javax.swing.UIManager.LookAndFeelInfo.constructor
+javax.swing.UIManager.getPropertyChangeListeners
+javax.swing.UIManager.getBoolean
+javax.swing.UIManager.addAuxiliaryLookAndFeel
+javax.swing.UIManager.getString
+javax.swing.UIManager.getBorder
+javax.swing.UIManager.getIcon
+javax.swing.UIManager.getInsets
+javax.swing.UIManager.removeAuxiliaryLookAndFeel
+javax.swing.UIManager.setLookAndFeel
+javax.swing.UIManager.getFont
+javax.swing.UIManager.getDefaults
+javax.swing.UIManager.getInt
+javax.swing.UIManager.addPropertyChangeListener
+javax.swing.UIManager.getUI
+javax.swing.UIManager.getDimension
+javax.swing.UIManager.getLookAndFeelDefaults
+javax.swing.UIManager.getCrossPlatformLookAndFeelClassName
+javax.swing.UIManager.getColor
+javax.swing.UIManager.getAuxiliaryLookAndFeels
+javax.swing.JPanel.setBorder
+javax.swing.JPanel.Layouter
+javax.swing.JTree.getCellRenderer
+javax.swing.JTree.isRowSelected
+javax.swing.JTree.setModel
+javax.swing.TransferHandler.exportToClipboard
+javax.swing.TransferHandler.TransferActionConstructor
+javax.swing.TransferHandler.canImport
+javax.swing.TransferHandler.importData
+javax.swing.TransferHandler.createTransferable
+javax.swing.JToolTip.setComponent
+javax.swing.JToolTip.setTipText
+javax.swing.JToolTip.getAccessibleContext
+javax.swing.JToolTip.getUIClassID
+javax.swing.JToolTip.getTipText
+javax.swing.JToolTip.paramString
+javax.swing.JToolTip.getComponent
+javax.swing.JToolBar.buttonInsets
+javax.swing.JToolBar.getInputMap
+javax.swing.JRootPane.RootLayout.layoutContainer
+javax.swing.JRootPane.RootLayout.getLayoutAlignmentY
+javax.swing.JRootPane.RootLayout.getLayoutAlignmentX
+javax.swing.JRootPane.RootLayout.preferredLayoutSize
+javax.swing.JRootPane.setLayeredPane
+javax.swing.ScrollPaneLayout.minimumLayoutSize
+javax.swing.Timer.preparatory
+javax.swing.Timer.setDelay
+javax.swing.Timer.basic
+javax.swing.Timer.test_23918
+javax.swing.Timer.setInitialDelay
+javax.swing.ActionMap.newMapKeysNull
+javax.swing.InputMap.put
+javax.swing.InputMap.constructor
+javax.swing.InputMap.keys
+javax.swing.InputMap.setParent
+javax.swing.InputMap.size
+javax.swing.InputMap.newMapKeysNull
+javax.swing.InputMap.get
+javax.swing.InputMap.getParent
+javax.swing.InputMap.remove
+javax.swing.InputMap.clear
+javax.swing.InputMap.allKeys
+javax.swing.filechooser.FileView.getDescription
+javax.swing.filechooser.FileView.getIcon
+javax.swing.filechooser.FileView.getName
+javax.swing.filechooser.FileView.isTraversable
+javax.swing.filechooser.FileView.getTypeDescription
+javax.swing.filechooser.FileSystemView.getFileSystemView
+javax.swing.ViewportLayout.layoutContainer
+javax.swing.ViewportLayout.minimumLayoutSize
+javax.swing.JList.AccessibleJList.AccessibleJListChild.isFocusTraversable
+javax.swing.JList.AccessibleJList.AccessibleJListChild.isEnabled
+javax.swing.JList.AccessibleJList.AccessibleJListChild.setEnabled
+javax.swing.JList.AccessibleJList.AccessibleJListChild.setCursor
+javax.swing.JList.AccessibleJList.AccessibleJListChild.getForeground
+javax.swing.JList.AccessibleJList.AccessibleJListChild.setBackground
+javax.swing.JList.AccessibleJList.AccessibleJListChild.isVisible
+javax.swing.JList.AccessibleJList.AccessibleJListChild.isShowing
+javax.swing.JList.AccessibleJList.AccessibleJListChild.getFont
+javax.swing.JList.AccessibleJList.AccessibleJListChild.getCursor
+javax.swing.JList.AccessibleJList.AccessibleJListChild.getAccessibleRole
+javax.swing.JList.AccessibleJList.AccessibleJListChild.setFont
+javax.swing.JList.AccessibleJList.AccessibleJListChild.getAccessibleStateSet
+javax.swing.JList.AccessibleJList.AccessibleJListChild.setForeground
+javax.swing.JList.AccessibleJList.AccessibleJListChild.getBackground
+javax.swing.JList.AccessibleJList.valueChanged
+javax.swing.JList.AccessibleJList.getAccessibleChild
+javax.swing.JList.AccessibleJList.getAccessibleRole
+javax.swing.JList.AccessibleJList.intervalAdded
+javax.swing.JList.AccessibleJList.intervalRemoved
+javax.swing.JList.AccessibleJList.contentsChanged
+javax.swing.JList.AccessibleJList.getAccessibleStateSet
+javax.swing.JList.setValueIsAdjusting
+javax.swing.JList.setVisibleRowCount
+javax.swing.JList.setSelectionBackground
+javax.swing.JList.setBackground
+javax.swing.JList.getSelectionBackground
+javax.swing.JList.getInputMap
+javax.swing.JList.setModel
+javax.swing.JList.getNextMatch
+javax.swing.JList.setLayoutOrientation
+javax.swing.JList.constructors
+javax.swing.JList.getBackground
+javax.swing.ToolTipManager.setReshowDelay
+javax.swing.ToolTipManager.setInitialDelay
+javax.swing.ToolTipManager.setDismissDelay
+javax.swing.AbstractButton.constructor
+javax.swing.AbstractButton.setRolloverEnabled
+javax.swing.AbstractButton.setRolloverSelectedIcon
+javax.swing.AbstractButton.init
+javax.swing.AbstractButton.setVerticalTextPosition
+javax.swing.AbstractButton.setHorizontalAlignment
+javax.swing.AbstractButton.setHorizontalTextPosition
+javax.swing.AbstractButton.setRolloverIcon
+javax.swing.AbstractButton.setVerticalAlignment
+javax.swing.AbstractButton.createChangeListener
+javax.swing.JLayeredPane.defaultLayoutManager
+javax.swing.JLayeredPane.getComponentsInLayer
+javax.swing.JLayeredPane.setPosition
+javax.swing.JLayeredPane.moveToFront
+javax.swing.JLayeredPane.addImpl
+javax.swing.DefaultListModel.toArray
+javax.swing.DefaultListModel.trimToSize
+javax.swing.DefaultListModel.removeAllElements
+javax.swing.DefaultListModel.constructor
+javax.swing.DefaultListModel.add
+javax.swing.DefaultListModel.lastElement
+javax.swing.DefaultListModel.copyInto
+javax.swing.DefaultListModel.firstElement
+javax.swing.DefaultListModel.setElementAt
+javax.swing.DefaultListModel.set
+javax.swing.DefaultListModel.elementAt
+javax.swing.DefaultListModel.ensureCapacity
+javax.swing.DefaultListModel.indexOf
+javax.swing.DefaultListModel.insertElementAt
+javax.swing.DefaultListModel.setSize
+javax.swing.DefaultListModel.lastIndexOf
+javax.swing.DefaultListModel.elements
+javax.swing.DefaultListModel.size
+javax.swing.DefaultListModel.getSize
+javax.swing.DefaultListModel.capacity
+javax.swing.DefaultListModel.removeElementAt
+javax.swing.DefaultListModel.get
+javax.swing.DefaultListModel.contains
+javax.swing.DefaultListModel.getElementAt
+javax.swing.DefaultListModel.removeRange
+javax.swing.DefaultListModel.addElement
+javax.swing.DefaultListModel.removeElement
+javax.swing.DefaultListModel.isEmpty
+javax.swing.DefaultListModel.remove
+javax.swing.DefaultListModel.clear
+javax.swing.JFormattedTextField.JFormattedTextFieldTests
+javax.swing.AbstractAction.clone
+javax.swing.AbstractAction.setEnabled
+javax.swing.AbstractAction.getValue
+javax.swing.AbstractAction.constructors
+javax.swing.AbstractAction.putValue
+javax.swing.JTextArea.preferredSize
+javax.swing.JTextArea.isValidChecks
+javax.swing.JTextArea.text
+javax.swing.JTextArea.gettingText
+javax.swing.JCheckBox.constructor
+javax.swing.JCheckBox.isFocusable
+javax.swing.JCheckBox.uidelegate
+javax.swing.JCheckBox.getActionCommand
+javax.swing.JCheckBox.model
+javax.swing.JButton.uidelegate
+javax.swing.JButton.getActionCommand
+javax.swing.JButton.model
+javax.swing.SizeRequirements.calculateAlignedPositions
+javax.swing.tree.TreePath.getParentPath
+javax.swing.tree.TreePath.serialization
+javax.swing.tree.TreePath.getPath
+javax.swing.tree.TreePath.getLastPathComponent
+javax.swing.tree.TreePath.PR27651
+javax.swing.tree.TreePath.isDescendant
+javax.swing.tree.TreePath.equals
+javax.swing.tree.TreePath.getPathCount
+javax.swing.tree.TreePath.constructors
+javax.swing.tree.TreePath.getPathComponent
+javax.swing.tree.TreePath.pathByAddingChild
+javax.swing.tree.DefaultMutableTreeNode.clone
+javax.swing.tree.DefaultMutableTreeNode.getChildAt
+javax.swing.tree.DefaultMutableTreeNode.getChildBefore
+javax.swing.tree.DefaultMutableTreeNode.getSiblingCount
+javax.swing.tree.DefaultMutableTreeNode.isNodeSibling
+javax.swing.tree.DefaultMutableTreeNode.getIndex
+javax.swing.tree.DefaultMutableTreeNode.isNodeChild
+javax.swing.tree.DefaultMutableTreeNode.add
+javax.swing.tree.DefaultMutableTreeNode.getFirstChild
+javax.swing.tree.DefaultMutableTreeNode.getPath
+javax.swing.tree.DefaultMutableTreeNode.removeAllChildren
+javax.swing.tree.DefaultMutableTreeNode.getChildCount
+javax.swing.tree.DefaultMutableTreeNode.isNodeRelated
+javax.swing.tree.DefaultMutableTreeNode.getNextSibling
+javax.swing.tree.DefaultMutableTreeNode.getPreviousSibling
+javax.swing.tree.DefaultMutableTreeNode.setAllowsChildren
+javax.swing.tree.DefaultMutableTreeNode.getPreviousLeaf
+javax.swing.tree.DefaultMutableTreeNode.isNodeAncestor
+javax.swing.tree.DefaultMutableTreeNode.getNextPreviousNode
+javax.swing.tree.DefaultMutableTreeNode.isNodeDescendant
+javax.swing.tree.DefaultMutableTreeNode.breadthFirstEnumeration
+javax.swing.tree.DefaultMutableTreeNode.getLastLeaf
+javax.swing.tree.DefaultMutableTreeNode.children
+javax.swing.tree.DefaultMutableTreeNode.getAllowsChildren
+javax.swing.tree.DefaultMutableTreeNode.getFirstLeaf
+javax.swing.tree.DefaultMutableTreeNode.constructors
+javax.swing.tree.DefaultMutableTreeNode.isLeaf
+javax.swing.tree.DefaultMutableTreeNode.insert
+javax.swing.tree.DefaultMutableTreeNode.DefaultMutableTreeNodeTest
+javax.swing.tree.DefaultMutableTreeNode.getParent
+javax.swing.tree.DefaultMutableTreeNode.getLastChild
+javax.swing.tree.DefaultMutableTreeNode.pathFromAncestorEnumeration
+javax.swing.tree.DefaultMutableTreeNode.remove
+javax.swing.tree.DefaultMutableTreeNode.getNextLeaf
+javax.swing.tree.DefaultMutableTreeNode.getChildAfter
+javax.swing.tree.DefaultTreeCellRenderer.getBackgroundSelectionColor
+javax.swing.tree.DefaultTreeCellRenderer.getOpenIcon
+javax.swing.tree.DefaultTreeCellRenderer.getClosedIcon
+javax.swing.tree.DefaultTreeCellRenderer.setOpenIcon
+javax.swing.tree.DefaultTreeCellRenderer.constructor
+javax.swing.tree.DefaultTreeCellRenderer.getLeafIcon
+javax.swing.tree.DefaultTreeCellRenderer.getBorderSelectionColor
+javax.swing.tree.DefaultTreeCellRenderer.setLeafIcon
+javax.swing.tree.DefaultTreeCellRenderer.getDefaultLeafIcon
+javax.swing.tree.DefaultTreeCellRenderer.setBackgroundSelectionColor
+javax.swing.tree.DefaultTreeCellRenderer.getDefaultOpenIcon
+javax.swing.tree.DefaultTreeCellRenderer.getDefaultClosedIcon
+javax.swing.tree.DefaultTreeCellRenderer.setBackgroundNonSelectionColor
+javax.swing.tree.DefaultTreeCellRenderer.setBorderSelectionColor
+javax.swing.tree.DefaultTreeCellRenderer.getBackgroundNonSelectionColor
+javax.swing.tree.DefaultTreeCellRenderer.setClosedIcon
+javax.swing.tree.VariableHeightLayoutCache.getBounds
+javax.swing.BoxLayout.layoutContainer
+javax.swing.BoxLayout.invalidateLayout
+javax.swing.BoxLayout.constructor
+javax.swing.BoxLayout.simplevertical
+javax.swing.BoxLayout.maximumLayoutSize2
+javax.swing.BoxLayout.getLayoutAlignmentY
+javax.swing.BoxLayout.horizontal2
+javax.swing.BoxLayout.getLayoutAlignmentX
+javax.swing.BoxLayout.simplehorizontal
+javax.swing.BoxLayout.constants
+javax.swing.BoxLayout.preferredLayoutSize
+javax.swing.BoxLayout.minimumLayoutSize
+javax.swing.BoxLayout.maximumLayoutSize
+javax.swing.JApplet.isRootPaneCheckingEnabled
+javax.swing.DefaultBoundedRangeModel.setValueIsAdjusting
+javax.swing.DefaultBoundedRangeModel.setMinimum
+javax.swing.DefaultBoundedRangeModel.serialization
+javax.swing.DefaultBoundedRangeModel.setValue
+javax.swing.DefaultBoundedRangeModel.setMaximum
+javax.swing.DefaultBoundedRangeModel.setExtent
+javax.swing.DefaultBoundedRangeModel.getChangeListeners
+javax.swing.DefaultBoundedRangeModel.getValue
+javax.swing.DefaultBoundedRangeModel.setRangeProperties
+javax.swing.DefaultBoundedRangeModel.getMaximum
+javax.swing.DefaultBoundedRangeModel.getValueIsAdjusting
+javax.swing.DefaultBoundedRangeModel.getMinimum
+javax.swing.DefaultBoundedRangeModel.general
+javax.swing.DefaultBoundedRangeModel.toString
+javax.swing.DefaultBoundedRangeModel.getExtent
+javax.swing.undo.UndoableEditSupport.getUndoableEditListeners
+javax.swing.undo.UndoableEditSupport.createCompoundEdit
+javax.swing.undo.UndoableEditSupport.toString
+javax.swing.undo.UndoableEditSupport.beginUpdate
+javax.swing.undo.UndoableEditSupport.UndoableEditSupport
+javax.swing.undo.UndoableEditSupport.getUpdateLevel
+javax.swing.undo.CompoundEdit.lastEdit
+javax.swing.undo.CompoundEdit.addEdit
+javax.swing.undo.CompoundEdit.canRedo
+javax.swing.undo.CompoundEdit.canUndo
+javax.swing.undo.CompoundEdit.isInProgress
+javax.swing.undo.AbstractUndoableEdit.getRedoPresentationName
+javax.swing.undo.AbstractUndoableEdit.addEdit
+javax.swing.undo.AbstractUndoableEdit.canRedo
+javax.swing.undo.AbstractUndoableEdit.redo
+javax.swing.undo.AbstractUndoableEdit.undo
+javax.swing.undo.AbstractUndoableEdit.canUndo
+javax.swing.undo.AbstractUndoableEdit.getPresentationName
+javax.swing.undo.AbstractUndoableEdit.replaceEdit
+javax.swing.undo.AbstractUndoableEdit.isSignificant
+javax.swing.undo.AbstractUndoableEdit.getUndoPresentationName
+javax.swing.undo.StateEdit.undo
+javax.swing.undo.StateEdit.getPresentationName
+javax.swing.undo.UndoManager.getRedoPresentationName
+javax.swing.undo.UndoManager.getUndoOrRedoPresentationName
+javax.swing.undo.UndoManager.addEdit
+javax.swing.undo.UndoManager.canRedo
+javax.swing.undo.UndoManager.trimEdits
+javax.swing.undo.UndoManager.undoTo
+javax.swing.undo.UndoManager.editToBeUndone
+javax.swing.undo.UndoManager.canUndo
+javax.swing.undo.UndoManager.undoableEditHappened
+javax.swing.undo.UndoManager.setLimit
+javax.swing.undo.UndoManager.discardAllEdits
+javax.swing.undo.UndoManager.redoTo
+javax.swing.undo.UndoManager.end
+javax.swing.undo.UndoManager.toString
+javax.swing.undo.UndoManager.getUndoPresentationName
+javax.swing.undo.UndoManager.getLimit
+javax.swing.undo.UndoManager.editToBeRedone
+javax.swing.undo.UndoManager.canUndoOrRedo
+javax.swing.JMenuItem.getActionCommand
+javax.swing.JMenuItem.constructors
+javax.swing.DefaultComboBoxModel.removeAllElements
+javax.swing.DefaultComboBoxModel.insertElementAt
+javax.swing.DefaultComboBoxModel.getIndexOf
+javax.swing.DefaultComboBoxModel.getSize
+javax.swing.DefaultComboBoxModel.constructors
+javax.swing.DefaultComboBoxModel.removeElementAt
+javax.swing.DefaultComboBoxModel.getSelectedItem
+javax.swing.DefaultComboBoxModel.getElementAt
+javax.swing.DefaultComboBoxModel.addElement
+javax.swing.DefaultComboBoxModel.removeElement
+javax.swing.SizeSequence.getIndex
+javax.swing.SizeSequence.getSizes
+javax.swing.SizeSequence.removeEntries
+javax.swing.SizeSequence.setSizes
+javax.swing.SizeSequence.setSize
+javax.swing.SizeSequence.getSize
+javax.swing.SizeSequence.constructors
+javax.swing.SizeSequence.insertEntries
+javax.swing.JTextField.CopyPaste
+javax.swing.JTextField.createDefaultModel
+javax.swing.JTextField.setDocument
+javax.swing.JTextField.fireActionPerformed
+javax.swing.UIDefaults.putDefaults
+javax.swing.UIDefaults.getBoolean
+javax.swing.UIDefaults.remove
+javax.swing.RepaintManager.addDirtyRegion
+javax.swing.JInternalFrame.AccessibleJInternalFrame.getAccessibleName
+javax.swing.JInternalFrame.AccessibleJInternalFrame.getCurrentAccessibleValue
+javax.swing.JInternalFrame.AccessibleJInternalFrame.getMaximumAccessibleValue
+javax.swing.JInternalFrame.AccessibleJInternalFrame.setCurrentAccessibleValue
+javax.swing.JInternalFrame.AccessibleJInternalFrame.getAccessibleRole
+javax.swing.JInternalFrame.AccessibleJInternalFrame.getAccessibleValue
+javax.swing.JInternalFrame.AccessibleJInternalFrame.getMinimumAccessibleValue
+javax.swing.JInternalFrame.getDesktopIcon
+javax.swing.JInternalFrame.isRootPaneCheckingEnabled
+javax.swing.JInternalFrame.setDefaultCloseOperation
+javax.swing.JInternalFrame.isIconifiable
+javax.swing.JInternalFrame.setTitle
+javax.swing.JInternalFrame.setClosable
+javax.swing.JInternalFrame.setResizable
+javax.swing.JInternalFrame.setIconifiable
+javax.swing.JInternalFrame.setFrameIcon
+javax.swing.JInternalFrame.setMaximizable
+javax.swing.JInternalFrame.getInputMap
+javax.swing.JInternalFrame.setClosed
+javax.swing.JInternalFrame.setNormalBounds
+javax.swing.JInternalFrame.setSelected2
+javax.swing.JInternalFrame.dispose
+javax.swing.JInternalFrame.isResizable
+javax.swing.JInternalFrame.constructors
+javax.swing.JInternalFrame.paramString
+javax.swing.JInternalFrame.setDesktopIcon
+javax.swing.JInternalFrame.getNormalBounds
+javax.swing.SpinnerListModel.Constructors
+javax.swing.SpinnerListModel.Ordering
+javax.swing.SpinnerListModel.SetList
+javax.swing.SpinnerListModel.ArrayModel
+javax.swing.SpinnerListModel.ListModel
+javax.swing.JRadioButtonMenuItem.isFocusable
+javax.swing.JRadioButtonMenuItem.uidelegate
+javax.swing.JRadioButtonMenuItem.getActionCommand
+javax.swing.JRadioButtonMenuItem.model
+javax.swing.KeyStroke.getKeyStroke
+javax.swing.SpinnerNumberModel.getPreviousValue
+javax.swing.SpinnerNumberModel.setMinimum
+javax.swing.SpinnerNumberModel.setValue
+javax.swing.SpinnerNumberModel.setMaximum
+javax.swing.SpinnerNumberModel.getNextValue
+javax.swing.SpinnerNumberModel.setStepSize
+javax.swing.SpinnerNumberModel.constructors
+javax.swing.JLabel.AccessibleJLabel.getAccessibleName
+javax.swing.JLabel.setDisplayedMnemonicIndex
+javax.swing.JLabel.constructor
+javax.swing.JLabel.getAccessibleContext
+javax.swing.JLabel.Icon
+javax.swing.JLabel.getInputMap
+javax.swing.JLabel.setHorizontalAlignment
+javax.swing.JLabel.setFont
+javax.swing.JLabel.setDisplayedMnemonic
+javax.swing.JLabel.getActionMap
+javax.swing.JLabel.Mnemonic
+javax.swing.JLabel.paramString
+javax.swing.JLabel.setVerticalAlignment
+javax.swing.JEditorPane.ContentType
+javax.swing.JEditorPane.ViewType
+javax.swing.JEditorPane.setText
+javax.swing.JEditorPane.getScrollableTracks
+javax.swing.DefaultListSelectionModel.clone
+javax.swing.DefaultListSelectionModel.getListeners
+javax.swing.DefaultListSelectionModel.setValueIsAdjusting
+javax.swing.DefaultListSelectionModel.setAnchorSelectionIndex
+javax.swing.DefaultListSelectionModel.removeListSelectionListener
+javax.swing.DefaultListSelectionModel.constructor
+javax.swing.DefaultListSelectionModel.removeIndexInterval
+javax.swing.DefaultListSelectionModel.removeSelectionInterval
+javax.swing.DefaultListSelectionModel.getAnchorSelectionIndex
+javax.swing.DefaultListSelectionModel.getLeadSelectionIndex
+javax.swing.DefaultListSelectionModel.isLeadAnchorNotificationEnabled
+javax.swing.DefaultListSelectionModel.setSelectionInterval
+javax.swing.DefaultListSelectionModel.getSelectionMode
+javax.swing.DefaultListSelectionModel.isSelectedIndex
+javax.swing.DefaultListSelectionModel.moveLeadSelectionIndex
+javax.swing.DefaultListSelectionModel.leadSelectionIndex
+javax.swing.DefaultListSelectionModel.getMaxSelectionIndex
+javax.swing.DefaultListSelectionModel.getMinSelectionIndex
+javax.swing.DefaultListSelectionModel.getListSelectionListeners
+javax.swing.DefaultListSelectionModel.getValueIsAdjusting
+javax.swing.DefaultListSelectionModel.isSelectionEmpty
+javax.swing.DefaultListSelectionModel.addSelectionInterval
+javax.swing.DefaultListSelectionModel.setLeadSelectionIndex
+javax.swing.DefaultListSelectionModel.toString
+javax.swing.DefaultListSelectionModel.setSelectionMode
+javax.swing.DefaultListSelectionModel.clearSelection
+javax.swing.DefaultListSelectionModel.insertIndexInterval
+javax.swing.DefaultListSelectionModel.addListSelectionListener
+javax.swing.SwingUtilities.calculateInnerArea
+javax.swing.SwingUtilities.isRectangleContainingRectangle
+javax.swing.SwingUtilities.computeIntersection
+javax.swing.SwingUtilities.replaceUIActionMap
+javax.swing.SwingUtilities.computeUnion
+javax.swing.JSpinner.ListEditor.constructor
+javax.swing.JSpinner.ListEditor.getModel
+javax.swing.JSpinner.NumberEditor.getModel
+javax.swing.JSpinner.NumberEditor.constructors
+javax.swing.JSpinner.NumberEditor.getFormat
+javax.swing.JSpinner.DefaultEditor.constructor
+javax.swing.JSpinner.DefaultEditor.stateChanged
+javax.swing.JSpinner.DefaultEditor.propertyChange
+javax.swing.JSpinner.DefaultEditor.preferredLayoutSize
+javax.swing.JSpinner.DefaultEditor.minimumLayoutSize
+javax.swing.JSpinner.DateEditor.getModel
+javax.swing.JSpinner.getPreviousValue
+javax.swing.JSpinner.addChangeListener
+javax.swing.JSpinner.createEditor
+javax.swing.JSpinner.getChangeListeners
+javax.swing.JSpinner.setEditor
+javax.swing.JSpinner.getUIClassID
+javax.swing.JSpinner.getEditor
+javax.swing.JSpinner.setModel
+javax.swing.JSpinner.getNextValue
+javax.swing.JSpinner.getModel
+javax.swing.JSpinner.constructors
+javax.swing.JSpinner.removeChangeListener
+javax.swing.ButtonGroup.constructor
+javax.swing.ButtonGroup.add
+javax.swing.ButtonGroup.isSelected
+javax.swing.ButtonGroup.getSelection
+javax.swing.ButtonGroup.getElements
+javax.swing.ButtonGroup.getButtonCount
+javax.swing.ButtonGroup.setSelected
+javax.swing.ButtonGroup.remove
+javax.swing.JViewport.setView
+gnu.javax.crypto.jce.TestOfDHKeyAgreement2
+gnu.javax.crypto.jce.TestOfPR27849
+gnu.javax.crypto.jce.TestOfPR27228
+java.rmi.server.Uniqueness
+java.lang.Integer.compareTo
+java.lang.Integer.decode
+java.lang.Integer.new_Integer
+java.lang.Integer.IntegerTest
+java.lang.Integer.getInteger
+java.lang.Integer.parseInt
+java.lang.ClassLoader.redefine
+java.lang.ClassLoader.security
+java.lang.ClassLoader.loadClass
+java.lang.ClassLoader.initialize
+java.lang.ClassLoader.Resources
+java.lang.ClassLoader.BootDefinedPackages
+java.lang.Number.NumberTest
+java.lang.ProcessBuilder.simple
+java.lang.System.getProperty
+java.lang.System.arraycopy
+java.lang.System.identityHashCode
+java.lang.ThreadGroup.enumerate
+java.lang.ThreadGroup.insecurity
+java.lang.ThreadGroup.security
+java.lang.String.substring
+java.lang.String.compareTo
+java.lang.String.getBytes13
+java.lang.String.hash
+java.lang.String.split
+java.lang.String.getBytes14
+java.lang.String.startsWith
+java.lang.String.equals
+java.lang.String.indexOf
+java.lang.String.to
+java.lang.String.StringTest
+java.lang.String.surrogate
+java.lang.String.charAt
+java.lang.String.new_String
+java.lang.String.getBytes
+java.lang.String.CASE_INSENSITIVE_ORDER
+java.lang.Class.ClassTest
+java.lang.Class.serialization
+java.lang.Class.reflect
+java.lang.Class.security
+java.lang.Class.init
+java.lang.Class.newInstance
+java.lang.Class.reflect2
+java.lang.Cloneable.CloneableTest
+java.lang.ref.WeakReference.weakref
+java.lang.ref.PhantomReference.phantom
+java.lang.Double.compareTo
+java.lang.Double.DoubleSetterTest
+java.lang.Double.DoubleTest
+java.lang.Double.toHexString
+java.lang.Double.parseDouble
+java.lang.Double.compare
+java.lang.Double.valueOf
+java.lang.StrictMath.cbrt
+java.lang.StrictMath.expm1
+java.lang.StrictMath.cosh
+java.lang.StrictMath.sinh
+java.lang.StrictMath.tanh
+java.lang.Short.hash
+java.lang.Short.ShortTest
+java.lang.InheritableThreadLocal.simple
+java.lang.Math.max
+java.lang.Math.ulp
+java.lang.Math.sin
+java.lang.Math.min
+java.lang.Math.cos
+java.lang.Math.MathTest
+java.lang.Math.rint
+java.lang.Boolean.BooleanTest
+java.lang.Boolean.equals_Boolean
+java.lang.Boolean.new_Boolean
+java.lang.Boolean.hashcode_Boolean
+java.lang.Boolean.get
+java.lang.Boolean.value
+java.lang.Float.compareTo
+java.lang.Float.toHexString
+java.lang.Float.compare
+java.lang.Float.parseFloat
+java.lang.Float.valueOf
+java.lang.Float.FloatTest
+java.lang.Float.new_Float
+java.lang.reflect.Array.set
+java.lang.reflect.Array.newInstance
+java.lang.reflect.AccessibleObject.accessible
+java.lang.reflect.Field.promotion
+java.lang.reflect.Field.access
+java.lang.reflect.Field.toString
+java.lang.reflect.Modifier.toString12
+java.lang.reflect.Modifier.toString
+java.lang.reflect.Constructor.newInstance
+java.lang.reflect.Constructor.toString
+java.lang.reflect.Proxy.DeclaringClass
+java.lang.reflect.Proxy.check13
+java.lang.reflect.Proxy.ExceptionRaising
+java.lang.reflect.Proxy.ToString
+java.lang.reflect.InvocationTargetException.Chain
+java.lang.reflect.Method.equals
+java.lang.reflect.Method.toString
+java.lang.reflect.Method.invoke
+java.lang.reflect.ReflectAccess
+java.lang.ThreadLocal.simple
+java.lang.Object.clone
+java.lang.Object.wait
+java.lang.Object.ObjectTest
+java.lang.Object.oom
+java.lang.Byte.ByteTest
+java.lang.Byte.new_Byte
+java.lang.StringBuffer.StringBufferTest
+java.lang.StringBuffer.plus
+java.lang.Long.Tests15
+java.lang.Long.getLong
+java.lang.Long.LongTest
+java.lang.Long.new_Long
+java.lang.Thread.join
+java.lang.Thread.isAlive
+java.lang.Thread.name
+java.lang.Thread.interrupt
+java.lang.Thread.contextClassLoader
+java.lang.Thread.getThreadGroup
+java.lang.Thread.priority
+java.lang.Thread.stop
+java.lang.Thread.daemon
+java.lang.Package.getPackage
+java.lang.Character.digit
+java.lang.Character.Blocks
+java.lang.Character.unicode
+java.lang.Character.getNumericValue
+java.lang.Character.getType
+java.lang.Character.hash
+java.lang.Character.classify
+java.lang.Character.classify12
+java.lang.Character.to
+java.lang.Character.consts
+java.lang.Character.forDigit
+java.lang.Character.getType12
+java.lang.Character.equals_Character
+java.lang.Character.CharacterTest
+java.lang.Character.Blocks15
+java.lang.SecurityManager.thread
+java.text.StringCharacterIterator.constructor
+java.text.StringCharacterIterator.iter
+java.text.CollationElementIterator.offset
+java.text.CollationElementIterator.jdk11
+java.text.AttributedString.constructors
+java.text.AttributedString.addAttribute
+java.text.AttributedString.getIterator
+java.text.AttributedString.addAttributes
+java.text.AttributedString.Test
+java.text.DecimalFormat.setCurrency
+java.text.DecimalFormat.clone
+java.text.DecimalFormat.setDecimalFormatSymbols
+java.text.DecimalFormat.getNegativePrefix
+java.text.DecimalFormat.applyPattern
+java.text.DecimalFormat.formatToCharacterIterator
+java.text.DecimalFormat.getNegativeSuffix
+java.text.DecimalFormat.setNegativePrefix
+java.text.DecimalFormat.applyLocalizedPattern
+java.text.DecimalFormat.getDecimalFormatSymbols
+java.text.DecimalFormat.toLocalizedPattern
+java.text.DecimalFormat.isDecimalSeparatorAlwaysShown
+java.text.DecimalFormat.setNegativeSuffix
+java.text.DecimalFormat.PR27311
+java.text.DecimalFormat.getPositivePrefix
+java.text.DecimalFormat.getCurrency
+java.text.DecimalFormat.equals
+java.text.DecimalFormat.digits
+java.text.DecimalFormat.setDecimalSeparatorAlwaysShown
+java.text.DecimalFormat.setPositiveSuffix
+java.text.DecimalFormat.parse
+java.text.DecimalFormat.setPositivePrefix
+java.text.DecimalFormat.toPattern14
+java.text.DecimalFormat.setMultiplier
+java.text.DecimalFormat.format
+java.text.DecimalFormat.getPositiveSuffix
+java.text.DecimalFormat.setGroupingSize
+java.text.DecimalFormat.PR23996
+java.text.DecimalFormat.toPattern
+java.text.DecimalFormat.constructors
+java.text.DecimalFormat.MaximumAndMinimumDigits
+java.text.DecimalFormat.formatExp
+java.text.DecimalFormat.getGroupingSize
+java.text.DecimalFormat.hashCode
+java.text.DecimalFormat.position
+java.text.DecimalFormat.getMultiplier
+java.text.NumberFormat.UK
+java.text.CharacterIterator.implement
+java.text.ParsePosition.Test
+java.text.BreakIterator.chariter
+java.text.BreakIterator.patho
+java.text.BreakIterator.lineiter
+java.text.BreakIterator.sentiter
+java.text.BreakIterator.worditer
+java.text.Collator.Constants
+java.text.Collator.GetSet
+java.text.ParseException.Test
+java.text.Annotation.Test
+java.text.RuleBasedCollator.CollatorTests
+java.text.RuleBasedCollator.VeryBasic
+java.text.MessageFormat.format14
+java.text.MessageFormat.attribute
+java.text.MessageFormat.parse
+java.text.MessageFormat.format
+java.text.ChoiceFormat.next
+java.text.ChoiceFormat.parse
+java.text.ChoiceFormat.format
+java.text.DateFormatSymbols.setMonths
+java.text.DateFormatSymbols.setShortMonths
+java.text.DateFormatSymbols.setEras
+java.text.DateFormatSymbols.setAmPmStrings
+java.text.DateFormatSymbols.setWeekdays
+java.text.DateFormatSymbols.setZoneStrings
+java.text.DateFormatSymbols.setShortWeekdays
+java.text.DateFormatSymbols.Test
+java.text.AttributedCharacterIterator.Attribute.toString
+java.text.AttributedCharacterIterator.getRunLimit
+java.text.AttributedCharacterIterator.implement
+java.text.AttributedCharacterIterator.getRunStart
+java.text.AttributedCharacterIterator.getAttribute
+java.text.DateFormat.equals
+java.text.DateFormat.hashCode
+java.text.DateFormat.Test
+java.text.ACIAttribute.Test
+java.text.DecimalFormatSymbols.serial
+java.text.DecimalFormatSymbols.GetSet12
+java.text.DecimalFormatSymbols.getCurrency
+java.text.DecimalFormatSymbols.DumpDefault11
+java.text.DecimalFormatSymbols.GetSet11
+java.text.DecimalFormatSymbols.DumpDefault12
+java.text.FieldPosition.Test
+java.text.SimpleDateFormat.applyPattern
+java.text.SimpleDateFormat.Localization
+java.text.SimpleDateFormat.applyLocalizedPattern
+java.text.SimpleDateFormat.toLocalizedPattern
+java.text.SimpleDateFormat.attribute
+java.text.SimpleDateFormat.Cloning
+java.text.SimpleDateFormat.getDateFormatSymbols
+java.text.SimpleDateFormat.parse
+java.text.SimpleDateFormat.toPattern
+java.text.SimpleDateFormat.constructors
+java.text.SimpleDateFormat.setDateFormatSymbols
+java.text.SimpleDateFormat.getAndSet2DigitYearStart
+java.text.SimpleDateFormat.Test
+java.text.Bidi.Basic
+java.text.Bidi.reorderVisually
+java.math.BigInteger.compareTo
+java.math.BigInteger.modInverse
+java.math.BigInteger.shift
+java.math.BigInteger.serialization
+java.math.BigInteger.add
+java.math.BigInteger.TestOfPR27372
+java.math.BigInteger.signum
+java.math.BigInteger.modPow
+java.math.BigInteger.equals
+java.math.BigInteger.divide
+java.math.BigInteger.setBit
+java.math.BigInteger.multiply
+java.math.BigInteger.TestOfToByteArray
+java.math.BigInteger.toString
+java.math.BigInteger.ctor
+java.math.BigInteger.abs
+java.math.BigInteger.valueOf
+java.math.BigDecimal.compareTo
+java.math.BigDecimal.divide
+java.math.BigDecimal.DiagBigDecimal
+java.math.BigDecimal.construct
+java.math.BigDecimal.setScale
+java.security.MessageDigest.Instance
+java.security.AccessController.doPrivileged
+java.security.AccessController.contexts
+java.security.Security.getAlgorithms
+java.security.Security.provider
+java.security.Provider.NameVersionInfo
+java.security.SecureRandom.SHA1PRNG
+java.security.SecureRandom.TestOfPR23899
+java.security.SecureRandom.Instance
+java.security.KeyPairGenerator.getInstance14
+java.security.AlgorithmParameters.getInstance14
+java.security.AlgorithmParameterGenerator.getInstance14
+java.security.DigestInputStream.readMD5
+java.security.KeyFactory.getInstance14
+java.security.Signature.getInstance14
+java.security.Signature.Instance
+java.security.BasicPermission.newPermission
+java.sql.Clob.ClobTest
+java.sql.Types.TestJdbc10
+java.sql.Types.TestJdbc20
+java.sql.Array.ArrayTest
+java.sql.Blob.BlobTest
+java.sql.Connection.TestJdbc
+java.sql.Time.TimeTest
+java.sql.DriverManager.DriverManagerTest
+java.sql.Date.DateTest
+java.sql.DatabaseMetaData.TestJdbc
+java.sql.Timestamp.TimestampTest
+java.io.RandomAccessFile.setLength
+java.io.RandomAccessFile.security
+java.io.RandomAccessFile.jdk11
+java.io.RandomAccessFile.randomaccessfile
+java.io.BufferedWriter.Test
+java.io.PipedReaderWriter.Test
+java.io.PushbackInputStream.ProtectedVars
+java.io.PushbackInputStream.BufferOverflow
+java.io.PushbackInputStream.Unread
+java.io.FileOutputStream.append
+java.io.FileOutputStream.fileoutputstream
+java.io.FileOutputStream.security
+java.io.FileOutputStream.write
+java.io.FileOutputStream.jdk12
+java.io.StringWriter.Test
+java.io.FilterOutputStream.write
+java.io.ObjectInputStream.security
+java.io.ObjectInputStream.readResolve
+java.io.ObjectInputStream.ClassLoaderTest
+java.io.ObjectOutputStream.security
+java.io.ObjectOutputStream.StreamDataTest
+java.io.ObjectOutputStream.useProtocolVersion
+java.io.InputStream.Test
+java.io.Utf8Encoding.ReadReference
+java.io.Utf8Encoding.WriteRead
+java.io.FilePermission.traversal2
+java.io.FilePermission.simple
+java.io.FilePermission.traversal
+java.io.FileWriter.jdk11
+java.io.OutputStreamWriter.jdk11
+java.io.Serializable.BreakMe
+java.io.Serializable.BreakMeTestSer
+java.io.Serializable.ParentReadResolve
+java.io.Serializable.readResolve
+java.io.Serializable.ParentWriteReplace
+java.io.ObjectInputOutput.LoopSerializationTest
+java.io.ObjectInputOutput.ExtTest
+java.io.ObjectInputOutput.Deserializable
+java.io.ObjectInputOutput.ProxySerializationTest
+java.io.ObjectInputOutput.Compat1
+java.io.ObjectInputOutput.SerTest
+java.io.ObjectInputOutput.HierarchyTest
+java.io.ObjectInputOutput.OutputTest
+java.io.ObjectInputOutput.InputTest
+java.io.PrintWriter.jdk11
+java.io.PrintWriter.checkError
+java.io.SequenceInputStream.Test
+java.io.StringBufferInputStream.ProtectedVars
+java.io.StringBufferInputStream.SimpleRead
+java.io.StringBufferInputStream.MarkReset
+java.io.LineNumberReader.Test2
+java.io.LineNumberReader.mark
+java.io.LineNumberReader.Test
+java.io.InputStreamReader.hang
+java.io.InputStreamReader.utf8
+java.io.InputStreamReader.jdk11
+java.io.InputStreamReader.except
+java.io.InputStreamReader.getEncoding
+java.io.DataInputStream.readLine
+java.io.DataInputStream.ReadReference
+java.io.DataInputStream.ReadReference2
+java.io.FilterWriter.write
+java.io.CharArrayWriter.ProtectedVars
+java.io.CharArrayWriter.BasicTests
+java.io.FileDescriptor.jdk11
+java.io.Reader.Test
+java.io.PushbackReader.BufferOverflow
+java.io.PushbackReader.Unread
+java.io.ByteArrayOutputStream.subclass
+java.io.ByteArrayOutputStream.write
+java.io.PrintStream.subclass
+java.io.PrintStream.encodings
+java.io.ObjectStreamClass.ProxyTest
+java.io.ObjectStreamClass.Test
+java.io.FilterReader.SimpleRead
+java.io.FilterReader.MarkReset
+java.io.BufferedOutputStream.interrupt
+java.io.BufferedOutputStream.Test
+java.io.BufferedInputStream.Skip
+java.io.BufferedInputStream.BigMark
+java.io.BufferedInputStream.ProtectedVars
+java.io.BufferedInputStream.ZeroRead
+java.io.BufferedInputStream.SimpleRead
+java.io.BufferedInputStream.MarkReset
+java.io.BufferedReader.mark
+java.io.BufferedReader.SimpleRead
+java.io.BufferedReader.MarkReset
+java.io.BufferedReader.boundary
+java.io.DataOutputStream.WriteRead2
+java.io.DataOutputStream.writeUTF
+java.io.DataOutputStream.WriteRead
+java.io.PipedStream.close
+java.io.PipedStream.receive
+java.io.PipedStream.Test
+java.io.FileInputStream.fileinputstream
+java.io.FileInputStream.read
+java.io.FileInputStream.security
+java.io.Writer.Test
+java.io.FilterInputStream.SimpleRead
+java.io.FilterInputStream.MarkReset
+java.io.FileReader.jdk11
+java.io.StringReader.Test
+java.io.ByteArrayInputStream.ProtectedVars
+java.io.ByteArrayInputStream.SimpleRead
+java.io.ByteArrayInputStream.MarkReset
+java.io.File.newFileURI
+java.io.File.URI
+java.io.File.createFile
+java.io.File.security
+java.io.File.ReadMethods
+java.io.File.ExecuteMethods
+java.io.File.list
+java.io.File.jdk11
+java.io.File.newFile
+java.io.File.WriteMethods
+java.io.File.canWrite
+java.io.File.listFiles
+java.io.File.emptyFile
+java.io.File.UnicodeURI
+java.io.OutputStream.Test
+java.io.StreamTokenizer.WordWhiteChars
+java.io.StreamTokenizer.slashstar
+java.io.StreamTokenizer.commentchar
+java.io.StreamTokenizer.slashslash
+java.io.StreamTokenizer.newline
+java.io.StreamTokenizer.misc
+java.io.StreamTokenizer.Test
+java.io.LineNumberInputStream.Test
+java.io.CharArrayReader.ProtectedVars
+java.io.CharArrayReader.OutOfBounds
+java.io.CharArrayReader.SimpleRead
+java.io.CharArrayReader.MarkReset
+java.util.Stack.AcuniaStackTest
+java.util.Arrays.asList
+java.util.Arrays.fill
+java.util.Arrays.equals
+java.util.Arrays.sort
+java.util.Arrays.binarySearch
+java.util.Properties.getProperty
+java.util.Properties.AcuniaPropertiesTest
+java.util.Properties.load
+java.util.TreeSet.basic
+java.util.Observable.observable
+java.util.StringTokenizer.hasMoreElements
+java.util.StringTokenizer.hasMoreTokens
+java.util.StringTokenizer.countTokens
+java.util.StringTokenizer.nextToken
+java.util.StringTokenizer.constructors
+java.util.StringTokenizer.nextElement
+java.util.IdentityHashMap.simple
+java.util.prefs.PreferenceTest
+java.util.Hashtable.HashContains
+java.util.Hashtable.AcuniaHashtableTest
+java.util.Hashtable.EnumerateAndModify
+java.util.Hashtable.basic
+java.util.Hashtable.ContainsHash
+java.util.Hashtable.NullValue
+java.util.TreeMap.serialization
+java.util.TimeZone.setDefault
+java.util.TimeZone.zdump
+java.util.TimeZone.setID
+java.util.UUID.TestAll
+java.util.Currency.Constructors
+java.util.Currency.Germany
+java.util.Currency.ReferenceEquality
+java.util.Currency.France
+java.util.Currency.getInstance
+java.util.Currency.Japan
+java.util.Currency.UK
+java.util.Currency.Korea
+java.util.Currency.PRC
+java.util.Currency.Canada
+java.util.Currency.CanadaFrench
+java.util.Currency.China
+java.util.Currency.Taiwan
+java.util.Currency.Italy
+java.util.AbstractCollection.AcuniaAbstractCollectionTest
+java.util.AbstractCollection.AcuniaAddCollectionTest
+java.util.AbstractCollection.toString
+java.util.SimpleTimeZone.clone
+java.util.SimpleTimeZone.hasSameRules
+java.util.SimpleTimeZone.getRawOffset
+java.util.SimpleTimeZone.setRawOffset
+java.util.SimpleTimeZone.check14
+java.util.SimpleTimeZone.equals
+java.util.SimpleTimeZone.inDaylightTime
+java.util.SimpleTimeZone.setStartYear
+java.util.SimpleTimeZone.constructors
+java.util.SimpleTimeZone.getOffset
+java.util.SimpleTimeZone.setDSTSavings
+java.util.SimpleTimeZone.hashCode
+java.util.SimpleTimeZone.constants
+java.util.SimpleTimeZone.getDSTSavings
+java.util.AbstractList.AcuniaAbstractListTest
+java.util.Collections.nCopies
+java.util.Collections.fill
+java.util.Collections.max
+java.util.Collections.copy
+java.util.Collections.rotate
+java.util.Collections.unmodifiableList
+java.util.Collections.min
+java.util.Collections.unmodifiableMap
+java.util.Collections.reverse
+java.util.Collections.reverseOrder
+java.util.Collections.sort
+java.util.Collections.binarySearch
+java.util.logging.SocketHandler.SocketHandler
+java.util.logging.XMLFormatter.getTail
+java.util.logging.Handler.isLoggable
+java.util.logging.Handler.setEncoding
+java.util.logging.Handler.setFilter
+java.util.logging.Handler.getErrorManager
+java.util.logging.Handler.reportError
+java.util.logging.Handler.setLevel
+java.util.logging.Handler.setErrorManager
+java.util.logging.LogRecord.getThreadID
+java.util.logging.LogRecord.setLoggerName
+java.util.logging.LogRecord.getMillis
+java.util.logging.LogRecord.setThrown
+java.util.logging.LogRecord.setThreadID
+java.util.logging.LogRecord.setSequenceNumber
+java.util.logging.LogRecord.setSourceMethodName
+java.util.logging.LogRecord.setResourceBundle
+java.util.logging.LogRecord.setMillis
+java.util.logging.LogRecord.setMessage
+java.util.logging.LogRecord.setParameters
+java.util.logging.LogRecord.setSourceClassName
+java.util.logging.LogRecord.setLevel
+java.util.logging.Level.intValue
+java.util.logging.Level.equals
+java.util.logging.Level.getName
+java.util.logging.Level.parse
+java.util.logging.Level.toString
+java.util.logging.Level.hashCode
+java.util.logging.LogManager.readConfiguration
+java.util.logging.LoggingMXBean.Test
+java.util.logging.Logger.hierarchyChecks
+java.util.logging.Logger.getName
+java.util.logging.Logger.getAnonymousLogger
+java.util.logging.Logger.securityChecks
+java.util.logging.Logger.getParent
+java.util.logging.Logger.global
+java.util.Iterator.ConcurrentModification
+java.util.BitSet.AcuniaBitSetTest
+java.util.BitSet.flip
+java.util.BitSet.jdk10
+java.util.BitSet.get
+java.util.BitSet.clear
+java.util.Timer.taskException
+java.util.GregorianCalendar.first
+java.util.GregorianCalendar.setFirstDayOfWeek
+java.util.GregorianCalendar.dayOfWeekInMonth
+java.util.GregorianCalendar.setWeekOfMonth
+java.util.GregorianCalendar.internal
+java.util.GregorianCalendar.equals
+java.util.GregorianCalendar.getMinimum
+java.util.GregorianCalendar.getMinimalDaysInFirstWeek
+java.util.GregorianCalendar.conversion
+java.util.GregorianCalendar.weekOfYear
+java.util.Random.basic
+java.util.AbstractSet.AcuniaAbstractSetTest
+java.util.Calendar.TimeZone
+java.util.Calendar.ampm
+java.util.Calendar.add
+java.util.Calendar.minmax
+java.util.Calendar.setTime
+java.util.Calendar.setTimeZone
+java.util.Calendar.getInstance
+java.util.Calendar.set
+java.util.Calendar.simple
+java.util.Calendar.roll
+java.util.Calendar.dstOffset
+java.util.regex.Matcher.hitEnd
+java.util.regex.Pattern.UnicodeSimpleCategory
+java.util.regex.Pattern.pcrematches
+java.util.regex.Pattern.matches
+java.util.regex.PatternSplit
+java.util.regex.CharacterClasses
+java.util.AbstractSequentialList.AcuniaAbstractSequentialListTest
+java.util.LinkedList.subList
+java.util.LinkedList.AcuniaLinkedListTest
+java.util.LinkedList.SubListTest
+java.util.HashMap.AcuniaHashMapTest
+java.util.jar.JarInputStream.getNextEntry
+java.util.jar.JarFile.TestOfManifest
+java.util.jar.JarFile.basic
+java.util.Vector.subList
+java.util.Vector.copyInto
+java.util.Vector.removeAll
+java.util.Vector.retainAll
+java.util.Vector.VectorSerialization
+java.util.zip.ZipEntry.time
+java.util.zip.ZipEntry.Size
+java.util.zip.ZipEntry.newZipEntry
+java.util.zip.ZipEntry.setComment
+java.util.zip.ZipInputStream.close
+java.util.zip.ZipInputStream.basic
+java.util.zip.Deflater.PR27435
+java.util.zip.Adler32.checksum
+java.util.zip.GZIPInputStream.PR24461
+java.util.zip.GZIPInputStream.basic
+java.util.zip.InflaterInputStream.basic
+java.util.zip.ZipFile.DirEntryTest
+java.util.zip.ZipFile.NoEntryTest
+java.util.zip.ZipFile.newZipFile
+java.util.Date.compareTo
+java.util.Date.clone
+java.util.Date.before
+java.util.Date.serialization
+java.util.Date.range
+java.util.Date.equals
+java.util.Date.parse
+java.util.Date.after
+java.util.Date.getTimezoneOffset
+java.util.LinkedHashMap.LinkedHashMapTest
+java.util.LinkedHashMap.Regress
+java.util.ArrayList.subList
+java.util.ArrayList.serial
+java.util.ResourceBundle.getBundle
+java.util.AbstractMap.AcuniaAbstractMapTest
+java.beans.XMLDecoder.jdk14
+java.beans.Expression.check
+java.beans.Introspector.getBeanInfo2
+java.beans.Introspector.getBeanInfo4
+java.beans.Introspector.getBeanInfo
+java.beans.Introspector.jdk11
+java.beans.Introspector.jdk12
+java.beans.Introspector.getBeanInfo2_2
+java.beans.DesignMode.constants
+java.beans.PropertyEditorSupport.setValue
+java.beans.PropertyEditorSupport.getSource
+java.beans.SimpleBeanInfo.getIcon
+java.beans.SimpleBeanInfo.getDefaultPropertyIndex
+java.beans.SimpleBeanInfo.getEventSetDescriptors
+java.beans.SimpleBeanInfo.getDefaultEventIndex
+java.beans.SimpleBeanInfo.getBeanDescriptor
+java.beans.SimpleBeanInfo.getAdditionalBeanInfo
+java.beans.SimpleBeanInfo.loadImage
+java.beans.EventSetDescriptor.constructorTest1
+java.beans.FeatureDescriptor.check
+java.beans.beancontext.BeanContextSupport.toArray
+java.beans.beancontext.BeanContextSupport.getChildPropertyChangeListener
+java.beans.beancontext.BeanContextSupport.serialize
+java.beans.beancontext.BeanContextSupport.getChildBeanContextChild
+java.beans.beancontext.BeanContextSupport.getChildBeanContextMembershipListener
+java.beans.beancontext.BeanContextSupport.setDesignTime
+java.beans.beancontext.BeanContextSupport.getChildVisibility
+java.beans.beancontext.BeanContextSupport.constructors
+java.beans.beancontext.BeanContextSupport.getChildVetoableChangeListener
+java.beans.beancontext.BeanContextSupport.getChildSerializable
+java.beans.beancontext.BeanContextSupport.getBeanContextPeer
+java.beans.beancontext.BeanContextServicesSupport.getChildBeanContextServicesListener
+java.beans.beancontext.InstantiateChild
+java.beans.beancontext.Remove
+java.beans.beancontext.Array
+java.beans.beancontext.Add
+java.beans.PropertyChangeSupport.firePropertyChange
+java.beans.VetoableChangeSupport.addVetoableChangeListener
+java.beans.Statement.check
+java.beans.Beans.instantiate_1
+java.beans.EventHandler.check
+java.beans.EventHandler.check14b
+java.beans.PropertyDescriptor.constructorTest2
+java.beans.PropertyDescriptor.constructorTest1
+java.beans.MethodDescriptor.constructorTest1
+java.awt.AWTEvent.constants
+java.awt.CardLayout.show
+java.awt.CardLayout.first
+java.awt.CardLayout.testMaximumLayoutSize
+java.awt.CardLayout.testMinimumLayoutSize
+java.awt.Graphics.clearRect
+java.awt.Polygon.contains
+java.awt.Polygon.getPathIterator
+java.awt.BasicStroke.equals
+java.awt.BasicStroke.constructors
+java.awt.BasicStroke.hashCode
+java.awt.BasicStroke.constants
+java.awt.Graphics2D.setClip
+java.awt.Graphics2D.getClip
+java.awt.Graphics2D.getClipBounds
+java.awt.Graphics2D.setTransform
+java.awt.Graphics2D.clip
+java.awt.Graphics2D.transform
+java.awt.Point.move
+java.awt.Point.clone
+java.awt.Point.equals
+java.awt.Point.constructors
+java.awt.Point.setLocation
+java.awt.Point.translate
+java.awt.Point.getLocation
+java.awt.event.ComponentEvent.paramString
+java.awt.image.ShortLookupTable.getTable
+java.awt.image.ShortLookupTable.lookupPixel
+java.awt.image.ShortLookupTable.constructors
+java.awt.image.PixelGrabber.SimpleGrabber
+java.awt.image.PixelGrabber.testNullProducer
+java.awt.image.ConvolveOp.getEdgeCondition
+java.awt.image.ConvolveOp.getKernel
+java.awt.image.ConvolveOp.filterRaster
+java.awt.image.ConvolveOp.getRenderingHints
+java.awt.image.ConvolveOp.getPoint2D
+java.awt.image.ConvolveOp.createCompatibleDestRaster
+java.awt.image.ConvolveOp.constructors
+java.awt.image.ConvolveOp.getBounds2D
+java.awt.image.ConvolveOp.constants
+java.awt.image.IndexColorModel.getGreens
+java.awt.image.IndexColorModel.getComponentSize
+java.awt.image.IndexColorModel.getTransparentPixel
+java.awt.image.IndexColorModel.getColorSpace
+java.awt.image.IndexColorModel.getAlphas
+java.awt.image.IndexColorModel.getPixelSize
+java.awt.image.IndexColorModel.isValid
+java.awt.image.IndexColorModel.constructors
+java.awt.image.IndexColorModel.getBlues
+java.awt.image.IndexColorModel.getReds
+java.awt.image.IndexColorModel.getTransparency
+java.awt.image.DataBuffer.getDataTypeSize
+java.awt.image.DataBuffer.getOffset
+java.awt.image.DataBuffer.constants
+java.awt.image.DataBuffer.getOffsets
+java.awt.image.DataBufferUShort.getData
+java.awt.image.DataBufferUShort.getBankData
+java.awt.image.DataBufferUShort.setElem
+java.awt.image.DataBufferUShort.getElem
+java.awt.image.DataBufferUShort.getDataType
+java.awt.image.DataBufferUShort.constructors
+java.awt.image.ComponentSampleModel.setPixels
+java.awt.image.ComponentSampleModel.getPixelStride
+java.awt.image.ComponentSampleModel.getDataElements
+java.awt.image.ComponentSampleModel.getSample
+java.awt.image.ComponentSampleModel.getBandOffsets
+java.awt.image.ComponentSampleModel.equals
+java.awt.image.ComponentSampleModel.getPixel
+java.awt.image.ComponentSampleModel.getNumDataElements
+java.awt.image.ComponentSampleModel.getSamples
+java.awt.image.ComponentSampleModel.getSampleSize
+java.awt.image.ComponentSampleModel.getSampleFloat
+java.awt.image.ComponentSampleModel.setDataElements
+java.awt.image.ComponentSampleModel.constructors
+java.awt.image.ComponentSampleModel.setPixel
+java.awt.image.ComponentSampleModel.createDataBuffer
+java.awt.image.ComponentSampleModel.getOffset
+java.awt.image.ComponentSampleModel.getSampleDouble
+java.awt.image.ComponentSampleModel.createCompatibleSampleModel
+java.awt.image.ComponentSampleModel.setSamples
+java.awt.image.ComponentSampleModel.hashCode
+java.awt.image.ComponentSampleModel.getPixels
+java.awt.image.ComponentSampleModel.getScanlineStride
+java.awt.image.ComponentSampleModel.createSubsetSampleModel
+1 problem (1 error)java.awt.image.ColorModel.getComponentSize
+java.awt.image.ColorModel.getRGBdefault
+java.awt.image.ColorModel.constructors
+java.awt.image.LookupTable.constructor
+java.awt.image.LookupTable.getNumComponents
+java.awt.image.RescaleOp.getScaleFactors
+java.awt.image.RescaleOp.getRenderingHints
+java.awt.image.RescaleOp.getPoint2D
+java.awt.image.RescaleOp.constructors
+java.awt.image.RescaleOp.getNumFactors
+java.awt.image.RescaleOp.getOffsets
+java.awt.image.DirectColorModel.coerceData
+java.awt.image.WritableRaster.createChild
+java.awt.image.WritableRaster.createWritableChild
+java.awt.image.ComponentColorModel.coerceData
+java.awt.image.SampleModel.setPixels
+java.awt.image.SampleModel.getSample
+java.awt.image.SampleModel.getPixel
+java.awt.image.SampleModel.getSamples
+java.awt.image.SampleModel.getSampleSize
+java.awt.image.SampleModel.getSampleFloat
+java.awt.image.SampleModel.setPixel
+java.awt.image.SampleModel.setSample
+java.awt.image.SampleModel.createDataBuffer
+java.awt.image.SampleModel.getSampleDouble
+java.awt.image.SampleModel.setSamples
+java.awt.image.SampleModel.getPixels
+java.awt.image.BandCombineOp.getPoint2D
+java.awt.image.BandCombineOp.createCompatibleDestRaster
+java.awt.image.BandCombineOp.getBounds2D
+java.awt.image.BandCombineOp.filter
+java.awt.image.LookupOp.constructor
+java.awt.image.LookupOp.filterRaster
+java.awt.image.LookupOp.getRenderingHints
+java.awt.image.LookupOp.getTable
+java.awt.image.LookupOp.getPoint2D
+java.awt.image.Kernel.getYOrigin
+java.awt.image.Kernel.constructor
+java.awt.image.Kernel.getXOrigin
+java.awt.image.Kernel.getHeight
+java.awt.image.Kernel.check
+java.awt.image.Kernel.getKernelData
+java.awt.image.Kernel.getWidth
+java.awt.image.BufferedImage.getSubimage
+java.awt.image.BufferedImage.getSetRgb1Pixel
+java.awt.image.DataBufferByte.getData
+java.awt.image.DataBufferByte.getBankData
+java.awt.image.DataBufferByte.setElem
+java.awt.image.DataBufferByte.getElem
+java.awt.image.DataBufferByte.getDataType
+java.awt.image.DataBufferByte.constructors
+java.awt.image.DataBufferShort.getData
+java.awt.image.DataBufferShort.getBankData
+java.awt.image.DataBufferShort.setElem
+java.awt.image.DataBufferShort.getElem
+java.awt.image.DataBufferShort.getDataType
+java.awt.image.DataBufferShort.constructors
+java.awt.image.Raster.createChild
+java.awt.image.DataBufferInt.getData
+java.awt.image.DataBufferInt.getBankData
+java.awt.image.DataBufferInt.setElem
+java.awt.image.DataBufferInt.getElem
+java.awt.image.DataBufferInt.getDataType
+java.awt.image.DataBufferInt.constructors
+java.awt.image.SinglePixelPackedSampleModel.getBitOffsets
+java.awt.image.SinglePixelPackedSampleModel.getDataElements
+java.awt.image.SinglePixelPackedSampleModel.getSample
+java.awt.image.SinglePixelPackedSampleModel.equals
+java.awt.image.SinglePixelPackedSampleModel.getPixel
+java.awt.image.SinglePixelPackedSampleModel.getNumDataElements
+java.awt.image.SinglePixelPackedSampleModel.getSamples
+java.awt.image.SinglePixelPackedSampleModel.getSampleSize
+java.awt.image.SinglePixelPackedSampleModel.setDataElements
+java.awt.image.SinglePixelPackedSampleModel.constructors
+java.awt.image.SinglePixelPackedSampleModel.getBitMasks
+java.awt.image.SinglePixelPackedSampleModel.setPixel
+java.awt.image.SinglePixelPackedSampleModel.setSample
+java.awt.image.SinglePixelPackedSampleModel.createDataBuffer
+java.awt.image.SinglePixelPackedSampleModel.getOffset
+java.awt.image.SinglePixelPackedSampleModel.createCompatibleSampleModel
+java.awt.image.SinglePixelPackedSampleModel.hashCode
+java.awt.image.SinglePixelPackedSampleModel.getPixels
+java.awt.image.SinglePixelPackedSampleModel.getScanlineStride
+java.awt.image.SinglePixelPackedSampleModel.createSubsetSampleModel
+java.awt.image.ByteLookupTable.getTable
+java.awt.image.ByteLookupTable.lookupPixel
+java.awt.image.ByteLookupTable.constructors
+java.awt.image.MultiPixelPackedSampleModel.getBitOffset
+java.awt.image.MultiPixelPackedSampleModel.getTransferType
+java.awt.image.MultiPixelPackedSampleModel.getDataElements
+java.awt.image.MultiPixelPackedSampleModel.getSample
+java.awt.image.MultiPixelPackedSampleModel.equals
+java.awt.image.MultiPixelPackedSampleModel.getPixel
+java.awt.image.MultiPixelPackedSampleModel.getSampleSize
+java.awt.image.MultiPixelPackedSampleModel.setDataElements
+java.awt.image.MultiPixelPackedSampleModel.constructors
+java.awt.image.MultiPixelPackedSampleModel.setPixel
+java.awt.image.MultiPixelPackedSampleModel.setSample
+java.awt.image.MultiPixelPackedSampleModel.createDataBuffer
+java.awt.image.MultiPixelPackedSampleModel.getPixelBitStride
+java.awt.image.MultiPixelPackedSampleModel.getOffset
+java.awt.image.MultiPixelPackedSampleModel.createCompatibleSampleModel
+java.awt.image.MultiPixelPackedSampleModel.hashCode
+java.awt.image.MultiPixelPackedSampleModel.getScanlineStride
+java.awt.image.MultiPixelPackedSampleModel.createSubsetSampleModel
+java.awt.image.AffineTransformOp.getPoint2D
+java.awt.image.AffineTransformOp.createCompatibleDestRaster
+java.awt.image.AffineTransformOp.constructors
+java.awt.image.AffineTransformOp.getBounds2D
+java.awt.image.PixelInterleavedSampleModel.createSubsetSampleModel
+java.awt.image.BandedSampleModel.setPixels
+java.awt.image.BandedSampleModel.getDataElements
+java.awt.image.BandedSampleModel.getSample
+java.awt.image.BandedSampleModel.getPixel
+java.awt.image.BandedSampleModel.getSamples
+java.awt.image.BandedSampleModel.getSampleFloat
+java.awt.image.BandedSampleModel.setDataElements
+java.awt.image.BandedSampleModel.constructors
+java.awt.image.BandedSampleModel.setPixel
+java.awt.image.BandedSampleModel.setSample
+java.awt.image.BandedSampleModel.createDataBuffer
+java.awt.image.BandedSampleModel.getSampleDouble
+java.awt.image.BandedSampleModel.createCompatibleSampleModel
+java.awt.image.BandedSampleModel.setSamples
+java.awt.image.BandedSampleModel.hashCode
+java.awt.image.BandedSampleModel.getPixels
+java.awt.image.BandedSampleModel.createSubsetSampleModel
+java.awt.image.ColorConvertOp.filterRaster
+java.awt.image.ColorConvertOp.getPoint2D
+java.awt.image.ColorConvertOp.createCompatibleDestRaster
+java.awt.image.ColorConvertOp.constructors
+java.awt.image.ColorConvertOp.getBounds2D
+java.awt.ScrollPaneAdjustable.paramString
+java.awt.GridBagLayout.AdjustForGravity
+java.awt.GridBagLayout.toString
+java.awt.Dimension.clone
+java.awt.Dimension.equals
+java.awt.Dimension.setSize
+java.awt.Dimension.getSize
+java.awt.Dimension.constructors
+java.awt.TextField.getPreferredSize
+java.awt.TextField.getMinimumSize
+java.awt.TextField.constructors
+java.awt.BorderLayout.layoutContainer
+java.awt.BorderLayout.getHgap
+java.awt.BorderLayout.maxLayoutSize
+java.awt.BorderLayout.setVgap
+java.awt.BorderLayout.getVgap
+java.awt.BorderLayout.getLayoutAlignmentY
+java.awt.BorderLayout.Test15
+java.awt.BorderLayout.getLayoutAlignmentX
+java.awt.BorderLayout.setHgap
+java.awt.BorderLayout.constructors
+java.awt.BorderLayout.constants
+java.awt.BorderLayout.preferredLayoutSize
+java.awt.BorderLayout.addLayoutComponent
+java.awt.Scrollbar.testSetBlockIncrement
+java.awt.Scrollbar.testSetUnitIncrement
+java.awt.Scrollbar.testSetValues
+java.awt.List.testSelected
+java.awt.ScrollPane.add
+java.awt.ScrollPane.getScrollPosition
+java.awt.ScrollPane.testSetLayout
+java.awt.ScrollPane.setScrollPosition
+java.awt.ScrollPane.doLayout
+java.awt.Choice.getSelected
+java.awt.Choice.remove
+java.awt.KeyboardFocusManager.getFocusOwner
+java.awt.KeyboardFocusManager.getGlobalPermanentFocusOwner
+java.awt.KeyboardFocusManager.getGlobalFocusOwner
+java.awt.AWTPermission.constructor
+java.awt.ColorClass.decode
+java.awt.ColorClass.serialization
+java.awt.ColorClass.equals
+java.awt.ColorClass.getGreen
+java.awt.ColorClass.constructors
+java.awt.ColorClass.brighter
+java.awt.ColorClass.hashCode
+java.awt.ColorClass.constants
+java.awt.ColorClass.getBlue
+java.awt.ColorClass.getRed
+java.awt.RenderingHints.Key.isCompatibleValue
+java.awt.RenderingHints.clone
+java.awt.RenderingHints.keySet
+java.awt.RenderingHints.put
+java.awt.RenderingHints.add
+java.awt.RenderingHints.putAll
+java.awt.RenderingHints.entrySet
+java.awt.RenderingHints.equals
+java.awt.RenderingHints.size
+java.awt.RenderingHints.get
+java.awt.RenderingHints.values
+java.awt.RenderingHints.containsValue
+java.awt.RenderingHints.isEmpty
+java.awt.RenderingHints.remove
+java.awt.RenderingHints.clear
+java.awt.Panel.TestPanelRepaint
+java.awt.AWTKeyStroke.serialization
+java.awt.AWTKeyStroke.equals
+java.awt.AWTKeyStroke.getAWTKeyStroke
+java.awt.Rectangle.clone
+java.awt.Rectangle.add
+java.awt.Rectangle.setRect
+java.awt.Rectangle.setBounds
+java.awt.Rectangle.equals
+java.awt.Rectangle.intersects
+java.awt.Rectangle.setSize
+java.awt.Rectangle.grow
+java.awt.Rectangle.outcode
+java.awt.Rectangle.union
+java.awt.Rectangle.constructors
+java.awt.Rectangle.intersection
+java.awt.Rectangle.setLocation
+java.awt.Rectangle.translate
+java.awt.Rectangle.contains
+java.awt.Rectangle.isEmpty
+java.awt.Menu.insert
+java.awt.AlphaComposite.getInstance
+java.awt.AlphaComposite.equals
+java.awt.AlphaComposite.getInstance14
+java.awt.AlphaComposite.getRule
+java.awt.Window.security
+java.awt.Window.focusCycleRootTest
+java.awt.EventClass.constants
+java.awt.Frame.isDisplayable1
+java.awt.Frame.isDisplayable5
+java.awt.Frame.isDisplayable4
+java.awt.Frame.isDisplayable3
+java.awt.Frame.isDisplayable6
+java.awt.Frame.menubar
+java.awt.Frame.isDisplayable2
+java.awt.Frame.isDisplayable7
+java.awt.Container.getListeners
+java.awt.Container.setLayout
+java.awt.Container.getPreferredSize
+java.awt.Container.applyComponentOrientation
+java.awt.Container.getComponentAt
+java.awt.Container.getAlignmentY
+java.awt.Container.getAlignmentX
+java.awt.Container.addImpl
+java.awt.FontClass.serialization
+java.awt.MenuItem.label1
+java.awt.font.TextHitInfo.isLeadingEdge
+java.awt.font.TextHitInfo.getOtherHit
+java.awt.font.TextHitInfo.leading
+java.awt.font.TextHitInfo.getOffsetHit
+java.awt.font.TextHitInfo.equals
+java.awt.font.TextHitInfo.getCharIndex
+java.awt.font.TextHitInfo.afterOffset
+java.awt.font.TextHitInfo.getInsertionIndex
+java.awt.font.TextHitInfo.toString
+java.awt.font.TextHitInfo.beforeOffset
+java.awt.font.TextHitInfo.hashCode
+java.awt.font.TextHitInfo.trailing
+java.awt.font.TransformAttribute.serialization
+java.awt.font.TransformAttribute.getTransform
+java.awt.font.TransformAttribute.isIdentity
+java.awt.font.ShapeGraphicAttribute.ShapeGraphicAttributeTest
+java.awt.font.ImageGraphicAttribute.ImageGraphicAttributeTest
+java.awt.font.TextAttribute.toString13
+java.awt.font.TextAttribute.serialization
+java.awt.font.TextAttribute.toString
+java.awt.font.TextAttribute.constants13
+java.awt.font.TextAttribute.constants
+java.awt.GradientPaint.getPoint2
+java.awt.GradientPaint.equals
+java.awt.GradientPaint.getColor1
+java.awt.GradientPaint.constructors
+java.awt.GradientPaint.getColor2
+java.awt.GradientPaint.isCyclic
+java.awt.GradientPaint.getTransparency
+java.awt.GradientPaint.getPoint1
+java.awt.TextComponent.setSelectionStart
+java.awt.Component.repaint
+java.awt.Component.getListeners
+java.awt.Component.setName
+java.awt.Component.properties14
+java.awt.Component.getMaximumSize
+java.awt.Component.setMinimumSize
+java.awt.Component.getForeground
+java.awt.Component.setPreferredSize
+java.awt.Component.properties
+java.awt.Component.requestFocus
+java.awt.Component.isValid
+java.awt.Component.getFont
+java.awt.Component.setMaximumSize
+java.awt.Component.setComponentOrientation
+java.awt.datatransfer.DataFlavor.writeExternal
+java.awt.datatransfer.StringSelection.selection
+java.awt.TextArea.getPreferredSize
+java.awt.TextArea.getMinimumSize
+java.awt.TextArea.testReplaceText
+java.awt.TextArea.constructors
+java.awt.TextArea.testAppendText
+java.awt.TextArea.testInsertText
+java.awt.TextArea.testInvalidConstructorValues
+java.awt.color.ColorSpace.isCS_sRGB
+java.awt.color.ColorSpace.getInstance
+java.awt.FlowLayout.minimumLayoutSize
+java.awt.geom.Ellipse2D.Double.clone
+java.awt.geom.Ellipse2D.Double.getY
+java.awt.geom.Ellipse2D.Double.setFrame
+java.awt.geom.Ellipse2D.Double.getHeight
+java.awt.geom.Ellipse2D.Double.getX
+java.awt.geom.Ellipse2D.Double.constructors
+java.awt.geom.Ellipse2D.Double.getBounds2D
+java.awt.geom.Ellipse2D.Double.isEmpty
+java.awt.geom.Ellipse2D.Double.getWidth
+java.awt.geom.Ellipse2D.Float.clone
+java.awt.geom.Ellipse2D.Float.getY
+java.awt.geom.Ellipse2D.Float.setFrame
+java.awt.geom.Ellipse2D.Float.getHeight
+java.awt.geom.Ellipse2D.Float.getX
+java.awt.geom.Ellipse2D.Float.constructors
+java.awt.geom.Ellipse2D.Float.getBounds2D
+java.awt.geom.Ellipse2D.Float.isEmpty
+java.awt.geom.Ellipse2D.Float.getWidth
+java.awt.geom.Ellipse2D.intersects
+java.awt.geom.Ellipse2D.contains
+java.awt.geom.GeneralPath.getCurrentPoint
+java.awt.geom.GeneralPath.GeneralPath
+java.awt.geom.GeneralPath.append_PathIterator
+java.awt.geom.GeneralPath.contains
+java.awt.geom.GeneralPath.getPathIterator
+java.awt.geom.RectangularShape.getFrame
+java.awt.geom.RectangularShape.setFrame
+java.awt.geom.RectangularShape.getMinY
+java.awt.geom.RectangularShape.intersects
+java.awt.geom.RectangularShape.getMaxY
+java.awt.geom.RectangularShape.getMaxX
+java.awt.geom.RectangularShape.setFrameFromCenter
+java.awt.geom.RectangularShape.setFrameFromDiagonal
+java.awt.geom.RectangularShape.getMinX
+java.awt.geom.RectangularShape.getCenterX
+java.awt.geom.RectangularShape.getCenterY
+java.awt.geom.RectangularShape.contains
+java.awt.geom.RectangularShape.isEmpty
+java.awt.geom.RectangularShape.getBounds
+java.awt.geom.Line2D.clone
+java.awt.geom.Line2D.getP1
+java.awt.geom.Line2D.linesIntersect
+java.awt.geom.Line2D.ptSegDistSq
+java.awt.geom.Line2D.relativeCCW
+java.awt.geom.Line2D.getP2
+java.awt.geom.Line2D.setLine
+java.awt.geom.Line2D.equals
+java.awt.geom.Line2D.intersects
+java.awt.geom.Line2D.ptLineDistSq
+java.awt.geom.Line2D.ptSegDist
+java.awt.geom.Line2D.intersectsLine
+java.awt.geom.Line2D.contains
+java.awt.geom.Line2D.ptLineDist
+java.awt.geom.Line2D.getPathIterator
+java.awt.geom.Line2D.getBounds
+java.awt.geom.Area.clone
+java.awt.geom.Area.add
+java.awt.geom.Area.isRectangular
+java.awt.geom.Area.createTransformedArea
+java.awt.geom.Area.isPolygonal
+java.awt.geom.Area.intersect
+java.awt.geom.Area.equals
+java.awt.geom.Area.exclusiveOr
+java.awt.geom.Area.intersects
+java.awt.geom.Area.reset
+java.awt.geom.Area.isSingular
+java.awt.geom.Area.constructors
+java.awt.geom.Area.getBounds2D
+java.awt.geom.Area.contains
+java.awt.geom.Area.subtract
+java.awt.geom.Area.isEmpty
+java.awt.geom.Area.transform
+java.awt.geom.Area.getBounds
+java.awt.geom.Rectangle2D.Double.clone
+java.awt.geom.Rectangle2D.Double.createIntersection
+java.awt.geom.Rectangle2D.Double.setRect
+java.awt.geom.Rectangle2D.Double.outcode
+java.awt.geom.Rectangle2D.Double.createUnion
+java.awt.geom.Rectangle2D.Double.isEmpty
+java.awt.geom.Rectangle2D.Float.clone
+java.awt.geom.Rectangle2D.Float.createIntersection
+java.awt.geom.Rectangle2D.Float.setRect
+java.awt.geom.Rectangle2D.Float.outcode
+java.awt.geom.Rectangle2D.Float.createUnion
+java.awt.geom.Rectangle2D.Float.isEmpty
+java.awt.geom.Rectangle2D.add
+java.awt.geom.Rectangle2D.setFrame
+java.awt.geom.Rectangle2D.intersect
+java.awt.geom.Rectangle2D.equals
+java.awt.geom.Rectangle2D.intersects
+java.awt.geom.Rectangle2D.union
+java.awt.geom.Rectangle2D.intersectsLine
+java.awt.geom.Rectangle2D.getBounds2D
+java.awt.geom.Rectangle2D.contains
+java.awt.geom.Rectangle2D.constants
+java.awt.geom.Rectangle2D.getPathIterator
+java.awt.geom.Rectangle2D.getBounds
+java.awt.geom.Arc2D.Double.clone
+java.awt.geom.Arc2D.Float.clone
+java.awt.geom.Arc2D.setFrame
+java.awt.geom.Arc2D.setAngleStart
+java.awt.geom.Arc2D.setArc
+java.awt.geom.Arc2D.setArcByTangent
+java.awt.geom.Arc2D.containsAngle
+java.awt.geom.Arc2D.setArcByCenter
+java.awt.geom.Arc2D.intersects
+java.awt.geom.Arc2D.getEndPoint
+java.awt.geom.Arc2D.setAngleExtent
+java.awt.geom.Arc2D.constructors
+java.awt.geom.Arc2D.getBounds2D
+java.awt.geom.Arc2D.contains
+java.awt.geom.Arc2D.getStartPoint
+java.awt.geom.Arc2D.constants
+java.awt.geom.Arc2D.isEmpty
+java.awt.geom.Arc2D.getPathIterator
+java.awt.geom.Arc2D.setAngles
+java.awt.geom.Arc2D.setArcType
+java.awt.geom.QuadCurve2D.Double.getP1
+java.awt.geom.QuadCurve2D.Double.getP2
+java.awt.geom.QuadCurve2D.Double.getCtrlPt
+java.awt.geom.QuadCurve2D.Double.getBounds2D
+java.awt.geom.QuadCurve2D.Double.Double
+java.awt.geom.QuadCurve2D.Double.setCurve
+java.awt.geom.QuadCurve2D.Float.getP1
+java.awt.geom.QuadCurve2D.Float.Float
+java.awt.geom.QuadCurve2D.Float.getP2
+java.awt.geom.QuadCurve2D.Float.getCtrlPt
+java.awt.geom.QuadCurve2D.Float.getBounds2D
+java.awt.geom.QuadCurve2D.Float.setCurve
+java.awt.geom.QuadCurve2D.clone
+java.awt.geom.QuadCurve2D.getFlatness
+java.awt.geom.QuadCurve2D.subdivide
+java.awt.geom.QuadCurve2D.getFlatnessSq
+java.awt.geom.QuadCurve2D.setCurve
+java.awt.geom.QuadCurve2D.getPathIterator
+java.awt.geom.CubicCurve2D.Double.getP1
+java.awt.geom.CubicCurve2D.Double.getCtrlP2
+java.awt.geom.CubicCurve2D.Double.getP2
+java.awt.geom.CubicCurve2D.Double.getBounds2D
+java.awt.geom.CubicCurve2D.Double.Double
+java.awt.geom.CubicCurve2D.Double.setCurve
+java.awt.geom.CubicCurve2D.Double.getCtrlP1
+java.awt.geom.CubicCurve2D.Float.getP1
+java.awt.geom.CubicCurve2D.Float.getCtrlP2
+java.awt.geom.CubicCurve2D.Float.Float
+java.awt.geom.CubicCurve2D.Float.getP2
+java.awt.geom.CubicCurve2D.Float.getBounds2D
+java.awt.geom.CubicCurve2D.Float.setCurve
+java.awt.geom.CubicCurve2D.Float.getCtrlP1
+java.awt.geom.CubicCurve2D.clone
+java.awt.geom.CubicCurve2D.getFlatness
+java.awt.geom.CubicCurve2D.subdivide
+java.awt.geom.CubicCurve2D.getFlatnessSq
+java.awt.geom.CubicCurve2D.setCurve
+java.awt.geom.CubicCurve2D.getPathIterator
+java.awt.geom.FlatteningPathIterator.FlatteningPathIterator
+java.awt.geom.FlatteningPathIterator.getWindingRule
+java.awt.geom.FlatteningPathIterator.getFlatness
+java.awt.geom.FlatteningPathIterator.getRecursionLimit
+java.awt.geom.FlatteningPathIterator.currentSegment
+java.awt.geom.AffineTransform.clone
+java.awt.geom.AffineTransform.preConcatenate
+java.awt.geom.AffineTransform.getRotateInstance
+java.awt.geom.AffineTransform.getMatrix
+java.awt.geom.AffineTransform.inverseTransform
+java.awt.geom.AffineTransform.getScaleInstance
+java.awt.geom.AffineTransform.createInverse
+java.awt.geom.AffineTransform.deltaTransform
+java.awt.geom.AffineTransform.equals
+java.awt.geom.AffineTransform.setTransform
+java.awt.geom.AffineTransform.constructors
+java.awt.geom.AffineTransform.getTranslateInstance
+java.awt.geom.AffineTransform.constants
+java.awt.geom.AffineTransform.concatenate
+java.awt.geom.AffineTransform.getShearInstance
+java.awt.geom.AffineTransform.transform
+java.awt.geom.AffineTransform.getDeterminant
+java.awt.geom.AffineTransform.isIdentity
+java.awt.geom.RoundRectangle2D.intersects
+java.awt.geom.RoundRectangle2D.contains
+java.awt.testName
+java.nio.Buffer.IntBufferTest
+java.nio.Buffer.ShortBufferTest
+java.nio.Buffer.FloatBufferTest
+java.nio.Buffer.LongBufferTest
+java.nio.Buffer.ByteBufferTest
+java.nio.Buffer.DoubleBufferTest
+java.nio.Buffer.CharBufferTest
+java.nio.LongBuffer.compact
+java.nio.ShortBuffer.compact
+java.nio.IntBuffer.compareTo
+java.nio.IntBuffer.compact
+java.nio.channels.Channels.ChannelsTest
+java.nio.channels.Selector.testEmptySelect
+java.nio.channels.FileChannel.copyIO
+java.nio.channels.FileChannel.multibufferIO
+java.nio.channels.FileChannel.truncate
+java.nio.channels.FileChannel.map
+java.nio.channels.FileChannel.offsetSingleBuffer
+java.nio.channels.FileChannel.singlebufferIO
+java.nio.channels.FileChannel.multidirectbufferIO
+java.nio.channels.FileChannel.offsetSingleDirectBuffer
+java.nio.DoubleBuffer.compareTo
+java.nio.DoubleBuffer.compact
+java.nio.ByteBuffer.direct
+java.nio.ByteBuffer.compact
+java.nio.ByteBuffer.TestAllocateDirect
+java.nio.ByteBuffer.GetPut
+java.nio.ByteBuffer.putDouble
+java.nio.ByteBuffer.Order
+java.nio.ByteBuffer.Allocating
+java.nio.CharBuffer.compact
+java.nio.FloatBuffer.compareTo
+java.nio.FloatBuffer.compact
+java.nio.charset.Charset.UTF8Charset
+java.nio.charset.Charset.utf16
+java.nio.charset.Charset.canEncode
+java.nio.charset.Charset.forName
diff --git a/nss.cfg b/nss.cfg
new file mode 100644
index 0000000..c510dd0
--- /dev/null
+++ b/nss.cfg
@@ -0,0 +1,4 @@
+name = NSS
+nssLibraryDirectory = 
+nssDbMode = noDb
+attributes = compatibility
diff --git a/override-redirect-metacity.patch b/override-redirect-metacity.patch
new file mode 100644
index 0000000..2dd26cb
--- /dev/null
+++ b/override-redirect-metacity.patch
@@ -0,0 +1,11 @@
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java	2010-01-04 16:57:29.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java	2010-01-04 19:47:57.000000000 +0000
+@@ -1142,6 +1142,7 @@
+ 
+     boolean isOverrideRedirect() {
+         return XWM.getWMID() == XWM.OPENLOOK_WM ||
++            XWM.getWMID() == XWM.METACITY_WM ||
+             Window.Type.POPUP.equals(getWindowType());
+     }
+ 
diff --git a/pulse-soundproperties.patch b/pulse-soundproperties.patch
new file mode 100644
index 0000000..271a323
--- /dev/null
+++ b/pulse-soundproperties.patch
@@ -0,0 +1,16 @@
+--- openjdk/jdk/src/share/lib/sound.properties	2008-08-28 04:15:18.000000000 -0400
++++ openjdk/jdk/src/share/lib/sound.properties	2008-10-03 16:59:21.000000000 -0400
+@@ -37,3 +37,13 @@
+ # Specify the default Receiver by provider and name:
+ # javax.sound.midi.Receiver=com.sun.media.sound.MidiProvider#SunMIDI1
+ #
++
++# javax.sound.sampled.Clip=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
++# javax.sound.sampled.Port=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
++# javax.sound.sampled.SourceDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
++# javax.sound.sampled.TargetDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
++
++javax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider
++javax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider
++javax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider
++javax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider
diff --git a/rhino.patch b/rhino.patch
new file mode 100644
index 0000000..9ae6846
--- /dev/null
+++ b/rhino.patch
@@ -0,0 +1,148 @@
+diff -Nru openjdk.orig/jdk/make/com/sun/Makefile openjdk/jdk/make/com/sun/Makefile
+--- openjdk.orig/jdk/make/com/sun/Makefile	2011-04-20 04:40:20.000000000 +0100
++++ openjdk/jdk/make/com/sun/Makefile	2011-04-21 22:36:31.443422475 +0100
+@@ -31,13 +31,6 @@
+ PRODUCT = sun
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+-ifndef OPENJDK
+-  ORG_EXISTS := $(call DirExists,$(CLOSED_SRC)/share/classes/sun/org,,)
+-  ifneq ("$(ORG_EXISTS)", "") 
+-    SCRIPT_SUBDIR = script
+-  endif
+-endif
+-
+ # jarsigner is part of JRE
+ SUBDIRS = java security net/ssl jarsigner
+ 
+diff -Nru openjdk.orig/jdk/make/com/sun/script/Makefile openjdk/jdk/make/com/sun/script/Makefile
+--- openjdk.orig/jdk/make/com/sun/script/Makefile	2011-04-20 04:40:20.000000000 +0100
++++ openjdk/jdk/make/com/sun/script/Makefile	2011-04-21 22:36:31.443422475 +0100
+@@ -31,6 +31,8 @@
+ 
+ AUTO_FILES_JAVA_DIRS = com/sun/script
+ 
++OTHER_JAVACFLAGS = -classpath $(RHINO_JAR)
++
+ #
+ # Files that need to be copied
+ #
+diff -Nru openjdk.orig/jdk/make/common/Release.gmk openjdk/jdk/make/common/Release.gmk
+--- openjdk.orig/jdk/make/common/Release.gmk	2011-04-21 20:56:37.000000000 +0100
++++ openjdk/jdk/make/common/Release.gmk	2011-04-21 22:36:31.443422475 +0100
+@@ -735,6 +735,7 @@
+ 	$(CP) $(RT_JAR) $(JRE_IMAGE_DIR)/lib/rt.jar
+ 	$(CP) $(RESOURCES_JAR) $(JRE_IMAGE_DIR)/lib/resources.jar
+ 	$(CP) $(JSSE_JAR) $(JRE_IMAGE_DIR)/lib/jsse.jar
++	$(CP) $(RHINO_JAR) $(JRE_IMAGE_DIR)/lib/rhino.jar
+ 	@# Generate meta-index to make boot and extension class loaders lazier
+ 	$(CD) $(JRE_IMAGE_DIR)/lib && \
+ 	    $(BOOT_JAVA_CMD) -jar $(BUILDMETAINDEX_JARFILE) \
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/ExternalScriptable.java openjdk/jdk/src/share/classes/com/sun/script/javascript/ExternalScriptable.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/ExternalScriptable.java	2010-07-29 21:55:35.000000000 +0100
++++ openjdk/jdk/src/share/classes/com/sun/script/javascript/ExternalScriptable.java	2011-04-21 22:36:31.443422475 +0100
+@@ -24,7 +24,7 @@
+  */
+ 
+ package com.sun.script.javascript;
+-import sun.org.mozilla.javascript.internal.*;
++import sun.org.mozilla.javascript.*;
+ import javax.script.*;
+ import java.util.*;
+ 
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/JavaAdapter.java openjdk/jdk/src/share/classes/com/sun/script/javascript/JavaAdapter.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/JavaAdapter.java	2010-07-29 21:55:35.000000000 +0100
++++ openjdk/jdk/src/share/classes/com/sun/script/javascript/JavaAdapter.java	2011-04-21 22:36:31.455422660 +0100
+@@ -26,7 +26,7 @@
+ package com.sun.script.javascript;
+ 
+ import javax.script.Invocable;
+-import sun.org.mozilla.javascript.internal.*;
++import sun.org.mozilla.javascript.*;
+ 
+ /**
+  * This class implements Rhino-like JavaAdapter to help implement a Java
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/JSAdapter.java openjdk/jdk/src/share/classes/com/sun/script/javascript/JSAdapter.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/JSAdapter.java	2010-07-29 21:55:35.000000000 +0100
++++ openjdk/jdk/src/share/classes/com/sun/script/javascript/JSAdapter.java	2011-04-21 22:36:31.455422660 +0100
+@@ -25,7 +25,7 @@
+ 
+ package com.sun.script.javascript;
+ 
+-import sun.org.mozilla.javascript.internal.*;
++import sun.org.mozilla.javascript.*;
+ import java.util.*;
+ 
+ /**
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/RhinoClassShutter.java openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoClassShutter.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/RhinoClassShutter.java	2010-07-29 21:55:35.000000000 +0100
++++ openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoClassShutter.java	2011-04-21 22:36:31.455422660 +0100
+@@ -26,7 +26,7 @@
+ package com.sun.script.javascript;
+ 
+ import java.util.*;
+-import sun.org.mozilla.javascript.internal.*;
++import sun.org.mozilla.javascript.*;
+ 
+ /**
+  * This class prevents script access to certain sensitive classes.
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/RhinoCompiledScript.java openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoCompiledScript.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/RhinoCompiledScript.java	2010-07-29 21:55:35.000000000 +0100
++++ openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoCompiledScript.java	2011-04-21 22:36:31.455422660 +0100
+@@ -25,7 +25,7 @@
+ 
+ package com.sun.script.javascript;
+ import javax.script.*;
+-import sun.org.mozilla.javascript.internal.*;
++import sun.org.mozilla.javascript.*;
+ 
+ /**
+  * Represents compiled JavaScript code.
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngineFactory.java openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngineFactory.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngineFactory.java	2011-04-18 18:04:37.000000000 +0100
++++ openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngineFactory.java	2011-04-21 22:36:31.455422660 +0100
+@@ -26,7 +26,7 @@
+ package com.sun.script.javascript;
+ import javax.script.*;
+ import java.util.*;
+-import sun.org.mozilla.javascript.internal.*;
++import sun.org.mozilla.javascript.*;
+ import com.sun.script.util.*;
+ 
+ /**
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java	2011-04-20 04:40:21.000000000 +0100
++++ openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java	2011-04-21 22:36:31.455422660 +0100
+@@ -26,7 +26,7 @@
+ package com.sun.script.javascript;
+ import com.sun.script.util.*;
+ import javax.script.*;
+-import sun.org.mozilla.javascript.internal.*;
++import sun.org.mozilla.javascript.*;
+ import java.lang.reflect.Method;
+ import java.io.*;
+ import java.util.*;
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/RhinoTopLevel.java openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoTopLevel.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/RhinoTopLevel.java	2011-04-11 12:34:30.000000000 +0100
++++ openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoTopLevel.java	2011-04-21 22:36:31.455422660 +0100
+@@ -25,7 +25,7 @@
+ 
+ package com.sun.script.javascript;
+ 
+-import sun.org.mozilla.javascript.internal.*;
++import sun.org.mozilla.javascript.*;
+ import javax.script.*;
+ 
+ /**
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/RhinoWrapFactory.java openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoWrapFactory.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/script/javascript/RhinoWrapFactory.java	2010-07-29 21:55:35.000000000 +0100
++++ openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoWrapFactory.java	2011-04-21 22:36:31.455422660 +0100
+@@ -27,7 +27,7 @@
+ 
+ import java.lang.reflect.*;
+ import static sun.security.util.SecurityConstants.*;
+-import sun.org.mozilla.javascript.internal.*;
++import sun.org.mozilla.javascript.*;
+ 
+ /**
+  * This wrap factory is used for security reasons. JSR 223 script
diff --git a/sources b/sources
index e69de29..efd5156 100644
--- a/sources
+++ b/sources
@@ -0,0 +1,11 @@
+ea344cc5b53b73f375558ba41760ff64  class-rewriter.tar.gz
+7df0a19525f26643d4cea3228fbbc6cc  desktop-files.tar.gz
+868ff2d4457d1a2dccfa465fb8220e1c  generated-files.tar.gz
+f740e93f721145aa0d1adfeaa0f307ee  icedtea-jdk7.tar.gz
+c12f124672a97c7491530fed2c0facdc  java-access-bridge-1.23.0.tar.bz2
+32394c780c8fb5e29775f623525993c0  jaxp145_01.zip
+18d15dfd71117daadb332af003d08212  jdk7-jaf-2010_08_19.zip
+2f5b829ade70f67fe272d0b322e3e702  jdk7-jaxws2_2_4-b03-2011_05_27.zip
+a9cdc5f050eb6e97c1b15ddd39978710  mauve-2008-10-22.tar.gz
+3d2e0ea03940efdd66e260cba1f48359  pulseaudio.tar.gz
+2f5167cbfadee2f2b3c10c28989b2209  systemtap-tapset.tar.gz
diff --git a/systemtap-alloc-size-workaround.patch b/systemtap-alloc-size-workaround.patch
new file mode 100644
index 0000000..b4bc9bc
--- /dev/null
+++ b/systemtap-alloc-size-workaround.patch
@@ -0,0 +1,12 @@
+diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/sharedRuntime.cpp openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/sharedRuntime.cpp	2011-04-11 12:33:06.000000000 +0100
++++ openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp	2011-04-11 16:40:57.825703429 +0100
+@@ -890,7 +890,7 @@
+   int size = o->size();
+   Symbol* name = klass->name();
+   HS_DTRACE_PROBE4(hotspot, object__alloc, get_java_tid(thread),
+-                   name->bytes(), name->utf8_length(), size * HeapWordSize);
++                   name->bytes(), name->utf8_length(), size);
+   return 0;
+ }
+ 
diff --git a/systemtap-gcc-4.5.patch b/systemtap-gcc-4.5.patch
new file mode 100644
index 0000000..dc8edfd
--- /dev/null
+++ b/systemtap-gcc-4.5.patch
@@ -0,0 +1,11 @@
+--- openjdk.orig/hotspot/src/share/vm/prims/jni.cpp	2010-04-28 08:51:29.000000000 +0100
++++ openjdk/hotspot/src/share/vm/prims/jni.cpp	2010-04-28 09:29:22.000000000 +0100
+@@ -2723,7 +2723,7 @@
+ 
+   if (!directBufferSupportInitializeEnded) {
+     if (!initializeDirectBufferSupport(env, thread)) {
+-      DTRACE_PROBE1(hotspot_jni, NewDirectByteBuffer__return, NULL);
++      DTRACE_PROBE1(hotspot_jni, NewDirectByteBuffer__return, (uintptr_t) NULL);
+       return NULL;
+     }
+   }
diff --git a/systemtap.patch b/systemtap.patch
new file mode 100644
index 0000000..d5036bd
--- /dev/null
+++ b/systemtap.patch
@@ -0,0 +1,162 @@
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/dtrace.make openjdk/hotspot/make/linux/makefiles/dtrace.make
+--- openjdk.orig/hotspot/make/linux/makefiles/dtrace.make	2010-07-29 21:54:46.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/dtrace.make	2011-03-16 20:52:47.269527251 +0000
+@@ -25,3 +25,7 @@
+ # Linux does not build jvm_db
+ LIBJVM_DB =
+ 
++# But it does have a Systemtap dtrace compatible sys/sdt.h
++CFLAGS += -DDTRACE_ENABLED
++
++# It doesn't support HAVE_DTRACE_H though.
+diff -Nru openjdk.orig/hotspot/src/share/vm/prims/jni.cpp openjdk/hotspot/src/share/vm/prims/jni.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/jni.cpp	2011-03-14 22:09:03.000000000 +0000
++++ openjdk/hotspot/src/share/vm/prims/jni.cpp	2011-03-16 20:52:47.277527381 +0000
+@@ -1817,10 +1817,7 @@
+ JNI_QUICK_ENTRY(void, jni_Set##Result##Field(JNIEnv *env, jobject obj, jfieldID fieldID, Argument value)) \
+   JNIWrapper("Set" XSTR(Result) "Field"); \
+ \
+-  HS_DTRACE_PROBE_CDECL_N(hotspot_jni, Set##Result##Field__entry, \
+-    ( JNIEnv*, jobject, jfieldID FP_SELECT_##Result(COMMA Argument,/*empty*/) ) ); \
+-  HS_DTRACE_PROBE_N(hotspot_jni, Set##Result##Field__entry, \
+-    ( env, obj, fieldID FP_SELECT_##Result(COMMA value,/*empty*/) ) ); \
++  FP_SELECT_##Result(DTRACE_PROBE4(hotspot_jni, Set##Result##Field__entry, env, obj, fieldID, value),DTRACE_PROBE3(hotspot_jni, Set##Result##Field__entry, env, obj, fieldID)); \
+ \
+   oop o = JNIHandles::resolve_non_null(obj); \
+   klassOop k = o->klass(); \
+@@ -1994,10 +1991,7 @@
+ \
+ JNI_ENTRY(void, jni_SetStatic##Result##Field(JNIEnv *env, jclass clazz, jfieldID fieldID, Argument value)) \
+   JNIWrapper("SetStatic" XSTR(Result) "Field"); \
+-  HS_DTRACE_PROBE_CDECL_N(hotspot_jni, SetStatic##Result##Field__entry,\
+-    ( JNIEnv*, jclass, jfieldID FP_SELECT_##Result(COMMA Argument,/*empty*/) ) ); \
+-  HS_DTRACE_PROBE_N(hotspot_jni, SetStatic##Result##Field__entry, \
+-    ( env, clazz, fieldID FP_SELECT_##Result(COMMA value,/*empty*/) ) ); \
++  FP_SELECT_##Result(DTRACE_PROBE4(hotspot_jni, SetStatic##Result##Field__entry, env, clazz, fieldID, value),DTRACE_PROBE3(hotspot_jni, SetStatic##Result##Field__entry, env, clazz, fieldID)); \
+ \
+   JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID); \
+   assert(id->is_static_field_id(), "invalid static field id"); \
+diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp	2011-03-16 20:51:33.000000000 +0000
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2011-03-16 20:52:47.277527381 +0000
+@@ -2634,16 +2634,16 @@
+       FLAG_SET_CMDLINE(bool, DisplayVMOutputToStderr, false);
+       FLAG_SET_CMDLINE(bool, DisplayVMOutputToStdout, true);
+     } else if (match_option(option, "-XX:+ExtendedDTraceProbes", &tail)) {
+-#ifdef SOLARIS
++#ifdef DTRACE_ENABLED
+       FLAG_SET_CMDLINE(bool, ExtendedDTraceProbes, true);
+       FLAG_SET_CMDLINE(bool, DTraceMethodProbes, true);
+       FLAG_SET_CMDLINE(bool, DTraceAllocProbes, true);
+       FLAG_SET_CMDLINE(bool, DTraceMonitorProbes, true);
+-#else // ndef SOLARIS
++#else // ndef DTRACE_ENABLED
+       jio_fprintf(defaultStream::error_stream(),
+-                  "ExtendedDTraceProbes flag is only applicable on Solaris\n");
++                  "ExtendedDTraceProbes flag is only applicable on dtrace enabled builds\n");
+       return JNI_EINVAL;
+-#endif // ndef SOLARIS
++#endif // ndef DTRACE_ENABLED
+ #ifdef ASSERT
+     } else if (match_option(option, "-XX:+FullGCALot", &tail)) {
+       FLAG_SET_CMDLINE(bool, FullGCALot, true);
+diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/dtrace.hpp openjdk/hotspot/src/share/vm/utilities/dtrace.hpp
+--- openjdk.orig/hotspot/src/share/vm/utilities/dtrace.hpp	2011-03-14 22:09:03.000000000 +0000
++++ openjdk/hotspot/src/share/vm/utilities/dtrace.hpp	2011-03-16 20:53:58.314683506 +0000
+@@ -1,5 +1,6 @@
+ /*
+  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
++ * Copyright 2009 Red Hat, Inc.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -25,7 +26,7 @@
+ #ifndef SHARE_VM_UTILITIES_DTRACE_HPP
+ #define SHARE_VM_UTILITIES_DTRACE_HPP
+ 
+-#if defined(SOLARIS) && defined(DTRACE_ENABLED)
++#if defined(DTRACE_ENABLED)
+ 
+ #include <sys/sdt.h>
+ 
+@@ -36,7 +37,7 @@
+ #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() \
+   do { volatile size_t dtrace_workaround_tail_call_bug = 1; } while (0)
+ 
+-#else // ndef SOLARIS || ndef DTRACE_ENABLED
++#else // ndef DTRACE_ENABLED
+ 
+ #define DTRACE_ONLY(x)
+ #define NOT_DTRACE(x) x
+@@ -47,11 +48,18 @@
+ #define DTRACE_PROBE3(a,b,c,d,e) {;}
+ #define DTRACE_PROBE4(a,b,c,d,e,f) {;}
+ #define DTRACE_PROBE5(a,b,c,d,e,f,g) {;}
++#define DTRACE_PROBE6(a,b,c,d,e,f,g,h) {;}
++#define DTRACE_PROBE7(a,b,c,d,e,f,g,h,i) {;}
++#define DTRACE_PROBE8(a,b,c,d,e,f,g,h,i,j) {;}
++#define DTRACE_PROBE9(a,b,c,d,e,f,g,h,i,j,k) {;}
++#define DTRACE_PROBE10(a,b,c,d,e,f,g,h,i,j,k,l) {;}
+ 
+ #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG()
+ 
+ #endif
+ 
++#if defined(SOLARIS)
++// Solaris dtrace needs actual extern function decls.
+ #define HS_DTRACE_PROBE_FN(provider,name)\
+   __dtrace_##provider##___##name
+ 
+@@ -59,6 +67,11 @@
+   DTRACE_ONLY(extern "C" void HS_DTRACE_PROBE_FN(provider,name) args)
+ #define HS_DTRACE_PROBE_CDECL_N(provider,name,args) \
+   DTRACE_ONLY(extern void HS_DTRACE_PROBE_FN(provider,name) args)
++#else
++// Systemtap dtrace compatible probes on GNU/Linux don't.
++#define HS_DTRACE_PROBE_DECL_N(provider,name,args)
++#define HS_DTRACE_PROBE_CDECL_N(provider,name,args)
++#endif 
+ 
+ /* Dtrace probe declarations */
+ #define HS_DTRACE_PROBE_DECL(provider,name) \
+@@ -97,6 +110,8 @@
+     uintptr_t,uintptr_t,uintptr_t))
+ 
+ /* Dtrace probe definitions */
++#if defined(SOLARIS)
++// Solaris dtrace uses actual function calls.
+ #define HS_DTRACE_PROBE_N(provider,name, args) \
+   DTRACE_ONLY(HS_DTRACE_PROBE_FN(provider,name) args)
+ 
+@@ -132,5 +147,31 @@
+   HS_DTRACE_PROBE_N(provider,name,((uintptr_t)a0,(uintptr_t)a1,(uintptr_t)a2,\
+     (uintptr_t)a3,(uintptr_t)a4,(uintptr_t)a5,(uintptr_t)a6,(uintptr_t)a7,\
+     (uintptr_t)a8,(uintptr_t)a9))
++#else
++// Systemtap dtrace compatible probes on GNU/Linux use direct macros.
++#define HS_DTRACE_PROBE(provider,name) HS_DTRACE_PROBE0(provider,name)
++#define HS_DTRACE_PROBE0(provider,name)\
++  DTRACE_PROBE(provider,name)
++#define HS_DTRACE_PROBE1(provider,name,a0)\
++  DTRACE_PROBE1(provider,name,a0)
++#define HS_DTRACE_PROBE2(provider,name,a0,a1)\
++  DTRACE_PROBE2(provider,name,a0,a1)
++#define HS_DTRACE_PROBE3(provider,name,a0,a1,a2)\
++  DTRACE_PROBE3(provider,name,a0,a1,a2)
++#define HS_DTRACE_PROBE4(provider,name,a0,a1,a2,a3)\
++  DTRACE_PROBE4(provider,name,a0,a1,a2,a3)
++#define HS_DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)\
++  DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)
++#define HS_DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)\
++  DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)
++#define HS_DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)\
++  DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)
++#define HS_DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)\
++  DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)
++#define HS_DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
++  DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
++#define HS_DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
++  DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
++#endif
+ 
+ #endif // SHARE_VM_UTILITIES_DTRACE_HPP
diff --git a/text-relocations.patch b/text-relocations.patch
new file mode 100644
index 0000000..2d3c0fe
--- /dev/null
+++ b/text-relocations.patch
@@ -0,0 +1,63 @@
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make	2011-04-11 12:33:06.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/gcc.make	2011-04-11 13:31:35.116973986 +0100
+@@ -58,7 +58,11 @@
+ # Compiler flags
+ 
+ # position-independent code
++ifneq ($(filter parisc ppc ppc64 s390 s390x sparc sparc64 sparcv9,$(ZERO_LIBARCH)),)
+ PICFLAG = -fPIC
++else
++PICFLAG = -fpic
++endif
+ 
+ VM_PICFLAG/LIBJVM = $(PICFLAG)
+ VM_PICFLAG/AOUT   =
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/rules.make openjdk/hotspot/make/linux/makefiles/rules.make
+--- openjdk.orig/hotspot/make/linux/makefiles/rules.make	2011-04-11 12:33:06.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/rules.make	2011-04-11 13:31:35.128974182 +0100
+@@ -148,20 +148,10 @@
+ 
+ include $(GAMMADIR)/make/altsrc.make
+ 
+-# The non-PIC object files are only generated for 32 bit platforms.
+-ifdef LP64
+ %.o: %.cpp
+ 	@echo Compiling $<
+ 	$(QUIETLY) $(REMOVE_TARGET)
+ 	$(QUIETLY) $(COMPILE.CC) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
+-else
+-%.o: %.cpp
+-	@echo Compiling $<
+-	$(QUIETLY) $(REMOVE_TARGET)
+-	$(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
+-	   $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE), \
+-	   $(COMPILE.CC) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE))
+-endif
+ 
+ %.o: %.s
+ 	@echo Assembling $<
+diff -Nru openjdk.orig/hotspot/make/solaris/makefiles/rules.make openjdk/hotspot/make/solaris/makefiles/rules.make
+--- openjdk.orig/hotspot/make/solaris/makefiles/rules.make	2011-04-11 12:33:06.000000000 +0100
++++ openjdk/hotspot/make/solaris/makefiles/rules.make	2011-04-11 13:31:35.128974182 +0100
+@@ -148,20 +148,10 @@
+ 
+ include $(GAMMADIR)/make/altsrc.make
+ 
+-# Sun compiler for 64 bit Solaris does not support building non-PIC object files.
+-ifdef LP64
+ %.o: %.cpp
+ 	@echo Compiling $<
+ 	$(QUIETLY) $(REMOVE_TARGET)
+ 	$(QUIETLY) $(COMPILE.CC) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
+-else
+-%.o: %.cpp
+-	@echo Compiling $<
+-	$(QUIETLY) $(REMOVE_TARGET)
+-	$(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
+-	   $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE), \
+-	   $(COMPILE.CC) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE))
+-endif
+ 
+ %.o: %.s
+ 	@echo Assembling $<
diff --git a/update-bootclasspath.patch b/update-bootclasspath.patch
new file mode 100644
index 0000000..11d18c4
--- /dev/null
+++ b/update-bootclasspath.patch
@@ -0,0 +1,13 @@
+diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/os.cpp openjdk/hotspot/src/share/vm/runtime/os.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/os.cpp	2011-04-20 04:39:42.000000000 +0100
++++ openjdk/hotspot/src/share/vm/runtime/os.cpp	2011-04-21 20:50:09.475567200 +0100
+@@ -1079,6 +1079,9 @@
+         "%/lib/jsse.jar:"
+         "%/lib/jce.jar:"
+         "%/lib/charsets.jar:"
++        "%/lib/netx.jar:"
++        "%/lib/plugin.jar:"
++        "%/lib/rhino.jar:"
+         "%/classes";
+     char* sysclasspath = format_boot_path(classpath_format, home, home_len, fileSep, pathSep);
+     if (sysclasspath == NULL) return false;
diff --git a/use-idx_t.patch b/use-idx_t.patch
new file mode 100644
index 0000000..ad2a9ca
--- /dev/null
+++ b/use-idx_t.patch
@@ -0,0 +1,45 @@
+diff -Nru openjdk.orig/hotspot/src/share/vm/compiler/methodLiveness.cpp openjdk/hotspot/src/share/vm/compiler/methodLiveness.cpp
+--- openjdk.orig/hotspot/src/share/vm/compiler/methodLiveness.cpp	2008-11-06 08:40:55.000000000 +0000
++++ openjdk/hotspot/src/share/vm/compiler/methodLiveness.cpp	2008-11-10 00:55:09.000000000 +0000
+@@ -567,15 +567,15 @@
+ 
+ 
+ MethodLiveness::BasicBlock::BasicBlock(MethodLiveness *analyzer, int start, int limit) :
+-         _gen((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()),
++         _gen((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()),
+                          analyzer->bit_map_size_bits()),
+-         _kill((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()),
++         _kill((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()),
+                          analyzer->bit_map_size_bits()),
+-         _entry((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()),
++         _entry((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()),
+                          analyzer->bit_map_size_bits()),
+-         _normal_exit((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()),
++         _normal_exit((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()),
+                          analyzer->bit_map_size_bits()),
+-         _exception_exit((uintptr_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()),
++         _exception_exit((size_t*)analyzer->arena()->Amalloc(BytesPerWord * analyzer->bit_map_size_words()),
+                          analyzer->bit_map_size_bits()),
+          _last_bci(-1) {
+   _analyzer = analyzer;
+@@ -992,7 +992,7 @@
+ }
+ 
+ MethodLivenessResult MethodLiveness::BasicBlock::get_liveness_at(ciMethod* method, int bci) {
+-  MethodLivenessResult answer(NEW_RESOURCE_ARRAY(uintptr_t, _analyzer->bit_map_size_words()),
++  MethodLivenessResult answer(NEW_RESOURCE_ARRAY(size_t, _analyzer->bit_map_size_words()),
+                 _analyzer->bit_map_size_bits());
+   answer.set_is_valid();
+ 
+diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/bitMap.hpp openjdk/hotspot/src/share/vm/utilities/bitMap.hpp
+--- openjdk.orig/hotspot/src/share/vm/utilities/bitMap.hpp	2008-11-06 08:40:58.000000000 +0000
++++ openjdk/hotspot/src/share/vm/utilities/bitMap.hpp	2008-11-10 00:57:20.000000000 +0000
+@@ -73,7 +73,7 @@
+ 
+   // Set a word to a specified value or to all ones; clear a word.
+   void set_word  (idx_t word, bm_word_t val) { _map[word] = val; }
+-  void set_word  (idx_t word)            { set_word(word, ~(uintptr_t)0); }
++  void set_word  (idx_t word)            { set_word(word, ~(idx_t)0); }
+   void clear_word(idx_t word)            { _map[word] = 0; }
+ 
+   // Utilities for ranges of bits.  Ranges are half-open [beg, end).


More information about the scm-commits mailing list