IcedTea7 forest & OpenJDK7 u2

Dr Andrew John Hughes ahughes at redhat.com
Mon Jan 16 15:06:26 PST 2012


On 00:23 Mon 16 Jan     , Damien Raude-Morvan wrote:
> Hi Andrew,
> 
> Le mardi 10 janvier 2012 14:34:57, Dr Andrew John Hughes a écrit :
> > I've done a merge of the OpenJDK7 u2 changes into the IcedTea7 forest
> > and made them available at:
> > 
> > http://icedtea.classpath.org/people/andrew/icedtea7-forest
> > 
> > Please test this out over the next few days.  If there are no issues
> > by the end of the week, I'll push the changes to the main tree.
> > 
> > We should follow this with a 2.1 release shortly after.
> 
> I've tried to build your icedtea7-forest with actual icedtea7 tip and managed 
> to get hotspot building with small refresh / update to boot patches (see ecj-* 
> attachements). I've also refreshed rhino.patch as one hunk failed. Maybe you 
> can import my changes into icedtea7 tip ?
> 

Thanks.  I hadn't looked at IcedTea support yet.  Hopefully your patches will save
me time in having to do this.

> Unfortunately, ZeroVM (as alternative vm) seems to fail to build. I've to re-
> run a new build to get actual error.
> 

Ok.  My main concern at this point is the 'normal' HotSpot build.  There are already
known issues with Zero/Shark and the older HotSpot in IcedTea6, never mind 7.

> Regards,
> -- 
> Damien

> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java
> @@ -103,9 +103,9 @@
>          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 @@
>          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 @@
>  
>          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 @@
>              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 @@
>      */
>      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 @@
>              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 @@
>      }
>      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++) != '[')
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
> @@ -257,7 +257,7 @@
>          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 @@
>  
>      // 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 @@
>      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 @@
>      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 @@
>  
>      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 @@
>      // 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;
>      }
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java
> @@ -466,7 +466,7 @@
>  
>      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(),
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java
> @@ -402,7 +402,7 @@
>      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);
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java
> @@ -743,9 +743,9 @@
>          // 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 @@
>                  }
>              }
>          }
> -        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 @@
>          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]);
>              }
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java
> @@ -915,7 +915,7 @@
>      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 @@
>              }
>              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 @@
>      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
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java
> @@ -59,7 +59,7 @@
>                  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;
> @@ -82,7 +82,7 @@
>          }
>  
>          // 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;
> @@ -96,7 +96,7 @@
>          }
>  
>          // 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);
> @@ -530,7 +530,7 @@
>          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}+");
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java
> @@ -45,7 +45,7 @@
>      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);
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Fixups.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Fixups.java
> @@ -126,11 +126,11 @@
>      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 @@
>              // 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;
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java
> @@ -112,7 +112,7 @@
>      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 @@
>          }
>      }
>  
> -    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 @@
>              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 @@
>              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 @@
>          }
>  
>          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 @@
>           *  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 @@
>              }
>              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 @@
>              // 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 @@
>                  // 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 @@
>                  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 @@
>                  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 @@
>      }
>  
>      // 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 @@
>          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 @@
>          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 @@
>      }
>  
>      // 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 @@
>          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!
> @@ -1290,7 +1290,7 @@
>  
>      // 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))
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
> @@ -686,7 +686,7 @@
>          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 @@
>          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 @@
>  
>      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 @@
>  
>      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 @@
>          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 @@
>          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 @@
>  
>      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 @@
>          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 @@
>                  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 @@
>      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 @@
>          // 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 @@
>  
>              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;
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java
> @@ -116,7 +116,7 @@
>      int[][]     attrCounts;       // count attr. occurences
>  
>      void setup() {
> -        requiredEntries = new HashSet<>();
> +        requiredEntries = new HashSet<Entry>();
>          setArchiveOptions();
>          trimClassAttributes();
>          collectAttributeLayouts();
> @@ -176,7 +176,7 @@
>              }
>          }
>          // 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 @@
>  
>      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 @@
>          }
>          // 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 @@
>      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 @@
>      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;
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java
> @@ -181,8 +181,8 @@
>          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 @@
>                  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 @@
>  
>          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);
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java
> @@ -309,7 +309,7 @@
>          // 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
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java
> @@ -47,8 +47,8 @@
>   */
>  
>  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 @@
>      // 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;
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java
> @@ -58,12 +58,12 @@
>      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();
>      }
>  
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
> @@ -232,7 +232,7 @@
>              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));
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java
> @@ -132,7 +132,7 @@
>      // 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() {
> --- openjdk-boot/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java
> @@ -1284,7 +1284,7 @@
>       */
>      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 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;
> --- openjdk-boot/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java
> @@ -222,7 +222,7 @@
>             // 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);
> --- openjdk-boot/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java
> @@ -1180,7 +1180,7 @@
>              // Done
>              return certs;
>  
> -        ArrayList<Certificate> userCertList = new ArrayList<>();
> +        ArrayList<Certificate> userCertList = new ArrayList<Certificate>();
>          i = 0;
>          while (i < certs.length) {
>              userCertList.add(certs[i]);
> --- openjdk-boot/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java
> @@ -99,10 +99,10 @@
>          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();
>  
> --- openjdk-boot/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java
> @@ -152,7 +152,7 @@
>  
>          // new configuration
>          HashMap<String, LinkedList<AppConfigurationEntry>> newConfig =
> -                new HashMap<>();
> +            new HashMap<String, LinkedList<AppConfigurationEntry>>();
>  
>          if (url != null) {
>  
> @@ -392,7 +392,7 @@
>          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 @@
>              }
>  
>              // get the args
> -            HashMap<String, String> options = new HashMap<>();
> +            HashMap<String, String> options = new HashMap<String, String>();
>              String key;
>              String value;
>              while (peek(";") == false) {
> --- openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java
> @@ -184,7 +184,7 @@
>      private UnixNumericUserPrincipal UIDPrincipal;
>      private UnixNumericGroupPrincipal GIDPrincipal;
>      private LinkedList<UnixNumericGroupPrincipal> supplementaryGroups =
> -                                new LinkedList<>();
> +                                new LinkedList<UnixNumericGroupPrincipal>();
>  
>      // initial state
>      private Subject subject;
> --- openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java
> @@ -658,7 +658,7 @@
>                  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]);
>                  }
> --- openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java
> @@ -76,7 +76,7 @@
>      private SolarisNumericUserPrincipal UIDPrincipal;
>      private SolarisNumericGroupPrincipal GIDPrincipal;
>      private LinkedList<SolarisNumericGroupPrincipal> supplementaryGroups =
> -                new LinkedList<>();
> +                new LinkedList<SolarisNumericGroupPrincipal>();
>  
>      /**
>       * Initialize this <code>LoginModule</code>.
> --- openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java
> @@ -70,7 +70,7 @@
>      private UnixNumericUserPrincipal UIDPrincipal;
>      private UnixNumericGroupPrincipal GIDPrincipal;
>      private LinkedList<UnixNumericGroupPrincipal> supplementaryGroups =
> -                new LinkedList<>();
> +                new LinkedList<UnixNumericGroupPrincipal>();
>  
>      /**
>       * Initialize this <code>LoginModule</code>.
> --- openjdk-boot/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java
> @@ -59,7 +59,7 @@
>  
>      // Maps ThreadReference to ThreadTrace instances
>      private Map<ThreadReference, ThreadTrace> traceMap =
> -       new HashMap<>();
> +       new HashMap();
>  
>      EventThread(VirtualMachine vm, String[] excludes, PrintWriter writer) {
>          super("event-handler");
> --- openjdk-boot/jdk/src/share/classes/java/beans/Introspector.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/beans/Introspector.java
> @@ -95,7 +95,7 @@
>      public final static int IGNORE_ALL_BEANINFO        = 3;
>  
>      // Static Caches to speed up introspection.
> -    private static final WeakCache<Class<?>, Method[]> declaredMethodCache = new WeakCache<>();
> +    private static final WeakCache<Class<?>, Method[]> declaredMethodCache = new WeakCache();
>  
>      private Class beanClass;
>      private BeanInfo explicitBeanInfo;
> --- openjdk-boot/jdk/src/share/classes/java/beans/ThreadGroupContext.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/beans/ThreadGroupContext.java
> @@ -42,7 +42,7 @@
>   */
>  final class ThreadGroupContext {
>  
> -    private static final Map<ThreadGroup, ThreadGroupContext> contexts = new WeakHashMap<>();
> +    private static final Map<ThreadGroup, ThreadGroupContext> contexts = new WeakHashMap();
>  
>      /**
>       * Returns the appropriate {@code AppContext} for the caller,
> @@ -99,7 +99,7 @@
>  
>      BeanInfo putBeanInfo(Class<?> type, BeanInfo info) {
>          if (this.beanInfoCache == null) {
> -            this.beanInfoCache = new WeakHashMap<>();
> +            this.beanInfoCache = new WeakHashMap();
>          }
>          return this.beanInfoCache.put(type, info);
>      }
> --- openjdk-boot/jdk/src/share/classes/java/io/DeleteOnExitHook.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/io/DeleteOnExitHook.java
> @@ -34,7 +34,7 @@
>   */
>  
>  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 @@
>              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.
> --- openjdk-boot/jdk/src/share/classes/java/io/File.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/io/File.java
> @@ -1082,7 +1082,7 @@
>          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 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 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))
> --- openjdk-boot/jdk/src/share/classes/java/io/FileInputStream.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/io/FileInputStream.java
> @@ -57,7 +57,7 @@
>      private volatile boolean closed = false;
>  
>      private static final ThreadLocal<Boolean> runningFinalize =
> -        new ThreadLocal<>();
> +        new ThreadLocal<Boolean>();
>  
>      private static boolean isRunningFinalize() {
>          Boolean val;
> --- openjdk-boot/jdk/src/share/classes/java/io/FileOutputStream.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/io/FileOutputStream.java
> @@ -70,7 +70,7 @@
>      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;
> --- openjdk-boot/jdk/src/share/classes/java/io/FilePermission.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/io/FilePermission.java
> @@ -725,7 +725,7 @@
>       */
>  
>      public FilePermissionCollection() {
> -        perms = new ArrayList<>();
> +        perms = new ArrayList<Permission>();
>      }
>  
>      /**
> @@ -830,7 +830,7 @@
>          // 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 @@
>  
>          // 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);
>      }
>  }
> --- openjdk-boot/jdk/src/share/classes/java/io/ObjectInputStream.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/io/ObjectInputStream.java
> @@ -213,7 +213,7 @@
>  
>      /** 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 @@
>      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 */
> --- openjdk-boot/jdk/src/share/classes/java/io/ObjectOutputStream.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/io/ObjectOutputStream.java
> @@ -165,11 +165,11 @@
>      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 @@
>          private final List<String> stack;
>  
>          DebugTraceInfoStack() {
> -            stack = new ArrayList<>();
> +            stack = new ArrayList<String>();
>          }
>  
>          /**
> --- openjdk-boot/jdk/src/share/classes/java/io/ObjectStreamClass.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/io/ObjectStreamClass.java
> @@ -84,18 +84,18 @@
>      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 @@
>          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 @@
>      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 @@
>  
>          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 @@
>       */
>      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 @@
>              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 @@
>          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);
> --- openjdk-boot/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java
> @@ -47,7 +47,7 @@
>                      }
>                  }
>              );
> -            hooks = new IdentityHashMap<>();
> +            hooks = new IdentityHashMap<Thread, Thread>();
>          } catch (IllegalStateException e) {
>              // application shutdown hooks cannot be added if
>              // shutdown is in progress.
> --- openjdk-boot/jdk/src/share/classes/java/lang/Character.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/Character.java
> @@ -646,7 +646,8 @@
>       */
>      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 @@
>  
>          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);
> --- openjdk-boot/jdk/src/share/classes/java/lang/CharacterName.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/CharacterName.java
> @@ -81,7 +81,7 @@
>              } 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 {
> --- openjdk-boot/jdk/src/share/classes/java/lang/Class.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/Class.java
> @@ -1308,7 +1308,7 @@
>          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 @@
>          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 @@
>  
>          // 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 @@
>          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 @@
>          }
>          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 @@
>          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 @@
>          methods.compactAndTrim();
>          res = methods.getArray();
>          if (useCaches) {
> -            publicMethods = new SoftReference<>(res);
> +            publicMethods = new SoftReference<Method[]>(res);
>          }
>          return res;
>      }
> @@ -2979,7 +2979,7 @@
>              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 @@
>          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();
> --- openjdk-boot/jdk/src/share/classes/java/lang/ClassLoader.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/ClassLoader.java
> @@ -246,7 +246,7 @@
>  
>      // 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 @@
>      // 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 @@
>      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 @@
>          }
>          tmp[1] = findResources(name);
>  
> -        return new CompoundEnumeration<>(tmp);
> +        return new CompoundEnumeration<URL>(tmp);
>      }
>  
>      /**
> @@ -1657,7 +1658,7 @@
>      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 @@
>      }
>  
>      // 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 @@
>           * 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 @@
>      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++)
> --- openjdk-boot/jdk/src/share/classes/java/lang/Package.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/Package.java
> @@ -596,13 +596,16 @@
>      }
>  
>      // 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();
> --- openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java
> @@ -214,7 +214,7 @@
>       * @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 @@
>       * @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;
> --- openjdk-boot/jdk/src/share/classes/java/lang/String.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/String.java
> @@ -2330,7 +2330,7 @@
>              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));
> --- openjdk-boot/jdk/src/share/classes/java/lang/StringCoding.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/StringCoding.java
> @@ -53,9 +53,9 @@
>  
>      /** 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;
>  
> --- openjdk-boot/jdk/src/share/classes/java/lang/Thread.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/Thread.java
> @@ -1616,7 +1616,8 @@
>          // 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 @@
>      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<?>>();
>      }
>  
>      /**
> --- openjdk-boot/jdk/src/share/classes/java/lang/Throwable.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/Throwable.java
> @@ -917,7 +917,7 @@
>                  // 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 @@
>              return;
>  
>          if (suppressedExceptions == SUPPRESSED_SENTINEL)
> -            suppressedExceptions = new ArrayList<>(1);
> +            suppressedExceptions = new ArrayList<Throwable>(1);
>  
>          suppressedExceptions.add(exception);
>      }
> --- openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java
> @@ -789,7 +789,7 @@
>             getPlatformManagementInterfaces()
>      {
>          Set<Class<? extends PlatformManagedObject>> result =
> -            new TreeSet<>();
> +            new TreeSet<Class<? extends PlatformManagedObject>>();
>          for (PlatformComponent component: PlatformComponent.values()) {
>              result.add(component.getMXBeanInterface());
>          }
> --- openjdk-boot/jdk/src/share/classes/java/lang/management/PlatformComponent.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/management/PlatformComponent.java
> @@ -287,7 +287,7 @@
>              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 @@
>      }
>  
>      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 @@
>              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 @@
>      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
> --- openjdk-boot/jdk/src/share/classes/java/lang/reflect/Constructor.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/Constructor.java
> @@ -136,7 +136,7 @@
>          // 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,
> --- openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java
> @@ -232,7 +232,7 @@
>  
>      /** 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 @@
>          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 @@
>          synchronized (loaderToCache) {
>              cache = loaderToCache.get(loader);
>              if (cache == null) {
> -                cache = new HashMap<>();
> +                cache = new HashMap<List<String>, Object>();
>                  loaderToCache.put(loader, cache);
>              }
>              /*
> --- openjdk-boot/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java
> @@ -84,7 +84,7 @@
>                                               byte[] annotations,
>                                               byte[] parameterAnnotations)
>      {
> -        return new Constructor<>(declaringClass,
> +        return new Constructor<T>(declaringClass,
>                                    parameterTypes,
>                                    checkedExceptions,
>                                    modifiers,
> --- openjdk-boot/jdk/src/share/classes/java/net/InetAddress.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/net/InetAddress.java
> @@ -677,7 +677,7 @@
>  
>      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 @@
>  
>                  // 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);
> --- openjdk-boot/jdk/src/share/classes/java/net/URLClassLoader.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/net/URLClassLoader.java
> @@ -205,7 +205,7 @@
>       */
>  
>      private WeakHashMap<Closeable,Void>
> -        closeables = new WeakHashMap<>();
> +        closeables = new WeakHashMap<Closeable, Void>();
>  
>      /**
>       * Returns an input stream for reading the specified resource.
> --- openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java
> @@ -1487,7 +1487,7 @@
>              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 @@
>          BufferedReader reader = null;
>          try {
>              reader = newBufferedReader(path, cs);
> -            List<String> result = new ArrayList<>();
> +            List<String> result = new ArrayList();
>              for (;;) {
>                  String line = reader.readLine();
>                  if (line == null)
> --- openjdk-boot/jdk/src/share/classes/java/security/AccessControlContext.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/security/AccessControlContext.java
> @@ -124,7 +124,7 @@
>                  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]);
> --- openjdk-boot/jdk/src/share/classes/java/security/BasicPermission.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/security/BasicPermission.java
> @@ -515,7 +515,7 @@
>  
>          // 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);
> --- openjdk-boot/jdk/src/share/classes/java/security/CodeSource.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/security/CodeSource.java
> @@ -188,7 +188,7 @@
>          } 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 @@
>  
>              // 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;
>  
> --- openjdk-boot/jdk/src/share/classes/java/security/Permissions.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/security/Permissions.java
> @@ -362,7 +362,7 @@
>  
>          // 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 @@
>  
>          // 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);
>          }
> --- openjdk-boot/jdk/src/share/classes/java/security/ProtectionDomain.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/security/ProtectionDomain.java
> @@ -368,8 +368,8 @@
>          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
> --- openjdk-boot/jdk/src/share/classes/java/security/Provider.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/security/Provider.java
> @@ -437,7 +437,7 @@
>  
>      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 @@
>          }
>          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 @@
>                      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) {
> --- openjdk-boot/jdk/src/share/classes/java/security/SecureClassLoader.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/security/SecureClassLoader.java
> @@ -50,7 +50,7 @@
>      // 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");
>  
> --- openjdk-boot/jdk/src/share/classes/java/security/Security.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/security/Security.java
> @@ -546,7 +546,7 @@
>              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 @@
>          // 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 @@
>      }
>  
>      // 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 @@
>                                                  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 @@
>              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++) {
> --- openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermission.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermission.java
> @@ -198,7 +198,7 @@
>                  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]);
> --- openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java
> @@ -119,7 +119,7 @@
>  
>      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 @@
>  
>          // 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 @@
>              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 @@
>          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
> --- openjdk-boot/jdk/src/share/classes/java/util/AbstractList.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/AbstractList.java
> @@ -482,8 +482,8 @@
>       */
>      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 @@
>      }
>  
>      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 @@
>      }
>  
>      public List<E> subList(int fromIndex, int toIndex) {
> -        return new RandomAccessSubList<>(this, fromIndex, toIndex);
> +        return new RandomAccessSubList<E>(this, fromIndex, toIndex);
>      }
>  }
> --- openjdk-boot/jdk/src/share/classes/java/util/Arrays.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/Arrays.java
> @@ -2825,7 +2825,7 @@
>       */
>      @SafeVarargs
>      public static <T> List<T> asList(T... a) {
> -        return new ArrayList<>(a);
> +        return new ArrayList<T>(a);
>      }
>  
>      /**
> --- openjdk-boot/jdk/src/share/classes/java/util/Collections.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/Collections.java
> @@ -1035,7 +1035,7 @@
>       * @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 @@
>       * @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 @@
>       * @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 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 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 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 @@
>           */
>          private Object readResolve() {
>              return (list instanceof RandomAccess
> -                    ? new UnmodifiableRandomAccessList<>(list)
> +                    ? new UnmodifiableRandomAccessList<E>(list)
>                      : this);
>          }
>      }
> @@ -1283,7 +1283,7 @@
>          }
>  
>          public List<E> subList(int fromIndex, int toIndex) {
> -            return new UnmodifiableRandomAccessList<>(
> +            return new UnmodifiableRandomAccessList<E>(
>                  list.subList(fromIndex, toIndex));
>          }
>  
> @@ -1296,7 +1296,7 @@
>           * deserialization.
>           */
>          private Object writeReplace() {
> -            return new UnmodifiableList<>(list);
> +            return new UnmodifiableList<E>(list);
>          }
>      }
>  
> @@ -1315,7 +1315,7 @@
>       * @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 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 @@
>                          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 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 @@
>                  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 @@
>                  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 @@
>       * @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 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 @@
>       * @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 @@
>       * @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 @@
>       * @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 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 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 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 @@
>           */
>          private Object readResolve() {
>              return (list instanceof RandomAccess
> -                    ? new SynchronizedRandomAccessList<>(list)
> +                    ? new SynchronizedRandomAccessList<E>(list)
>                      : this);
>          }
>      }
> @@ -1944,7 +1944,7 @@
>  
>          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 @@
>           * deserialization.
>           */
>          private Object writeReplace() {
> -            return new SynchronizedList<>(list);
> +            return new SynchronizedList<E>(list);
>          }
>      }
>  
> @@ -1990,7 +1990,7 @@
>       * @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 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 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 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 @@
>       * @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 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 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 @@
>       * @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 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 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 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 List<E> subList(int fromIndex, int toIndex) {
> -            return new CheckedRandomAccessList<>(
> +            return new CheckedRandomAccessList<E>(
>                  list.subList(fromIndex, toIndex), type);
>          }
>      }
> @@ -2609,7 +2609,7 @@
>      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 @@
>              // - 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 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 @@
>                  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 @@
>  
>              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 @@
>                      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 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 @@
>  
>      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 @@
>          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 @@
>  
>      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 @@
>       * @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 @@
>       * @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 @@
>       * @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 @@
>       * @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 @@
>       * @since 1.3
>       */
>      public static <T> List<T> singletonList(T o) {
> -        return new SingletonList<>(o);
> +        return new SingletonList<T>(o);
>      }
>  
>      /**
> @@ -3380,7 +3381,7 @@
>       * @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 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 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 @@
>              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 @@
>          if (cmp instanceof ReverseComparator2)
>              return ((ReverseComparator2<T>)cmp).cmp;
>  
> -        return new ReverseComparator2<>(cmp);
> +        return new ReverseComparator2<T>(cmp);
>      }
>  
>      /**
> @@ -3675,7 +3676,7 @@
>       * @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 @@
>       * @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 @@
>       * @since  1.6
>       */
>      public static <T> Queue<T> asLifoQueue(Deque<T> deque) {
> -        return new AsLIFOQueue<>(deque);
> +        return new AsLIFOQueue<T>(deque);
>      }
>  
>      /**
> --- openjdk-boot/jdk/src/share/classes/java/util/EnumMap.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/EnumMap.java
> @@ -500,7 +500,7 @@
>              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;
>          }
> --- openjdk-boot/jdk/src/share/classes/java/util/EnumSet.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/EnumSet.java
> @@ -110,9 +110,9 @@
>              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 @@
>      }
>  
>      Object writeReplace() {
> -        return new SerializationProxy<>(this);
> +        return new SerializationProxy<E>(this);
>      }
>  
>      // readObject method for the serialization proxy pattern
> --- openjdk-boot/jdk/src/share/classes/java/util/Formatter.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/Formatter.java
> @@ -2514,7 +2514,7 @@
>       * 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)) {
> --- openjdk-boot/jdk/src/share/classes/java/util/HashMap.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/HashMap.java
> @@ -763,7 +763,7 @@
>       */
>      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 @@
>       */
>      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++;
>      }
>  
> --- openjdk-boot/jdk/src/share/classes/java/util/HashSet.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/HashSet.java
> @@ -100,7 +100,7 @@
>       * default initial capacity (16) and load factor (0.75).
>       */
>      public HashSet() {
> -        map = new HashMap<>();
> +        map = new HashMap<E,Object>();
>      }
>  
>      /**
> @@ -113,7 +113,7 @@
>       * @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 @@
>       *             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 @@
>       *             than zero
>       */
>      public HashSet(int initialCapacity) {
> -        map = new HashMap<>(initialCapacity);
> +        map = new HashMap<E,Object>(initialCapacity);
>      }
>  
>      /**
> @@ -156,7 +156,7 @@
>       *             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);
>      }
>  
>      /**
> --- openjdk-boot/jdk/src/share/classes/java/util/Hashtable.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/Hashtable.java
> @@ -455,7 +455,7 @@
>  
>          // 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 @@
>          if (count == 0) {
>              return Collections.emptyEnumeration();
>          } else {
> -            return new Enumerator<>(type, false);
> +            return new Enumerator<T>(type, false);
>          }
>      }
>  
> @@ -587,7 +587,7 @@
>          if (count == 0) {
>              return Collections.emptyIterator();
>          } else {
> -            return new Enumerator<>(type, true);
> +            return new Enumerator<T>(type, true);
>          }
>      }
>  
> @@ -863,7 +863,7 @@
>  
>                  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 @@
>          }
>          // 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 @@
>          }
>  
>          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()));
>          }
>  
> --- openjdk-boot/jdk/src/share/classes/java/util/IdentityHashMap.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/IdentityHashMap.java
> @@ -1145,7 +1145,7 @@
>              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 @@
>                      .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;
> --- openjdk-boot/jdk/src/share/classes/java/util/JumboEnumSet.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/JumboEnumSet.java
> @@ -91,7 +91,7 @@
>       * @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> {
> --- openjdk-boot/jdk/src/share/classes/java/util/LinkedHashMap.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/LinkedHashMap.java
> @@ -237,7 +237,7 @@
>       * 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 @@
>       */
>      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++;
> --- openjdk-boot/jdk/src/share/classes/java/util/LinkedList.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/LinkedList.java
> @@ -122,7 +122,7 @@
>       */
>      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 @@
>       */
>      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 @@
>      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 @@
>  
>          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
> --- openjdk-boot/jdk/src/share/classes/java/util/ListResourceBundle.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/ListResourceBundle.java
> @@ -187,7 +187,7 @@
>              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];
> --- openjdk-boot/jdk/src/share/classes/java/util/Locale.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/Locale.java
> @@ -1793,7 +1793,7 @@
>                  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);
>          }
> --- openjdk-boot/jdk/src/share/classes/java/util/PriorityQueue.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/PriorityQueue.java
> @@ -538,7 +538,7 @@
>                      cursor--;
>                  else {
>                      if (forgetMeNot == null)
> -                        forgetMeNot = new ArrayDeque<>();
> +                        forgetMeNot = new ArrayDeque<E>();
>                      forgetMeNot.add(moved);
>                  }
>              } else if (lastRetElt != null) {
> --- openjdk-boot/jdk/src/share/classes/java/util/Properties.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/Properties.java
> @@ -1010,7 +1010,7 @@
>       * @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();
>      }
> --- openjdk-boot/jdk/src/share/classes/java/util/RegularEnumSet.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/RegularEnumSet.java
> @@ -72,7 +72,7 @@
>       * @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> {
> --- openjdk-boot/jdk/src/share/classes/java/util/ResourceBundle.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/ResourceBundle.java
> @@ -289,7 +289,7 @@
>       * 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 @@
>       * @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 @@
>          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 @@
>              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 @@
>                  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 @@
>                  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 @@
>                      }
>                  }
>  
> -                List<Locale> list = new LinkedList<>();
> +                List<Locale> list = new LinkedList<Locale>();
>  
>                  if (variants != null) {
>                      for (String v : variants) {
> --- openjdk-boot/jdk/src/share/classes/java/util/ServiceLoader.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/ServiceLoader.java
> @@ -191,7 +191,7 @@
>      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 @@
>      {
>          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 static <S> ServiceLoader<S> load(Class<S> service,
>                                              ClassLoader loader)
>      {
> -        return new ServiceLoader<>(service, loader);
> +        return new ServiceLoader<S>(service, loader);
>      }
>  
>      /**
> --- openjdk-boot/jdk/src/share/classes/java/util/TimSort.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/TimSort.java
> @@ -196,7 +196,7 @@
>           * 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
> --- openjdk-boot/jdk/src/share/classes/java/util/TreeMap.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/TreeMap.java
> @@ -530,7 +530,7 @@
>          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 @@
>                      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 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 @@
>       */
>      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 @@
>              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)
> --- openjdk-boot/jdk/src/share/classes/java/util/TreeSet.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/TreeSet.java
> @@ -138,7 +138,7 @@
>       *        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 @@
>       * @since 1.6
>       */
>      public NavigableSet<E> descendingSet() {
> -        return new TreeSet<>(m.descendingMap());
> +        return new TreeSet<E>(m.descendingMap());
>      }
>  
>      /**
> @@ -322,7 +322,7 @@
>       */
>      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 @@
>       * @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 @@
>       * @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 @@
>              throw new InternalError();
>          }
>  
> -        clone.m = new TreeMap<>(m);
> +        clone.m = new TreeMap<E,Object>(m);
>          return clone;
>      }
>  
> @@ -524,9 +524,9 @@
>          // 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
> --- openjdk-boot/jdk/src/share/classes/java/util/WeakHashMap.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/WeakHashMap.java
> @@ -171,7 +171,7 @@
>      /**
>       * 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 @@
>  
>          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 @@
>          }
>  
>          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;
>          }
>  
> --- openjdk-boot/jdk/src/share/classes/java/util/logging/FileHandler.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/logging/FileHandler.java
> @@ -127,7 +127,7 @@
>      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
> --- openjdk-boot/jdk/src/share/classes/java/util/logging/Level.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/logging/Level.java
> @@ -59,7 +59,7 @@
>   */
>  
>  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";
>  
>      /**
> --- openjdk-boot/jdk/src/share/classes/java/util/logging/LogManager.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/logging/LogManager.java
> @@ -156,7 +156,8 @@
>      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 @@
>      // 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 @@
>                  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 @@
>          }
>          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()) {
> --- openjdk-boot/jdk/src/share/classes/java/util/logging/LogRecord.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/logging/LogRecord.java
> @@ -85,7 +85,8 @@
>      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
> --- openjdk-boot/jdk/src/share/classes/java/util/logging/Logger.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/logging/Logger.java
> @@ -170,7 +170,7 @@
>      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 @@
>              // 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
> --- openjdk-boot/jdk/src/share/classes/java/util/logging/Logging.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/logging/Logging.java
> @@ -56,7 +56,7 @@
>  
>      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());
> --- openjdk-boot/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java
> @@ -155,7 +155,8 @@
>       * 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 @@
>              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 @@
>       * 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
> --- openjdk-boot/jdk/src/share/classes/java/util/regex/Pattern.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/regex/Pattern.java
> @@ -321,7 +321,7 @@
>   *     <td headers="matches">Nothing, but quotes all characters until <tt>\E</tt></td></tr>
>   * <tr><td valign="top" headers="construct quot"><tt>\E</tt></td>
>   *     <td headers="matches">Nothing, but ends quoting started by <tt>\Q</tt></td></tr>
> - *     <!-- Metachars: !$()*+.<>?[\]^{|} -->
> + *     <!-- Metachars: !$()*+.?[\]^{|} -->
>   *
>   * <tr><th>&nbsp;</th></tr>
>   * <tr align="left"><th colspan="2" id="special">Special constructs (named-capturing and non-capturing)</th></tr>
> @@ -1193,7 +1193,7 @@
>      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 @@
>  
>      Map<String, Integer> namedGroups() {
>          if (namedGroups == null)
> -            namedGroups = new HashMap<>(2);
> +            namedGroups = new HashMap<String, Integer>(2);
>          return namedGroups;
>      }
>  
> @@ -5495,7 +5495,7 @@
>          }
>  
>          private static final HashMap<String, CharPropertyFactory> map
> -            = new HashMap<>();
> +            = new HashMap<String, CharPropertyFactory>();
>  
>          static {
>              // Unicode character property aliases, defined in
> --- openjdk-boot/jdk/src/share/classes/java/util/regex/UnicodeProp.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/regex/UnicodeProp.java
> @@ -193,8 +193,8 @@
>          }
>      };
>  
> -    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");
> --- openjdk-boot/jdk/src/share/classes/java/util/zip/ZipFile.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/zip/ZipFile.java
> @@ -319,7 +319,7 @@
>  
>      // 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 @@
>      }
>  
>      // 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 @@
>              // 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();
> --- openjdk-boot/jdk/src/share/classes/java/util/zip/ZipOutputStream.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/zip/ZipOutputStream.java
> @@ -53,8 +53,8 @@
>      }
>  
>      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;
> --- openjdk-boot/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java.orig
> +++ openjdk-boot/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java
> @@ -329,7 +329,7 @@
>              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;
> --- openjdk-boot/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java.orig
> +++ openjdk-boot/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java
> @@ -48,7 +48,7 @@
>  
>      private Subject subject;
>      private WeakKeyValueMap<ProtectionDomain, ProtectionDomain> cachedPDs =
> -                new WeakKeyValueMap<>();
> +        new WeakKeyValueMap<ProtectionDomain, ProtectionDomain>();
>      private Set<Principal> principalSet;
>      private Principal[] principals;
>  
> --- openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java.orig
> +++ openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java
> @@ -361,7 +361,7 @@
>          // 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);
> --- openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java.orig
> +++ openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java
> @@ -569,7 +569,7 @@
>          // 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);
> --- openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java
> @@ -59,7 +59,7 @@
>          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;
>      }
>  
> @@ -1013,7 +1013,7 @@
>                                    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;
> @@ -1059,7 +1059,7 @@
>                                    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);
> @@ -1214,7 +1214,7 @@
>                                       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;
> --- openjdk-boot/jdk/src/share/classes/sun/io/CharacterEncoding.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/io/CharacterEncoding.java
> @@ -54,7 +54,7 @@
>      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");
> --- openjdk-boot/jdk/src/share/classes/sun/io/Converters.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/io/Converters.java
> @@ -120,7 +120,7 @@
>  
>      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;
>      }
> --- openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java
> @@ -169,7 +169,7 @@
>      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) {
> @@ -244,7 +244,7 @@
>          }
>          // 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());
>          }
> --- openjdk-boot/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java
> @@ -205,7 +205,7 @@
>      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
> --- openjdk-boot/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java
> @@ -52,7 +52,7 @@
>  
>      // 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 @@
>  
>          // 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 @@
>                                        final String[] ids, int depth)
>              throws UnknownHostException
>      {
> -        ArrayList<String> results = new ArrayList<>();
> +        ArrayList<String> results = new ArrayList<String>();
>          Attributes attrs;
>  
>          // do the query
> --- openjdk-boot/jdk/src/share/classes/sun/net/www/URLConnection.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/net/www/URLConnection.java
> @@ -239,7 +239,7 @@
>          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);
> --- openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java
> @@ -111,7 +111,7 @@
>       * 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
> --- openjdk-boot/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java
> @@ -49,22 +49,22 @@
>      /* 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 @@
>          final ArrayList<String> ks;
>          synchronized (this) {
>              init();
> -            ks = new ArrayList<>(classMap.keySet());
> +            ks = new ArrayList<String>(classMap.keySet());
>          }
>  
>          return new Iterator<Charset>() {
> --- openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java
> @@ -84,7 +84,7 @@
>              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)
> --- openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java
> @@ -89,8 +89,8 @@
>       * 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) {
> --- openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java
> @@ -102,7 +102,7 @@
>              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 ||
> --- openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java
> @@ -77,7 +77,7 @@
>          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 @@
>          }
>  
>          // 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];
> --- openjdk-boot/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java
> @@ -71,7 +71,7 @@
>  
>      @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());
> --- openjdk-boot/jdk/src/share/classes/sun/nio/fs/Util.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/Util.java
> @@ -63,7 +63,7 @@
>       * 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 @@
>       * 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);
>          }
> --- openjdk-boot/jdk/src/share/classes/sun/reflect/generics/parser/SignatureParser.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/reflect/generics/parser/SignatureParser.java
> @@ -229,7 +229,7 @@
>       *     "<" FormalTypeParameter+ ">"
>       */
>      private FormalTypeParameter[] parseFormalTypeParameters(){
> -        List<FormalTypeParameter> ftps =  new ArrayList<>(3);
> +        List<FormalTypeParameter> ftps =  new ArrayList(3);
>          assert(current() == '<'); // should not have been called at all
>          if (current() != '<') { throw error("expected '<'");}
>          advance();
> @@ -308,7 +308,7 @@
>          assert(current() == 'L');
>          if (current() != 'L') { throw error("expected a class type");}
>          advance();
> -        List<SimpleClassTypeSignature> scts = new ArrayList<>(5);
> +        List<SimpleClassTypeSignature> scts = new ArrayList(5);
>          scts.add(parsePackageNameAndSimpleClassTypeSignature());
>  
>          parseClassTypeSignatureSuffix(scts);
> @@ -391,7 +391,7 @@
>       *     "<" TypeArgument+ ">"
>       */
>      private TypeArgument[] parseTypeArguments() {
> -        List<TypeArgument> tas = new ArrayList<>(3);
> +        List<TypeArgument> tas = new ArrayList(3);
>          assert(current() == '<');
>          if (current() != '<') { throw error("expected '<'");}
>          advance();
> @@ -529,7 +529,7 @@
>       *     ":" FieldTypeSignature
>       */
>      private FieldTypeSignature[] parseBounds() {
> -        List<FieldTypeSignature> fts = new ArrayList<>(3);
> +        List<FieldTypeSignature> fts = new ArrayList(3);
>  
>          if (current() == ':') {
>              advance();
> @@ -557,7 +557,7 @@
>       *     ClassTypeSignature
>       */
>      private ClassTypeSignature[] parseSuperInterfaces() {
> -        List<ClassTypeSignature> cts = new ArrayList<>(5);
> +        List<ClassTypeSignature> cts = new ArrayList(5);
>          while(current() == 'L') {
>              cts.add(parseClassTypeSignature());
>          }
> @@ -592,7 +592,7 @@
>  
>      // TypeSignature*
>      private TypeSignature[] parseZeroOrMoreTypeSignatures() {
> -        List<TypeSignature> ts = new ArrayList<>();
> +        List<TypeSignature> ts = new ArrayList();
>          boolean stop = false;
>          while (!stop) {
>              switch(current()) {
> @@ -631,7 +631,7 @@
>  
>      // ThrowSignature*
>      private FieldTypeSignature[] parseZeroOrMoreThrowsSignatures(){
> -        List<FieldTypeSignature> ets = new ArrayList<>(3);
> +        List<FieldTypeSignature> ets = new ArrayList(3);
>          while( current() == '^') {
>              ets.add(parseThrowsSignature());
>          }
> --- openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java
> @@ -149,10 +149,10 @@
>  
>      /** 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 @@
>      {
>          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);
>          }
>      }
>  
> --- openjdk-boot/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java
> @@ -37,7 +37,7 @@
>   */
>  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;
>  
>      /**
> --- openjdk-boot/jdk/src/share/classes/sun/security/acl/AclImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/acl/AclImpl.java
> @@ -41,15 +41,15 @@
>      // 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 @@
>      //
>      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 @@
>      //
>      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());
> --- openjdk-boot/jdk/src/share/classes/sun/security/acl/GroupImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/acl/GroupImpl.java
> @@ -34,7 +34,7 @@
>   * @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 @@
>          if (groupMembers.contains(member)) {
>              return true;
>          } else {
> -            Vector<Group> alreadySeen = new Vector<>(10);
> +            Vector<Group> alreadySeen = new Vector<Group>(10);
>              return isMemberRecurse(member, alreadySeen);
>          }
>      }
> --- openjdk-boot/jdk/src/share/classes/sun/security/jca/ProviderList.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/jca/ProviderList.java
> @@ -96,7 +96,7 @@
>          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 @@
>       * 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 @@
>       * 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 @@
>       */
>      @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));
>          }
> --- openjdk-boot/jdk/src/share/classes/sun/security/jca/Providers.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/jca/Providers.java
> @@ -40,7 +40,7 @@
>  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
> --- openjdk-boot/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java
> @@ -267,7 +267,7 @@
>              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);
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/Config.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/Config.java
> @@ -527,7 +527,7 @@
>                  }
>                  })));
>                  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 @@
>              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 @@
>                      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 @@
>                      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 @@
>       * 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 @@
>       * 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 @@
>       * 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 @@
>              }
>              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());
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/KdcComm.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/KdcComm.java
> @@ -462,7 +462,7 @@
>       */
>      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 @@
>          // 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);
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java
> @@ -238,7 +238,7 @@
>              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();
> @@ -293,7 +293,7 @@
>      // 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;
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/Realm.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/Realm.java
> @@ -359,14 +359,14 @@
>          }
>  
>          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
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java
> @@ -176,7 +176,7 @@
>       * @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()));
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java
> @@ -99,7 +99,7 @@
>       * @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);
>          }
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java
> @@ -133,7 +133,7 @@
>       * @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()));
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java
> @@ -179,7 +179,7 @@
>      */
>      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 @@
>          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 {
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java
> @@ -150,7 +150,7 @@
>              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()));
>              }
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java
> @@ -158,7 +158,7 @@
>              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 @@
>              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 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) {
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java
> @@ -134,7 +134,7 @@
>              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()));
>              }
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java
> @@ -259,7 +259,7 @@
>      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();
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java
> @@ -157,7 +157,7 @@
>       * @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()));
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java
> @@ -77,7 +77,7 @@
>       */
>  
>      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);
>          }
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java
> @@ -490,7 +490,7 @@
>  
>      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());
>          }
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java
> @@ -257,7 +257,7 @@
>                  + 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]);
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java
> @@ -67,7 +67,7 @@
>  
>      // 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 @@
>      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 @@
>          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 @@
>          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);
> --- openjdk-boot/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java
> @@ -683,7 +683,7 @@
>                      // 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) {
> --- openjdk-boot/jdk/src/share/classes/sun/security/provider/PolicyFile.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/provider/PolicyFile.java
> @@ -299,7 +299,7 @@
>      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 @@
>  
>          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 @@
>                      // 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 @@
>              // 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 @@
>              // 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 @@
>                      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]);
> --- openjdk-boot/jdk/src/share/classes/sun/security/provider/Sun.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/provider/Sun.java
> @@ -55,7 +55,7 @@
>              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));
>          }
> --- openjdk-boot/jdk/src/share/classes/sun/security/provider/VerificationProvider.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/provider/VerificationProvider.java
> @@ -76,7 +76,7 @@
>              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));
> --- openjdk-boot/jdk/src/share/classes/sun/security/provider/X509Factory.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/provider/X509Factory.java
> @@ -409,10 +409,10 @@
>          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 @@
>                  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 @@
>          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 @@
>                  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) {
> --- openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java
> @@ -590,7 +590,7 @@
>              // 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.
> --- openjdk-boot/jdk/src/share/classes/sun/security/rsa/RSACore.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/rsa/RSACore.java
> @@ -219,7 +219,7 @@
>      // 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.
> --- openjdk-boot/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java
> @@ -52,7 +52,7 @@
>              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));
>          }
> --- openjdk-boot/jdk/src/share/classes/sun/security/ssl/CipherSuite.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/CipherSuite.java
> @@ -393,7 +393,7 @@
>  
>          // 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;
> --- openjdk-boot/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java
> @@ -656,7 +656,7 @@
>          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 @@
>                          "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 @@
>          // 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);
> --- openjdk-boot/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java
> @@ -258,7 +258,7 @@
>      // 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 @@
>  
>      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 @@
>  
>          // 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 @@
>      // 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 {
> --- openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java
> @@ -569,7 +569,7 @@
>                  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 @@
>       */
>      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()) {
> --- openjdk-boot/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java
> @@ -169,7 +169,7 @@
>          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 @@
>      }
>  
>      public String toString() {
> -        List<String> list = new ArrayList<>();
> +        List<String> list = new ArrayList<String>();
>          for (byte format : formats) {
>              list.add(toString(format));
>          }
> --- openjdk-boot/jdk/src/share/classes/sun/security/ssl/ProtocolList.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/ProtocolList.java
> @@ -79,7 +79,7 @@
>              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) {
> --- openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java
> @@ -261,7 +261,7 @@
>  
>          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 @@
>          }
>  
>          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 @@
>          }
>  
>          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 @@
>                  }
>  
>                  if (cipherSuite != null) {
> -                    Set<String> components = new HashSet<>();
> +                    Set<String> components = new HashSet<String>();
>  
>                      if(cipherSuite.keyExchange != null) {
>                          components.addAll(
> @@ -448,7 +448,7 @@
>                  }
>  
>                  if (cipherSuite != null) {
> -                    Set<String> components = new HashSet<>();
> +                    Set<String> components = new HashSet<String>();
>  
>                      if(cipherSuite.keyExchange != null) {
>                          components.addAll(
> --- openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java
> @@ -325,7 +325,7 @@
>          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 @@
>                  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 {
> --- openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java
> @@ -618,7 +618,7 @@
>       * 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 @@
>       */
>      public String[] getValueNames() {
>          Enumeration<SecureKey> e;
> -        Vector<Object> v = new Vector<>();
> +        Vector<Object> v = new Vector<Object>();
>          SecureKey key;
>          Object securityCtx = SecureKey.getCurrentSecurityContext();
>  
> --- openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java
> @@ -2478,7 +2478,7 @@
>              entrySet, HandshakeCompletedEvent e) {
>  
>              super("HandshakeCompletedNotify-Thread");
> -            targets = new HashSet<>(entrySet);          // clone the entry set
> +            targets = new HashSet(entrySet);          // clone the entry set
>              event = e;
>          }
>  
> --- openjdk-boot/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java
> @@ -153,7 +153,7 @@
>      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 @@
>      // 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 @@
>  
>      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 @@
>  
>      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) {
> --- openjdk-boot/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java
> @@ -337,7 +337,7 @@
>  
>          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 @@
>       * 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) {
> --- openjdk-boot/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
> @@ -134,7 +134,7 @@
>          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;
>  
> --- openjdk-boot/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java
> @@ -307,7 +307,7 @@
>                  (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 @@
>      // 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;
>          }
> --- openjdk-boot/jdk/src/share/classes/sun/security/tools/JarSigner.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/tools/JarSigner.java
> @@ -123,14 +123,14 @@
>      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 @@
>  
>          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 @@
>              // 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 @@
>              .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 @@
>          return result;
>      }
>  
> -    Hashtable<Certificate, String> storeHash = new Hashtable<>();
> +    Hashtable<Certificate, String> storeHash = new Hashtable<Certificate,String>();
>  
>      int inKeyStore(CodeSigner[] signers) {
>  
> @@ -1119,7 +1119,7 @@
>               *   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 @@
>          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 @@
>                      }
>                  }
>              }
> -            Set<TrustAnchor> tas = new HashSet<>();
> +            Set<TrustAnchor> tas = new HashSet<TrustAnchor>();
>              try {
>                  KeyStore caks = KeyTool.getCacertsKeyStore();
>                  if (caks != null) {
> --- openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyTool.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyTool.java
> @@ -152,11 +152,11 @@
>      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 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 @@
>          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 @@
>          }
>  
>          // 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 @@
>                          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 @@
>                          }
>                          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 @@
>      }
>  
>      public static <A,B> Pair<A,B> of(A a, B b) {
> -        return new Pair<>(a,b);
> +        return new Pair<A,B>(a,b);
>      }
>  }
>  
> --- openjdk-boot/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java
> @@ -643,7 +643,7 @@
>          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 @@
>                          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 @@
>          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 @@
>   * 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);
>      }
> --- openjdk-boot/jdk/src/share/classes/sun/tools/native2ascii/Main.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/tools/native2ascii/Main.java
> @@ -94,7 +94,7 @@
>       * 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;
>  
> --- openjdk-boot/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java
> @@ -113,7 +113,7 @@
>          }
>          // 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 @@
>                  }
>              }
>              if (ukeywords == null) {
> -                ukeywords = new HashMap<>(4);
> +                ukeywords = new HashMap<CaseInsensitiveString,String>(4);
>              }
>              ukeywords.put(cikey, type);
>          }
> @@ -211,7 +211,7 @@
>                  setUnicodeLocaleExtension(val);
>              } else {
>                  if (extensions == null) {
> -                    extensions = new HashMap<>(4);
> +                    extensions = new HashMap<CaseInsensitiveChar,String>(4);
>                  }
>                  extensions.put(key, val);
>              }
> @@ -262,7 +262,7 @@
>                  }
>  
>                  if (extensions == null) {
> -                    extensions = new ArrayList<>(4);
> +                    extensions = new ArrayList<String>(4);
>                  }
>                  extensions.add(sb.toString());
>              } else {
> @@ -313,7 +313,7 @@
>          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 @@
>                          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 @@
>          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 @@
>                      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 @@
>                  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 @@
>                      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 @@
>                      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);
>                  }
> --- openjdk-boot/jdk/src/share/classes/sun/util/locale/LanguageTag.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LanguageTag.java
> @@ -62,7 +62,7 @@
>      // 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 @@
>              }
>              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 @@
>              }
>              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 @@
>                  }
>  
>                  if (extensions.isEmpty()) {
> -                    extensions = new ArrayList<>(4);
> +                    extensions = new ArrayList<String>(4);
>                  }
>                  extensions.add(sb.toString());
>                  found = true;
> @@ -462,7 +462,7 @@
>                      break;
>                  }
>                  if (variants == null) {
> -                    variants = new ArrayList<>();
> +                    variants = new ArrayList<String>();
>                  }
>                  variants.add(var);  // Do not canonicalize!
>                  varitr.next();
> @@ -503,7 +503,7 @@
>                      privateuse = ext.getValue();
>                  } else {
>                      if (extensions == null) {
> -                        extensions = new ArrayList<>();
> +                        extensions = new ArrayList<String>();
>                      }
>                      extensions.add(locextKey.toString() + SEP + ext.getValue());
>                  }
> --- openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java
> @@ -81,7 +81,7 @@
>          }
>  
>          // 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 @@
>              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());
> --- openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java
> @@ -38,14 +38,14 @@
>  
>  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 @@
>                  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 @@
>      }
>  
>      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();
>      }
> --- openjdk-boot/jdk/src/share/classes/sun/util/logging/PlatformLogger.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/util/logging/PlatformLogger.java
> @@ -113,7 +113,7 @@
>  
>      // 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 @@
>          }
>          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 @@
>       */
>      static class JavaLogger extends LoggerProxy {
>          private static final Map<Integer, Object> levelObjects =
> -            new HashMap<>();
> +            new HashMap<Integer, Object>();
>  
>          static {
>              if (LoggingSupport.isAvailable()) {
> --- openjdk-boot/jdk/src/share/demo/nio/zipfs/Demo.java.orig
> +++ openjdk-boot/jdk/src/share/demo/nio/zipfs/Demo.java
> @@ -160,7 +160,7 @@
>          }
>  
>          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)) {
> @@ -656,9 +656,9 @@
>  
>      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);
>  
> @@ -676,9 +676,9 @@
>  
>      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);
>  
> --- openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java.orig
> +++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java
> @@ -142,8 +142,8 @@
>          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();
> --- openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java.orig
> +++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java
> @@ -134,7 +134,7 @@
>          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 {
> --- openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java.orig
> +++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java
> @@ -157,7 +157,7 @@
>  
>      @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;
>      }
> @@ -202,7 +202,7 @@
>  
>      @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;
>      }
> @@ -268,7 +268,7 @@
>              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();
>          }
> @@ -396,7 +396,7 @@
>              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);
> @@ -825,7 +825,7 @@
>  
>      // 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 {
> @@ -1022,7 +1022,7 @@
>      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
> @@ -1043,7 +1043,7 @@
>              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) {
> @@ -1190,7 +1190,7 @@
>          Path tmpFile = createTempFileInSameDirectoryAs(zfpath);
>          try (OutputStream os = new BufferedOutputStream(Files.newOutputStream(tmpFile, WRITE)))
>          {
> -            ArrayList<Entry> elist = new ArrayList<>(inodes.size());
> +            ArrayList<Entry> elist = new ArrayList(inodes.size());
>              long written = 0;
>              byte[] buf = new byte[8192];
>              Entry e = null;
> @@ -1601,7 +1601,7 @@
>      // 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.
> @@ -1630,7 +1630,7 @@
>      }
>  
>      // 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.
> @@ -2340,7 +2340,7 @@
>      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);
> --- openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java.orig
> +++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java
> @@ -62,7 +62,7 @@
>  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() {}
>  
> --- openjdk-boot/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java.orig
> +++ openjdk-boot/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java
> @@ -68,7 +68,7 @@
>          // 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)
> --- openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java.orig
> +++ openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java
> @@ -354,7 +354,7 @@
>       * 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 @@
>          });
>          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 @@
>              loadCache();
>          } catch(Exception e) {
>              // assert lastSyncTime == 0;
> -            prefsCache = new TreeMap<>();
> +            prefsCache = new TreeMap<String, String>();
>          }
>      }
>  
> @@ -567,7 +567,7 @@
>              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 @@
>                              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 @@
>          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 @@
>          } 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()) {
> --- openjdk-boot/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java.orig
> +++ openjdk-boot/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java
> @@ -60,7 +60,7 @@
>                                            int maxperkeyword,
>                                            int maxkeywords)
>      {
> -        LinkedList<String> ll = new LinkedList<>();
> +        LinkedList<String> ll = new LinkedList<String>();
>  
>          try {
>              BufferedReader in =
> @@ -200,7 +200,7 @@
>          // 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);
> --- openjdk-boot/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java.orig
> +++ openjdk-boot/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java
> @@ -153,12 +153,12 @@
>  
>      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")))
> --- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java.orig
> +++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java
> @@ -53,7 +53,7 @@
>          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 @@
>       * 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 {
> --- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java.orig
> +++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java
> @@ -63,7 +63,7 @@
>  
>      // 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) {
> --- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java.orig
> +++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java
> @@ -198,7 +198,7 @@
>       * 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;
>  
> --- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java.orig
> +++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java
> @@ -76,7 +76,7 @@
>          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 @@
>       */
>      @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");
> --- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java.orig
> +++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java
> @@ -83,7 +83,7 @@
>                  }
>  
>                  // read list of extended attributes
> -                List<String> list = new ArrayList<>();
> +                List<String> list = new ArrayList<String>();
>                  try {
>                      byte[] name;
>                      while ((name = readdir(dp)) != null) {
> --- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java.orig
> +++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java
> @@ -194,7 +194,7 @@
>      @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);
> --- openjdk-boot/jdk/src/windows/classes/java/lang/ProcessEnvironment.java.orig
> +++ openjdk-boot/jdk/src/windows/classes/java/lang/ProcessEnvironment.java
> @@ -250,7 +250,8 @@
>                                     envblock.substring(eql+1,end));
>          }
>  
> -        theCaseInsensitiveEnvironment = new TreeMap<>(nameComparator);
> +        theCaseInsensitiveEnvironment
> +            = new TreeMap<String,String>(nameComparator);
>          theCaseInsensitiveEnvironment.putAll(theEnvironment);
>      }
>  
> @@ -295,7 +296,8 @@
>      // 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);
> --- openjdk-boot/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java.orig
> +++ openjdk-boot/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java
> @@ -63,7 +63,7 @@
>      // 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, ", ");
> --- openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java.orig
> +++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java
> @@ -128,7 +128,7 @@
>          }
>  
>          // 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) {
> --- openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java.orig
> +++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java
> @@ -575,7 +575,7 @@
>      // 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);
> --- openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java.orig
> +++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java
> @@ -378,7 +378,7 @@
>              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++) {
> --- openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java.orig
> +++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java
> @@ -65,7 +65,7 @@
>  
>      // 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 @@
>          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 @@
>          // 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 @@
>          // 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 @@
>              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);
> --- openjdk-boot/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java.orig
> +++ openjdk-boot/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java
> @@ -56,7 +56,7 @@
>      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);
> --- openjdk-boot/jdk/test/java/lang/instrument/ilib/Inject.java.orig
> +++ openjdk-boot/jdk/test/java/lang/instrument/ilib/Inject.java
> @@ -107,7 +107,7 @@
>      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;
> --- openjdk-boot/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java.orig
> +++ openjdk-boot/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java
> @@ -50,7 +50,7 @@
>      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;
> --- openjdk-boot/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java.orig
> +++ openjdk-boot/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java
> @@ -103,7 +103,7 @@
>          }
>      }
>  
> -    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))
> --- openjdk-boot/jdk/test/java/util/Random/DistinctSeeds.java.orig
> +++ openjdk-boot/jdk/test/java/util/Random/DistinctSeeds.java
> @@ -59,7 +59,7 @@
>              }
>          }
>          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();
> --- openjdk-boot/jdk/test/java/util/logging/ClassLoaderLeakTest.java.orig
> +++ openjdk-boot/jdk/test/java/util/logging/ClassLoaderLeakTest.java
> @@ -89,7 +89,7 @@
>  
>           MyClassLoader appClassLoader = new MyClassLoader(urls, "test0");
>           WeakReference<MyClassLoader> ref =
> -                 new WeakReference<>(appClassLoader);
> +                 new WeakReference<MyClassLoader>(appClassLoader);
>  
>  
>           Thread appThread = new Thread(appsThreadGroup, launcher, "AppThread-0");

> --- openjdk-boot/jdk/src/share/classes/java/io/PrintStream.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/io/PrintStream.java
> @@ -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);
>          }
> --- openjdk-boot/jdk/src/share/classes/java/io/PrintWriter.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/io/PrintWriter.java
> @@ -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);
>          }
> --- openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java
> @@ -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);
>          }
>      }
> --- openjdk-boot/jdk/src/share/classes/java/util/Formatter.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/Formatter.java
> @@ -1857,7 +1857,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);
>          }
> --- openjdk-boot/jdk/src/share/classes/java/util/Scanner.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/Scanner.java
> @@ -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);
>          }
>      }
> --- openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java
> @@ -676,7 +676,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;
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/PAData.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/PAData.java
> @@ -280,7 +280,9 @@
>                                      .append(info.getSalt())
>                                      .append('\n');
>                          }
> -                    } catch (IOException|Asn1Exception e) {
> +                    } catch (Asn1Exception e) {
> +                        sb.append("\t <Unparseable PA-ETYPE-INFO>\n");
> +                    } catch (IOException e) {
>                          sb.append("\t <Unparseable PA-ETYPE-INFO>\n");
>                      }
>                  }
> @@ -307,7 +309,9 @@
>                                          .encodeBuffer(s2kparams));
>                              }
>                          }
> -                    } catch (IOException|Asn1Exception e) {
> +                    } catch (IOException e) {
> +                        sb.append("\t <Unparseable PA-ETYPE-INFO>\n");
> +                    } catch (Asn1Exception e) {
>                          sb.append("\t <Unparseable PA-ETYPE-INFO>\n");
>                      }
>                  }
> --- openjdk-boot/jdk/src/share/classes/sun/text/bidi/BidiBase.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/text/bidi/BidiBase.java
> @@ -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);
>              }
>          }

> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
> @@ -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 {
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java
> @@ -149,8 +149,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);
> @@ -341,9 +346,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)
>              }
> @@ -404,7 +414,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--) {
> @@ -418,6 +430,9 @@
>                  }
>              }
>              return "";
> +        } finally {
> +            if (in != null)
> +                in.close();
>          }
>      }
>  
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java
> @@ -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.
>      }
>  
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
> @@ -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();
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java
> @@ -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) {
> @@ -921,9 +927,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();
> @@ -949,6 +956,10 @@
>                  }
>              }
>          }
> +        finally {
> +            if (dump != null)
> +                dump.close();
> +        }
>      }
>  
>      void writeAttrCounts() throws IOException {
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java
> @@ -122,8 +122,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");
>              }
> @@ -131,6 +132,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();
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
> @@ -160,9 +160,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();
>          }
> --- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java.orig
> +++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java
> @@ -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
> --- openjdk-boot/jdk/src/share/classes/java/lang/Package.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/lang/Package.java
> @@ -575,12 +575,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;
> +            }
>          }
>      }
>  
> --- openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java
> @@ -188,7 +188,7 @@
>              } catch (Throwable suppressed) {
>                  x.addSuppressed(suppressed);
>              }
> -            throw x;
> +            throw (IOException) x;
>          }
>          assert sc.isConnected();
>          return sc;
> --- openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java
> @@ -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;
>              }
>          }
>      }
> --- openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java
> @@ -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;
>      }
>  }
> --- openjdk-boot/jdk/src/share/classes/java/util/Currency.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/Currency.java
> @@ -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])");
> --- openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java.orig
> +++ openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java
> @@ -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:
> --- openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java.orig
> +++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java
> @@ -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;
>      }
>  
> --- openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java.orig
> +++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java
> @@ -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);
> --- openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java
> @@ -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();
>                              }
>                          }
>                      });
> --- openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java
> @@ -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();
> +                }
>              }
>          }
>  
> --- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java
> @@ -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();
>          }
>      }
>  }
> --- openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java
> @@ -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());
> --- openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java.orig
> +++ openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java
> @@ -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;
>                  }
>              });
> --- openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java.orig
> +++ openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java
> @@ -200,7 +200,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++ ) {
> --- openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java.orig
> +++ openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java
> @@ -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;
>                  }
>              });
> --- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java.orig
> +++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java
> @@ -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;

> --- openjdk/jdk/make/com/sun/Makefile.orig
> +++ openjdk/jdk/make/com/sun/Makefile
> @@ -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
>  
> --- openjdk/jdk/make/com/sun/script/Makefile.orig
> +++ openjdk/jdk/make/com/sun/script/Makefile
> @@ -31,6 +31,8 @@
>  
>  AUTO_FILES_JAVA_DIRS = com/sun/script
>  
> +OTHER_JAVACFLAGS = -classpath $(RHINO_JAR)
> +
>  #
>  # Files that need to be copied
>  #
> --- openjdk/jdk/make/common/Release.gmk.orig
> +++ openjdk/jdk/make/common/Release.gmk
> @@ -766,6 +766,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) \
> --- openjdk/jdk/src/share/classes/com/sun/script/javascript/ExternalScriptable.java.orig
> +++ openjdk/jdk/src/share/classes/com/sun/script/javascript/ExternalScriptable.java
> @@ -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.*;
>  
> --- openjdk/jdk/src/share/classes/com/sun/script/javascript/JSAdapter.java.orig
> +++ openjdk/jdk/src/share/classes/com/sun/script/javascript/JSAdapter.java
> @@ -25,7 +25,7 @@
>  
>  package com.sun.script.javascript;
>  
> -import sun.org.mozilla.javascript.internal.*;
> +import sun.org.mozilla.javascript.*;
>  import java.util.*;
>  
>  /**
> --- openjdk/jdk/src/share/classes/com/sun/script/javascript/JavaAdapter.java.orig
> +++ openjdk/jdk/src/share/classes/com/sun/script/javascript/JavaAdapter.java
> @@ -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
> --- openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoClassShutter.java.orig
> +++ openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoClassShutter.java
> @@ -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.
> --- openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoCompiledScript.java.orig
> +++ openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoCompiledScript.java
> @@ -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.
> --- openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java.orig
> +++ openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java
> @@ -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.security.*;
> --- openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngineFactory.java.orig
> +++ openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngineFactory.java
> @@ -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.*;
>  
>  /**
> --- openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoTopLevel.java.orig
> +++ openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoTopLevel.java
> @@ -25,7 +25,7 @@
>  
>  package com.sun.script.javascript;
>  
> -import sun.org.mozilla.javascript.internal.*;
> +import sun.org.mozilla.javascript.*;
>  import java.security.AccessControlContext;
>  import javax.script.*;
>  import java.security.AccessControlContext;
> --- openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoWrapFactory.java.orig
> +++ openjdk/jdk/src/share/classes/com/sun/script/javascript/RhinoWrapFactory.java
> @@ -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


-- 
Andrew :)

Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)

PGP Key: 248BDC07 (https://keys.indymedia.org/)
Fingerprint = EC5A 1F5E C0AD 1D15 8F1F  8F91 3B96 A578 248B DC07
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20120116/67d94274/attachment.bin 


More information about the distro-pkg-dev mailing list