Bug 574872 - Revert clean up to felix and osgi source

This source should be cleaned up first at the
respective repositories where the source is maintained.
That is with the apache felix repo and the Eclipse OSGi
WG specification repo.

Change-Id: I7412fd248c362702016b2cad0da988c5d1fa3e5a
Signed-off-by: Thomas Watson <tjwatson@us.ibm.com>
Reviewed-on: https://git.eclipse.org/r/c/equinox/rt.equinox.framework/+/183379
Tested-by: Equinox Bot <equinox-bot@eclipse.org>
diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/Candidates.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/Candidates.java
index c06eb7e..bfb1b46 100755
--- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/Candidates.java
+++ b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/Candidates.java
@@ -93,12 +93,12 @@
     {
         m_session = session;
         m_candidateSelectorsUnmodifiable = new AtomicBoolean(false);
-        m_dependentMap = new OpenHashMapSet<>();
+        m_dependentMap = new OpenHashMapSet<Capability, Requirement>();
         m_candidateMap = new OpenHashMapList();
-        m_allWrappedHosts = new HashMap<>();
-        m_populateResultCache = new OpenHashMap<>();
-        m_subtitutableMap = new OpenHashMap<>();
-        m_delta = new OpenHashMapSet<>(3);
+        m_allWrappedHosts = new HashMap<Resource, WrappedResource>();
+        m_populateResultCache = new OpenHashMap<Resource, PopulateResult>();
+        m_subtitutableMap = new OpenHashMap<Capability, Requirement>();
+        m_delta = new OpenHashMapSet<Requirement, Capability>(3);
     }
 
     public int getNbResources()
@@ -108,7 +108,7 @@
 
     public Map<Resource, Resource> getRootHosts()
     {
-        Map<Resource, Resource> hosts = new LinkedHashMap<>();
+        Map<Resource, Resource> hosts = new LinkedHashMap<Resource, Resource>();
         for (Resource res : m_session.getMandatoryResources())
         {
             addHost(res, hosts);
@@ -160,8 +160,8 @@
     public void populate(Collection<Resource> resources)
     {
         ResolveContext rc = m_session.getContext();
-        Set<Resource> toRemove = new HashSet<>();
-        LinkedList<Resource> toPopulate = new LinkedList<>(resources);
+        Set<Resource> toRemove = new HashSet<Resource>();
+        LinkedList<Resource> toPopulate = new LinkedList<Resource>(resources);
         while (!toPopulate.isEmpty())
         {
             Resource resource = toPopulate.getFirst();
@@ -170,8 +170,8 @@
             if (result == null)
             {
                 result = new PopulateResult();
-                result.candidates = new OpenHashMap<>();
-                result.remaining = new ArrayList<>(resource.getRequirements(null));
+                result.candidates = new OpenHashMap<Requirement, List<Capability>>();
+                result.remaining = new ArrayList<Requirement>(resource.getRequirements(null));
                 m_populateResultCache.put(resource, result);
             }
             if (result.success || result.error != null)
@@ -206,7 +206,7 @@
                 continue;
             }
             List<Capability> candidates = rc.findProviders(requirement);
-            LinkedList<Resource> newToPopulate = new LinkedList<>();
+            LinkedList<Resource> newToPopulate = new LinkedList<Resource>();
             ResolutionError thrown = processCandidates(newToPopulate, requirement, candidates);
              if (candidates.isEmpty() && !Util.isOptional(requirement))
             {
@@ -270,7 +270,7 @@
         OpenHashMap<String, List<Capability>> exportNames = new OpenHashMap<String, List<Capability>>() {
             @Override
             protected List<Capability> compute(String s) {
-                return new ArrayList<>(1);
+                return new ArrayList<Capability>(1);
             }
         };
         for (Capability packageExport : resource.getCapabilities(null))
@@ -322,7 +322,7 @@
 
     ResolutionError checkSubstitutes()
     {
-        OpenHashMap<Capability, Integer> substituteStatuses = new OpenHashMap<>(m_subtitutableMap.size());
+        OpenHashMap<Capability, Integer> substituteStatuses = new OpenHashMap<Capability, Integer>(m_subtitutableMap.size());
         for (Capability substitutable : m_subtitutableMap.keySet())
         {
             // initialize with unprocessed
@@ -451,7 +451,7 @@
         // Process the candidates, removing any candidates that
         // cannot resolve.
         // TODO: verify the two following statements
-        LinkedList<Resource> toPopulate = new LinkedList<>();
+        LinkedList<Resource> toPopulate = new LinkedList<Resource>();
         ResolutionError rethrow = processCandidates(toPopulate, m_session.getDynamicRequirement(), m_session.getDynamicCandidates());
 
         // Add the dynamic imports candidates.
@@ -509,7 +509,7 @@
             {
                 if (fragmentCands == null)
                 {
-                    fragmentCands = new HashSet<>();
+                    fragmentCands = new HashSet<Capability>();
                 }
                 fragmentCands.add(candCap);
             }
@@ -729,7 +729,7 @@
         // this is a special case where we need to completely replace the CandidateSelector
         // this method should never be called from normal Candidates permutations
         CandidateSelector candidates = m_candidateMap.get(req);
-        List<Capability> remaining = new ArrayList<>(candidates.getRemainingCandidates());
+        List<Capability> remaining = new ArrayList<Capability>(candidates.getRemainingCandidates());
         remaining.removeAll(caps);
         candidates = new CandidateSelector(remaining, m_candidateSelectorsUnmodifiable);
         m_candidateMap.put(req, candidates);
@@ -776,15 +776,15 @@
         //      requirements as well as replacing fragment capabilities
         //      with host's attached fragment capabilities.
         // Steps 1 and 2
-        List<WrappedResource> hostResources = new ArrayList<>();
-        List<Resource> unselectedFragments = new ArrayList<>();
+        List<WrappedResource> hostResources = new ArrayList<WrappedResource>();
+        List<Resource> unselectedFragments = new ArrayList<Resource>();
         for (Entry<Capability, Map<String, Map<Version, List<Requirement>>>> hostEntry : hostFragments.entrySet())
         {
             // Step 1
             Capability hostCap = hostEntry.getKey();
             Map<String, Map<Version, List<Requirement>>> fragments =
                 hostEntry.getValue();
-            List<Resource> selectedFragments = new ArrayList<>();
+            List<Resource> selectedFragments = new ArrayList<Resource>();
             for (Entry<String, Map<Version, List<Requirement>>> fragEntry
                 : fragments.entrySet())
             {
@@ -876,7 +876,7 @@
                     CopyOnWriteSet<Requirement> dependents = m_dependentMap.get(origCap);
                     if (dependents != null)
                     {
-                        dependents = new CopyOnWriteSet<>(dependents);
+                        dependents = new CopyOnWriteSet<Requirement>(dependents);
                         m_dependentMap.put(c, dependents);
                         for (Requirement r : dependents)
                         {
@@ -972,7 +972,7 @@
     private Map<Capability, Map<String, Map<Version, List<Requirement>>>> getHostFragments()
     {
         Map<Capability, Map<String, Map<Version, List<Requirement>>>> hostFragments =
-            new HashMap<>();
+            new HashMap<Capability, Map<String, Map<Version, List<Requirement>>>>();
         for (Entry<Requirement, CandidateSelector> entry : m_candidateMap.fast())
         {
             Requirement req = entry.getKey();
@@ -988,20 +988,20 @@
                     Map<String, Map<Version, List<Requirement>>> fragments = hostFragments.get(cap);
                     if (fragments == null)
                     {
-                        fragments = new HashMap<>();
+                        fragments = new HashMap<String, Map<Version, List<Requirement>>>();
                         hostFragments.put(cap, fragments);
                     }
                     Map<Version, List<Requirement>> fragmentVersions = fragments.get(resSymName);
                     if (fragmentVersions == null)
                     {
                         fragmentVersions =
-                            new TreeMap<>(Collections.reverseOrder());
+                            new TreeMap<Version, List<Requirement>>(Collections.reverseOrder());
                         fragments.put(resSymName, fragmentVersions);
                     }
                     List<Requirement> actual = fragmentVersions.get(resVersion);
                     if (actual == null)
                     {
-                        actual = new ArrayList<>();
+                        actual = new ArrayList<Requirement>();
                         if (resVersion == null)
                             resVersion = new Version(0, 0, 0);
                         fragmentVersions.put(resVersion, actual);
@@ -1030,7 +1030,7 @@
         result.success = false;
         result.error = ex;
         // Remove from dependents.
-        Set<Resource> unresolvedResources = new HashSet<>();
+        Set<Resource> unresolvedResources = new HashSet<Resource>();
         remove(resource, unresolvedResources);
         // Remove dependents that failed as a result of removing revision.
         while (!unresolvedResources.isEmpty())
@@ -1150,7 +1150,7 @@
     public void dump(ResolveContext rc)
     {
         // Create set of all revisions from requirements.
-        Set<Resource> resources = new CopyOnWriteSet<>();
+        Set<Resource> resources = new CopyOnWriteSet<Resource>();
         for (Entry<Requirement, CandidateSelector> entry
             : m_candidateMap.entrySet())
         {
diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java
index d2c02bf..6c9b278 100755
--- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java
+++ b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java
@@ -18,50 +18,19 @@
  */
 package org.apache.felix.resolver;
 
-import java.security.AccessControlContext;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
+import java.security.*;
+import java.util.*;
 import java.util.Map.Entry;
-import java.util.Queue;
-import java.util.Set;
-import java.util.concurrent.CancellationException;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Executor;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.FutureTask;
+import java.util.concurrent.*;
 import java.util.concurrent.atomic.AtomicReference;
+
 import org.apache.felix.resolver.reason.ReasonException;
 import org.apache.felix.resolver.util.ArrayMap;
 import org.apache.felix.resolver.util.CandidateSelector;
 import org.apache.felix.resolver.util.OpenHashMap;
-import org.osgi.framework.namespace.BundleNamespace;
-import org.osgi.framework.namespace.ExecutionEnvironmentNamespace;
-import org.osgi.framework.namespace.HostNamespace;
-import org.osgi.framework.namespace.IdentityNamespace;
-import org.osgi.framework.namespace.PackageNamespace;
-import org.osgi.resource.Capability;
-import org.osgi.resource.Namespace;
-import org.osgi.resource.Requirement;
-import org.osgi.resource.Resource;
-import org.osgi.resource.Wire;
-import org.osgi.resource.Wiring;
-import org.osgi.service.resolver.HostedCapability;
-import org.osgi.service.resolver.ResolutionException;
-import org.osgi.service.resolver.ResolveContext;
-import org.osgi.service.resolver.Resolver;
+import org.osgi.framework.namespace.*;
+import org.osgi.resource.*;
+import org.osgi.service.resolver.*;
 
 public class ResolverImpl implements Resolver
 {
@@ -95,19 +64,19 @@
         private final List<Capability> m_dynamicCandidates;
         // keeps track of valid related resources that we have seen.
         // a null value or TRUE indicate it is valid
-        private Map<Resource, Boolean> m_validRelatedResources = new HashMap<>(0);
+        private Map<Resource, Boolean> m_validRelatedResources = new HashMap<Resource, Boolean>(0);
         // keeps track of related resources for each resource
-        private Map<Resource, Collection<Resource>> m_relatedResources = new HashMap<>(0);
+        private Map<Resource, Collection<Resource>> m_relatedResources = new HashMap<Resource, Collection<Resource>>(0);
         // Holds candidate permutations based on permutating "uses" chains.
         // These permutations are given higher priority.
-        private final List<Candidates> m_usesPermutations = new LinkedList<>();
+        private final List<Candidates> m_usesPermutations = new LinkedList<Candidates>();
         private int m_usesIndex = 0;
         // Holds candidate permutations based on permutating requirement candidates.
         // These permutations represent backtracking on previous decisions.
-        private final List<Candidates> m_importPermutations = new LinkedList<>();
+        private final List<Candidates> m_importPermutations = new LinkedList<Candidates>();
         private int m_importIndex = 0;
         // Holds candidate permutations based on substituted packages
-        private final List<Candidates> m_substPermutations = new LinkedList<>();
+        private final List<Candidates> m_substPermutations = new LinkedList<Candidates>();
         private int m_substituteIndex = 0;
         // Holds candidate permutations based on removing candidates that satisfy
         // multiple cardinality requirements.
@@ -115,11 +84,11 @@
         // removed the offending capabilities
         private Candidates m_multipleCardCandidates = null;
         // The delta is used to detect that we have already processed this particular permutation
-        private final Set<Object> m_processedDeltas = new HashSet<>();
+        private final Set<Object> m_processedDeltas = new HashSet<Object>();
         private final Executor m_executor;
-        private final Set<Requirement> m_mutated = new HashSet<>();
-        private final Set<Requirement> m_sub_mutated = new HashSet<>();
-        private final ConcurrentMap<String, List<String>> m_usesCache = new ConcurrentHashMap<>();
+        private final Set<Requirement> m_mutated = new HashSet<Requirement>();
+        private final Set<Requirement> m_sub_mutated = new HashSet<Requirement>();
+        private final ConcurrentMap<String, List<String>> m_usesCache = new ConcurrentHashMap<String, List<String>>();
         private ResolutionError m_currentError;
         volatile private CancellationException m_isCancelled = null;
 
@@ -145,8 +114,8 @@
                 m_optionalResources = Collections.emptyList();
             } else {
                 // Do not call resolve context yet, onCancel must be called first
-                m_mandatoryResources = new ArrayList<>();
-                m_optionalResources = new ArrayList<>();
+                m_mandatoryResources = new ArrayList<Resource>();
+                m_optionalResources = new ArrayList<Resource>();
             }
         }
 
@@ -356,7 +325,7 @@
 
         public Collection<Resource> getRelatedResources(Resource resource) {
             Collection<Resource> related =  m_relatedResources.get(resource);
-            return related == null ? Collections.emptyList() : related;
+            return related == null ? Collections.<Resource> emptyList() : related;
         }
 
         public void setRelatedResources(Resource resource, Collection<Resource> related) {
@@ -409,7 +378,13 @@
             final ExecutorService executor =
                 System.getSecurityManager() != null ?
                     AccessController.doPrivileged(
-                        (PrivilegedAction<ExecutorService>) () -> Executors.newFixedThreadPool(m_parallelism), m_acc)
+                        new PrivilegedAction<ExecutorService>()
+                        {
+                            public ExecutorService run()
+                            {
+                                return Executors.newFixedThreadPool(m_parallelism);
+                            }
+                        }, m_acc)
                 :
                     Executors.newFixedThreadPool(m_parallelism);
             try
@@ -420,9 +395,11 @@
             {
                 if (System.getSecurityManager() != null)
                 {
-                    AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
-                        executor.shutdownNow();
-                        return null;
+                    AccessController.doPrivileged(new PrivilegedAction<Void>(){
+                        public Void run() {
+                            executor.shutdownNow();
+                            return null;
+                        }
                     }, m_acc);
                 }
                 else
@@ -444,7 +421,7 @@
     }
 
     private Map<Resource, List<Wire>> doResolve(ResolveSession session) throws ResolutionException {
-        Map<Resource, List<Wire>> wireMap = new HashMap<>();
+        Map<Resource, List<Wire>> wireMap = new HashMap<Resource, List<Wire>>();
         boolean retry;
         do
         {
@@ -456,7 +433,7 @@
                     throw session.getCurrentError().toException();
                 }
 
-                Map<Resource, ResolutionError> faultyResources = new HashMap<>();
+                Map<Resource, ResolutionError> faultyResources = new HashMap<Resource, ResolutionError>();
                 Candidates allCandidates = findValidCandidates(session, faultyResources);
                 session.checkForCancel();
 
@@ -540,7 +517,7 @@
                 return;
             }
         } else {
-            List<Resource> toPopulate = new ArrayList<>();
+            List<Resource> toPopulate = new ArrayList<Resource>();
 
             // Populate mandatory resources; since these are mandatory
             // resources, failure throws a resolve exception.
@@ -591,7 +568,7 @@
 
 //allCandidates.dump();
 
-            Map<Resource, ResolutionError> currentFaultyResources = new HashMap<>();
+            Map<Resource, ResolutionError> currentFaultyResources = new HashMap<Resource, ResolutionError>();
 
             session.setCurrentError(
                     checkConsistency(
@@ -638,7 +615,7 @@
         ResolutionError error = null;
         // Check package consistency
         Map<Resource, Object> resultCache =
-                new OpenHashMap<>(resourcePkgMap.size());
+                new OpenHashMap<Resource, Object>(resourcePkgMap.size());
         for (Entry<Resource, Resource> entry : allhosts.entrySet())
         {
             rethrow = checkPackageSpaceConsistency(
@@ -701,7 +678,7 @@
     {
         // Create a list for requirement and proposed candidate
         // capability or actual capability if resource is resolved or not.
-        List<WireCandidate> wireCandidates = new ArrayList<>(256);
+        List<WireCandidate> wireCandidates = new ArrayList<WireCandidate>(256);
         Wiring wiring = session.getContext().getWirings().get(resource);
         if (wiring != null)
         {
@@ -823,8 +800,8 @@
                 resourcePkgs,
                 wire.requirement,
                 wire.capability,
-                new HashSet<>(),
-                new HashSet<>());
+                new HashSet<Capability>(),
+                new HashSet<Resource>());
         }
 
         return resourcePkgs;
@@ -848,7 +825,7 @@
         // we need to calculate its uses constraints again to make sure the new
         // import is consistent with the existing package space.
         Wiring wiring = session.getContext().getWirings().get(resource);
-        Set<Capability> usesCycleMap = new HashSet<>();
+        Set<Capability> usesCycleMap = new HashSet<Capability>();
 
         int size = wireCandidates.size();
         boolean isDynamicImporting = size > 0
@@ -1117,13 +1094,13 @@
                 }
 
                 ArrayMap<Set<Capability>, UsedBlames> usedPkgBlames = currentPkgs.m_usedPkgs.getOrCompute(usedPkgName);
-                List<Blame> newBlames = new ArrayList<>();
+                List<Blame> newBlames = new ArrayList<Blame>();
                 for (Blame blame : candSourceBlames)
                 {
                     List<Requirement> newBlameReqs;
                     if (blame.m_reqs != null)
                     {
-                        newBlameReqs = new ArrayList<>(blameReqs.size() + 1);
+                        newBlameReqs = new ArrayList<Requirement>(blameReqs.size() + 1);
                         newBlameReqs.addAll(blameReqs);
                         // Only add the last requirement in blame chain because
                         // that is the requirement wired to the blamed capability
@@ -1153,9 +1130,9 @@
         final EnhancedExecutor executor = new EnhancedExecutor(session.getExecutor());
 
         // Parallel compute wire candidates
-        final Map<Resource, List<WireCandidate>> allWireCandidates = new ConcurrentHashMap<>();
+        final Map<Resource, List<WireCandidate>> allWireCandidates = new ConcurrentHashMap<Resource, List<WireCandidate>>();
         {
-            final ConcurrentMap<Resource, Runnable> tasks = new ConcurrentHashMap<>(allCandidates.getNbResources());
+            final ConcurrentMap<Resource, Runnable> tasks = new ConcurrentHashMap<Resource, Runnable>(allCandidates.getNbResources());
             class Computer implements Runnable
             {
                 final Resource resource;
@@ -1189,20 +1166,32 @@
         }
 
         // Parallel get all exported packages
-        final OpenHashMap<Resource, Packages> allPackages = new OpenHashMap<>(allCandidates.getNbResources());
+        final OpenHashMap<Resource, Packages> allPackages = new OpenHashMap<Resource, Packages>(allCandidates.getNbResources());
         for (final Resource resource : allWireCandidates.keySet())
         {
             final Packages packages = new Packages(resource);
             allPackages.put(resource, packages);
-            executor.execute(() -> calculateExportedPackages(session, allCandidates, resource,
-                packages.m_exportedPkgs, packages.m_substitePkgs));
+            executor.execute(new Runnable()
+            {
+                public void run()
+                {
+                    calculateExportedPackages(session, allCandidates, resource,
+                        packages.m_exportedPkgs, packages.m_substitePkgs);
+                }
+            });
         }
         executor.await();
 
         // Parallel compute package lists
         for (final Resource resource : allWireCandidates.keySet())
         {
-            executor.execute(() -> getPackages(session, allCandidates, allWireCandidates, allPackages, resource, allPackages.get(resource)));
+            executor.execute(new Runnable()
+            {
+                public void run()
+                {
+                    getPackages(session, allCandidates, allWireCandidates, allPackages, resource, allPackages.get(resource));
+                }
+            });
         }
         executor.await();
 
@@ -1227,7 +1216,13 @@
             final Packages packages = entry.getValue();
             if (packages.m_sources.isEmpty())
             {
-                executor.execute(() -> getPackageSourcesInternal(session, allPackages, resource, packages));
+                executor.execute(new Runnable()
+                {
+                    public void run()
+                    {
+                        getPackageSourcesInternal(session, allPackages, resource, packages);
+                    }
+                });
             }
         }
         executor.await();
@@ -1235,7 +1230,13 @@
         // Parallel compute uses
         for (final Resource resource : allWireCandidates.keySet())
         {
-            executor.execute(() -> computeUses(session, allWireCandidates, allPackages, resource));
+            executor.execute(new Runnable()
+            {
+                public void run()
+                {
+                    computeUses(session, allWireCandidates, allPackages, resource);
+                }
+            });
         }
         executor.await();
 
@@ -1250,7 +1251,7 @@
                 nb++;
             }
         }
-        List<String> uses = new ArrayList<>(nb);
+        List<String> uses = new ArrayList<String>(nb);
         int start = 0;
         while (true) {
             while (start < l) {
@@ -1288,7 +1289,7 @@
         }
         else
         {
-            usedCaps = new HashSet<>();
+            usedCaps = new HashSet<Capability>();
             for (Blame blame : blames)
             {
                 usedCaps.addAll(getPackageSources(blame.m_cap, resourcePkgMap));
@@ -1382,8 +1383,8 @@
         // When several reqs are permuted at the same time this reduces the number of solutions tried.
         // See the method Candidates::canRemoveCandidate for a case where substitutions must be checked
         // because of this code that may permute multiple reqs in on candidates permutation.
-        AtomicReference<Candidates> permRef1 = new AtomicReference<>();
-        AtomicReference<Candidates> permRef2 = new AtomicReference<>();
+        AtomicReference<Candidates> permRef1 = new AtomicReference<Candidates>();
+        AtomicReference<Candidates> permRef2 = new AtomicReference<Candidates>();
         Set<Requirement> mutated = null;
 
         // Check if there are any uses conflicts with exported packages.
@@ -1402,7 +1403,7 @@
                 {
                     mutated = (mutated != null)
                             ? mutated
-                            : new HashSet<>();
+                            : new HashSet<Requirement>();
                     rethrow = permuteUsedBlames(session, rethrow, allCandidates, resource,
                             pkgName, null, usedBlames, permRef1, permRef2, mutated);
                 }
@@ -1436,7 +1437,7 @@
         }
         else
         {
-            allImportRequirePkgs = new OpenHashMap<>(pkgs.m_requiredPkgs.size() + pkgs.m_importedPkgs.size());
+            allImportRequirePkgs = new OpenHashMap<String, List<Blame>>(pkgs.m_requiredPkgs.size() + pkgs.m_importedPkgs.size());
             allImportRequirePkgs.putAll(pkgs.m_requiredPkgs);
             allImportRequirePkgs.putAll(pkgs.m_importedPkgs);
         }
@@ -1457,7 +1458,7 @@
                 {
                     mutated = (mutated != null)
                             ? mutated
-                            : new HashSet<>();// Split packages, need to think how to get a good message for split packages (sigh)
+                            : new HashSet<Requirement>();// Split packages, need to think how to get a good message for split packages (sigh)
                     // For now we just use the first requirement that brings in the package that conflicts
                     Blame requirementBlame = requirementBlames.get(0);
                     rethrow = permuteUsedBlames(session, rethrow, allCandidates, resource, pkgName, requirementBlame, usedBlames, permRef1, permRef2, mutated);
@@ -1733,7 +1734,7 @@
         case 1:
             return isCompatible(currentBlames.get(0), candSources, resourcePkgMap);
         default:
-            Set<Capability> currentSources = new HashSet<>(currentBlames.size());
+            Set<Capability> currentSources = new HashSet<Capability>(currentBlames.size());
             for (Blame currentBlame : currentBlames)
             {
                 Set<Capability> blameSources = getPackageSources(currentBlame.m_cap, resourcePkgMap);
@@ -1750,19 +1751,19 @@
         Resource resource = cap.getResource();
         if(resource == null)
         {
-            return new HashSet<>();
+            return new HashSet<Capability>();
         }
 
         OpenHashMap<Capability, Set<Capability>> sources = resourcePkgMap.get(resource).m_sources;
         if(sources == null)
         {
-            return new HashSet<>();
+            return new HashSet<Capability>();
         }
 
         Set<Capability> packageSources = sources.get(cap);
         if(packageSources == null)
         {
-            return new HashSet<>();
+            return new HashSet<Capability>();
         }
 
         return packageSources;
@@ -1779,7 +1780,7 @@
         @SuppressWarnings("serial")
         OpenHashMap<String, Set<Capability>> pkgs = new OpenHashMap<String, Set<Capability>>(caps.size()) {
             public Set<Capability> compute(String pkgName) {
-                return new HashSet<>();
+                return new HashSet<Capability>();
             }
         };
         Map<Capability, Set<Capability>> sources = packages.m_sources;
@@ -1810,7 +1811,7 @@
                 }
                 else
                 {
-                    sources.put(sourceCap, Collections.emptySet());
+                    sources.put(sourceCap, Collections.<Capability>emptySet());
                 }
             }
         }
@@ -1876,11 +1877,11 @@
         if (!session.getContext().getWirings().containsKey(unwrappedResource)
             && !wireMap.containsKey(unwrappedResource))
         {
-            wireMap.put(unwrappedResource, Collections.emptyList());
+            wireMap.put(unwrappedResource, Collections.<Wire>emptyList());
 
-            List<Wire> packageWires = new ArrayList<>();
-            List<Wire> bundleWires = new ArrayList<>();
-            List<Wire> capabilityWires = new ArrayList<>();
+            List<Wire> packageWires = new ArrayList<Wire>();
+            List<Wire> bundleWires = new ArrayList<Wire>();
+            List<Wire> capabilityWires = new ArrayList<Wire>();
 
             for (Requirement req : resource.getRequirements(null))
             {
@@ -1951,7 +1952,8 @@
                     // creating duplicate non-payload wires if the fragment
                     // is attached to more than one host.
                     List<Wire> fragmentWires = wireMap.get(fragment);
-                    fragmentWires = (fragmentWires == null) ? new ArrayList<>() : fragmentWires;
+                    fragmentWires = (fragmentWires == null)
+                        ? new ArrayList<Wire>() : fragmentWires;
 
                     // Loop through all of the fragment's requirements and create
                     // any necessary wires for non-payload requirements.
@@ -2034,9 +2036,9 @@
         ResolveSession session, Map<Resource,
         List<Wire>> wireMap, Candidates allCandidates)
     {
-        wireMap.put(session.getDynamicHost(), Collections.emptyList());
+        wireMap.put(session.getDynamicHost(), Collections.<Wire>emptyList());
 
-        List<Wire> packageWires = new ArrayList<>();
+        List<Wire> packageWires = new ArrayList<Wire>();
 
         // Get the candidates for the current dynamic requirement.
         // Record the dynamic candidate.
@@ -2126,16 +2128,16 @@
             int nbCaps = resource.getCapabilities(null).size();
             int nbReqs = resource.getRequirements(null).size();
 
-            m_exportedPkgs = new OpenHashMap<>(nbCaps);
-            m_substitePkgs = new OpenHashMap<>(nbCaps);
+            m_exportedPkgs = new OpenHashMap<String, Blame>(nbCaps);
+            m_substitePkgs = new OpenHashMap<String, Blame>(nbCaps);
             m_importedPkgs = new OpenHashMap<String, List<Blame>>(nbReqs) {
                 public List<Blame> compute(String s) {
-                    return new ArrayList<>();
+                    return new ArrayList<Blame>();
                 }
             };
             m_requiredPkgs = new OpenHashMap<String, List<Blame>>(nbReqs) {
                 public List<Blame> compute(String s) {
-                    return new ArrayList<>();
+                    return new ArrayList<Blame>();
                 }
             };
             m_usedPkgs = new OpenHashMap<String, ArrayMap<Set<Capability>, UsedBlames>>(128) {
@@ -2149,7 +2151,7 @@
                     };
                 }
             };
-            m_sources = new OpenHashMap<>(nbCaps);
+            m_sources = new OpenHashMap<Capability, Set<Capability>>(nbCaps);
         }
     }
 
@@ -2198,7 +2200,7 @@
     private static class UsedBlames
     {
         public final Set<Capability> m_caps;
-        public final List<Blame> m_blames = new ArrayList<>();
+        public final List<Blame> m_blames = new ArrayList<ResolverImpl.Blame>();
         private Map<Requirement, Set<Capability>> m_rootCauses;
 
         public UsedBlames(Set<Capability> caps)
@@ -2228,12 +2230,12 @@
                     // capability pulled in is a conflict.
                     if (m_rootCauses == null)
                     {
-                        m_rootCauses = new HashMap<>();
+                        m_rootCauses = new HashMap<Requirement, Set<Capability>>();
                     }
                     Set<Capability> rootCauses = m_rootCauses.get(req);
                     if (rootCauses == null)
                     {
-                        rootCauses = new HashSet<>();
+                        rootCauses = new HashSet<Capability>();
                         m_rootCauses.put(req, rootCauses);
                     }
                     rootCauses.add(matchingRootCause);
@@ -2248,7 +2250,7 @@
                 return Collections.emptySet();
             }
             Set<Capability> result = m_rootCauses.get(req);
-            return result == null ? Collections.emptySet() : result;
+            return result == null ? Collections.<Capability>emptySet() : result;
         }
 
         @Override
@@ -2469,8 +2471,8 @@
     private static class EnhancedExecutor
     {
         private final Executor executor;
-        private final Queue<Future<Void>> awaiting = new ConcurrentLinkedQueue<>();
-        private final AtomicReference<Throwable> throwable = new AtomicReference<>();
+        private final Queue<Future<Void>> awaiting = new ConcurrentLinkedQueue<Future<Void>>();
+        private final AtomicReference<Throwable> throwable = new AtomicReference<Throwable>();
 
         public EnhancedExecutor(Executor executor)
         {
@@ -2479,14 +2481,18 @@
 
         public void execute(final Runnable runnable)
         {
-            FutureTask<Void> task = new FutureTask<>(() -> {
-                try
+            FutureTask<Void> task = new FutureTask<Void>(new Runnable()
+            {
+                public void run()
                 {
-                    runnable.run();
-                }
-                catch (Throwable t)
-                {
-                    throwable.compareAndSet(null, t);
+                    try
+                    {
+                        runnable.run();
+                    }
+                    catch (Throwable t)
+                    {
+                        throwable.compareAndSet(null, t);
+                    }
                 }
             }, (Void) null);
             // must have a happens-first to add the task to awaiting
diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/Util.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/Util.java
index 6478556..973cd5b 100755
--- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/Util.java
+++ b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/Util.java
@@ -99,7 +99,7 @@
 
     public static List<Requirement> getDynamicRequirements(List<Requirement> reqs)
     {
-        List<Requirement> result = new ArrayList<>();
+        List<Requirement> result = new ArrayList<Requirement>();
         if (reqs != null)
         {
             for (Requirement req : reqs)
diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/WrappedCapability.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/WrappedCapability.java
index 8fab2a3..f17969e 100755
--- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/WrappedCapability.java
+++ b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/WrappedCapability.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2012, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2012). All Rights Reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -38,7 +38,7 @@
             // This is done to work around issues with wrapper resources equality tests.
             // Note this is depends on the implementation details of the ResolveContext to actually
             // check the osgi.content capability.
-            Map<String, Object> augmentedDirs = new HashMap<>(m_cap.getAttributes());
+            Map<String, Object> augmentedDirs = new HashMap<String, Object>(m_cap.getAttributes());
             Object wrapperUrl = augmentedDirs.get("url");
             wrapperUrl = "wrapper:" + wrapperUrl;
             augmentedDirs.put("url", wrapperUrl);
diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/WrappedResource.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/WrappedResource.java
index 6b0b31f..c51f74e 100755
--- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/WrappedResource.java
+++ b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/WrappedResource.java
@@ -38,7 +38,7 @@
         m_fragments = fragments;
  
         // Wrap host capabilities.
-        List<Capability> caps = new ArrayList<>();
+        List<Capability> caps = new ArrayList<Capability>();
         for (Capability cap : m_host.getCapabilities(null))
         {
             caps.add(new WrappedCapability(this, cap));
@@ -58,7 +58,7 @@
         m_cachedCapabilities = Collections.unmodifiableList(caps);
 
         // Wrap host requirements.
-        List<Requirement> reqs = new ArrayList<>();
+        List<Requirement> reqs = new ArrayList<Requirement>();
         for (Requirement req : m_host.getRequirements(null))
         {
             reqs.add(new WrappedRequirement(this, req));
@@ -98,7 +98,7 @@
     public List<Capability> getCapabilities(String namespace)
     {
         if (namespace != null) {
-            List<Capability> filtered = new ArrayList<>();
+            List<Capability> filtered = new ArrayList<Capability>();
             for (Capability capability : m_cachedCapabilities) {
                 if (namespace.equals(capability.getNamespace())) {
                     filtered.add(capability);
@@ -112,7 +112,7 @@
     public List<Requirement> getRequirements(String namespace)
     {
         if (namespace != null) {
-            List<Requirement> filtered = new ArrayList<>();
+            List<Requirement> filtered = new ArrayList<Requirement>();
             for (Requirement requirement : m_cachedRequirements) {
                 if (namespace.equals(requirement.getNamespace())) {
                     filtered.add(requirement);
diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/ArrayMap.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/ArrayMap.java
index 16a9217..c61a194 100755
--- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/ArrayMap.java
+++ b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/ArrayMap.java
@@ -132,7 +132,7 @@
             @Override
             public Iterator<Entry<K, V>> iterator() {
                 return new Iterator<Entry<K, V>>() {
-                    FastEntry<K, V> entry = new FastEntry<>();
+                    FastEntry<K, V> entry = new FastEntry<K, V>();
                     int index = 0;
 
                     public boolean hasNext() {
diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/CandidateSelector.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/CandidateSelector.java
index bce3386..de8a5f5 100755
--- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/CandidateSelector.java
+++ b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/CandidateSelector.java
@@ -32,7 +32,7 @@
 
     public CandidateSelector(List<Capability> candidates, AtomicBoolean isUnmodifiable) {
         this.isUnmodifiable = isUnmodifiable;
-        this.unmodifiable = new ArrayList<>(candidates);
+        this.unmodifiable = new ArrayList<Capability>(candidates);
     }
 
     protected CandidateSelector(CandidateSelector candidateSelector) {
diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/OpenHashMap.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/OpenHashMap.java
index f781de3..b27198c 100755
--- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/OpenHashMap.java
+++ b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/OpenHashMap.java
@@ -631,7 +631,11 @@
 
     public Iterable<Map.Entry<K, V>> fast() {
         if (fast == null) {
-            fast = FastEntryIterator::new;
+            fast = new Iterable<Entry<K, V>>() {
+                public Iterator<Entry<K, V>> iterator() {
+                    return new FastEntryIterator();
+                }
+            };
         }
 
         return fast;
diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/OpenHashMapSet.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/OpenHashMapSet.java
index 6d8f7d6..2cdf706 100755
--- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/OpenHashMapSet.java
+++ b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/OpenHashMapSet.java
@@ -35,7 +35,7 @@
         Object[] values = copy.value;
         for (int i = values.length; i-- > 0;) {
             if (values[i] != null) {
-                values[i] = new CopyOnWriteSet<>((CopyOnWriteSet<V>) values[i]);
+                values[i] = new CopyOnWriteSet<V>((CopyOnWriteSet<V>) values[i]);
             }
         }
         return copy;
@@ -43,7 +43,7 @@
 
     @Override
     protected CopyOnWriteSet<V> compute(K key) {
-        return new CopyOnWriteSet<>();
+        return new CopyOnWriteSet<V>();
     }
 
 }
diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/ShadowList.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/ShadowList.java
index 74f81c7..a91ba30 100755
--- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/ShadowList.java
+++ b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/util/ShadowList.java
@@ -49,7 +49,7 @@
 
     private ShadowList(List<Capability> unmodifiable, List<Capability> original, AtomicBoolean isUnmodifiable) {
         super(unmodifiable, isUnmodifiable);
-        m_original = new ArrayList<>(original);
+        m_original = new ArrayList<Capability>(original);
     }
 
     public ShadowList copy() {
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/dto/DTO.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/dto/DTO.java
index 95caf5a..ffcb641 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/dto/DTO.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/dto/DTO.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2012, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2012, 2020). All Rights Reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -53,7 +53,8 @@
 	 */
 	@Override
 	public String toString() {
-		return appendValue(new StringBuilder(), new IdentityHashMap<>(), "#", this).toString();
+		return appendValue(new StringBuilder(),
+				new IdentityHashMap<Object,String>(), "#", this).toString();
 	}
 
 	/**
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdaptPermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdaptPermission.java
index fd002d8..a2bc7aa 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdaptPermission.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdaptPermission.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2010, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2010, 2017). All Rights Reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -437,21 +437,24 @@
 		if (result != null) {
 			return result;
 		}
-		final Map<String, Object> map = new HashMap<>(5);
+		final Map<String, Object> map = new HashMap<String, Object>(5);
 		map.put("adaptClass", getName());
 		if (bundle != null) {
-			AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
-				map.put("id", Long.valueOf(bundle.getBundleId()));
-				map.put("location", bundle.getLocation());
-				String name = bundle.getSymbolicName();
-				if (name != null) {
-					map.put("name", name);
+			AccessController.doPrivileged(new PrivilegedAction<Void>() {
+				@Override
+				public Void run() {
+					map.put("id", Long.valueOf(bundle.getBundleId()));
+					map.put("location", bundle.getLocation());
+					String name = bundle.getSymbolicName();
+					if (name != null) {
+						map.put("name", name);
+					}
+					SignerProperty signer = new SignerProperty(bundle);
+					if (signer.isBundleSigned()) {
+						map.put("signer", signer);
+					}
+					return null;
 				}
-				SignerProperty signer = new SignerProperty(bundle);
-				if (signer.isBundleSigned()) {
-					map.put("signer", signer);
-				}
-				return null;
 			});
 		}
 		return properties = map;
@@ -488,7 +491,7 @@
 	 * Create an empty AdaptPermissions object.
 	 */
 	public AdaptPermissionCollection() {
-		permissions = new HashMap<>();
+		permissions = new HashMap<String, AdaptPermission>();
 		all_allowed = false;
 	}
 
@@ -594,7 +597,7 @@
 	 */
 	@Override
 	public synchronized Enumeration<Permission> elements() {
-		List<Permission> all = new ArrayList<>(permissions.values());
+		List<Permission> all = new ArrayList<Permission>(permissions.values());
 		return Collections.enumeration(all);
 	}
 
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java
index e12085d..7906054 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2000, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2000, 2017). All Rights Reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -220,7 +220,7 @@
 	 * ThreadLocal used to determine if we have recursively called
 	 * getProperties.
 	 */
-	private static final ThreadLocal<Bundle>		recurse						= new ThreadLocal<>();
+	private static final ThreadLocal<Bundle>		recurse						= new ThreadLocal<Bundle>();
 
 	/**
 	 * Creates a new {@code AdminPermission} object that matches all bundles and
@@ -839,19 +839,22 @@
 		}
 		recurse.set(bundle);
 		try {
-			final Map<String, Object> map = new HashMap<>(4);
-			AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
-				map.put("id", Long.valueOf(bundle.getBundleId()));
-				map.put("location", bundle.getLocation());
-				String name = bundle.getSymbolicName();
-				if (name != null) {
-					map.put("name", name);
+			final Map<String, Object> map = new HashMap<String, Object>(4);
+			AccessController.doPrivileged(new PrivilegedAction<Void>() {
+				@Override
+				public Void run() {
+					map.put("id", Long.valueOf(bundle.getBundleId()));
+					map.put("location", bundle.getLocation());
+					String name = bundle.getSymbolicName();
+					if (name != null) {
+						map.put("name", name);
+					}
+					SignerProperty signer = new SignerProperty(bundle);
+					if (signer.isBundleSigned()) {
+						map.put("signer", signer);
+					}
+					return null;
 				}
-				SignerProperty signer = new SignerProperty(bundle);
-				if (signer.isBundleSigned()) {
-					map.put("signer", signer);
-				}
-				return null;
 			});
 			return properties = map;
 		} finally {
@@ -885,7 +888,7 @@
 	 * 
 	 */
 	public AdminPermissionCollection() {
-		permissions = new HashMap<>();
+		permissions = new HashMap<String, AdminPermission>();
 	}
 
 	/**
@@ -988,7 +991,7 @@
 	 */
 	@Override
 	public synchronized Enumeration<Permission> elements() {
-		List<Permission> all = new ArrayList<>(permissions.values());
+		List<Permission> all = new ArrayList<Permission>(permissions.values());
 		return Collections.enumeration(all);
 	}
 
@@ -996,7 +999,7 @@
 	private static final ObjectStreamField[]	serialPersistentFields	= {new ObjectStreamField("permissions", Hashtable.class), new ObjectStreamField("all_allowed", Boolean.TYPE)};
 
 	private synchronized void writeObject(ObjectOutputStream out) throws IOException {
-		Hashtable<String, AdminPermission> hashtable = new Hashtable<>(permissions);
+		Hashtable<String, AdminPermission> hashtable = new Hashtable<String, AdminPermission>(permissions);
 		ObjectOutputStream.PutField pfields = out.putFields();
 		pfields.put("permissions", hashtable);
 		pfields.put("all_allowed", all_allowed);
@@ -1007,7 +1010,7 @@
 		ObjectInputStream.GetField gfields = in.readFields();
 		@SuppressWarnings("unchecked")
 		Hashtable<String, AdminPermission> hashtable = (Hashtable<String, AdminPermission>) gfields.get("permissions", null);
-		permissions = new HashMap<>(hashtable);
+		permissions = new HashMap<String, AdminPermission>(hashtable);
 		all_allowed = gfields.get("all_allowed", false);
 	}
 }
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundlePermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundlePermission.java
index a0bdb5b..7a45b1c 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundlePermission.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundlePermission.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2004, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2004, 2019). All Rights Reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -453,7 +453,7 @@
 	 * 
 	 */
 	public BundlePermissionCollection() {
-		permissions = new HashMap<>();
+		permissions = new HashMap<String, BundlePermission>();
 		all_allowed = false;
 	}
 
@@ -568,7 +568,7 @@
 	 */
 	@Override
 	public synchronized Enumeration<Permission> elements() {
-		List<Permission> all = new ArrayList<>(permissions.values());
+		List<Permission> all = new ArrayList<Permission>(permissions.values());
 		return Collections.enumeration(all);
 	}
 
@@ -576,7 +576,7 @@
 	private static final ObjectStreamField[]	serialPersistentFields	= {new ObjectStreamField("permissions", Hashtable.class), new ObjectStreamField("all_allowed", Boolean.TYPE)};
 
 	private synchronized void writeObject(ObjectOutputStream out) throws IOException {
-		Hashtable<String, BundlePermission> hashtable = new Hashtable<>(permissions);
+		Hashtable<String, BundlePermission> hashtable = new Hashtable<String, BundlePermission>(permissions);
 		ObjectOutputStream.PutField pfields = out.putFields();
 		pfields.put("permissions", hashtable);
 		pfields.put("all_allowed", all_allowed);
@@ -587,7 +587,7 @@
 		ObjectInputStream.GetField gfields = in.readFields();
 		@SuppressWarnings("unchecked")
 		Hashtable<String, BundlePermission> hashtable = (Hashtable<String, BundlePermission>) gfields.get("permissions", null);
-		permissions = new HashMap<>(hashtable);
+		permissions = new HashMap<String, BundlePermission>(hashtable);
 		all_allowed = gfields.get("all_allowed", false);
 	}
 }
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/CapabilityPermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/CapabilityPermission.java
index facdb28..c7bae50 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/CapabilityPermission.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/CapabilityPermission.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2000, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2000, 2019). All Rights Reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -184,7 +184,7 @@
 		if (providingBundle == null) {
 			throw new IllegalArgumentException("bundle must not be null");
 		}
-		this.attributes = new HashMap<>(attributes);
+		this.attributes = new HashMap<String, Object>(attributes);
 		this.bundle = providingBundle;
 		if ((action_mask & ACTION_ALL) != ACTION_REQUIRE) {
 			throw new IllegalArgumentException("invalid action string");
@@ -499,23 +499,26 @@
 		if (result != null) {
 			return result;
 		}
-		final Map<String, Object> props = new HashMap<>(5);
+		final Map<String, Object> props = new HashMap<String, Object>(5);
 		props.put("capability.namespace", getName());
 		if (bundle == null) {
 			return properties = props;
 		}
-		AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
-			props.put("id", Long.valueOf(bundle.getBundleId()));
-			props.put("location", bundle.getLocation());
-			String name = bundle.getSymbolicName();
-			if (name != null) {
-				props.put("name", name);
+		AccessController.doPrivileged(new PrivilegedAction<Void>() {
+			@Override
+			public Void run() {
+				props.put("id", Long.valueOf(bundle.getBundleId()));
+				props.put("location", bundle.getLocation());
+				String name = bundle.getSymbolicName();
+				if (name != null) {
+					props.put("name", name);
+				}
+				SignerProperty signer = new SignerProperty(bundle);
+				if (signer.isBundleSigned()) {
+					props.put("signer", signer);
+				}
+				return null;
 			}
-			SignerProperty signer = new SignerProperty(bundle);
-			if (signer.isBundleSigned()) {
-				props.put("signer", signer);
-			}
-			return null;
 		});
 		return properties = new Properties(props, attributes);
 	}
@@ -552,7 +555,7 @@
 			if (entries != null) {
 				return entries;
 			}
-			Set<Map.Entry<String, Object>> all = new HashSet<>(attributes.size() + properties.size());
+			Set<Map.Entry<String, Object>> all = new HashSet<Map.Entry<String, Object>>(attributes.size() + properties.size());
 			all.addAll(attributes.entrySet());
 			all.addAll(properties.entrySet());
 			return entries = Collections.unmodifiableSet(all);
@@ -598,7 +601,7 @@
 	 * Creates an empty CapabilityPermissionCollection object.
 	 */
 	public CapabilityPermissionCollection() {
-		permissions = new HashMap<>();
+		permissions = new HashMap<String, CapabilityPermission>();
 		all_allowed = false;
 	}
 
@@ -633,7 +636,7 @@
 			if (f != null) {
 				pc = filterPermissions;
 				if (pc == null) {
-					filterPermissions = pc = new HashMap<>();
+					filterPermissions = pc = new HashMap<String, CapabilityPermission>();
 				}
 			} else {
 				pc = permissions;
@@ -749,7 +752,7 @@
 	 */
 	@Override
 	public synchronized Enumeration<Permission> elements() {
-		List<Permission> all = new ArrayList<>(permissions.values());
+		List<Permission> all = new ArrayList<Permission>(permissions.values());
 		Map<String, CapabilityPermission> pc = filterPermissions;
 		if (pc != null) {
 			all.addAll(pc.values());
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java
index 76402ec..587b532 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2005, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2005, 2020). All Rights Reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -373,7 +373,7 @@
 			if (pattern == null) {
 				throw new IllegalArgumentException("The pattern must not be null.");
 			}
-			List<Object> parsed = new ArrayList<>();
+			List<Object> parsed = new ArrayList<Object>();
 			final int length = pattern.length();
 			char c = ';'; // start with semi-colon to detect empty pattern
 			for (int startIndex = skipSpaces(pattern, 0); startIndex < length;) {
@@ -415,7 +415,7 @@
 				if (dn.equals(STAR_WILDCARD) || dn.equals(MINUS_WILDCARD)) {
 					continue;
 				}
-				List<Object> rdns = new ArrayList<>();
+				List<Object> rdns = new ArrayList<Object>();
 				if (dn.charAt(0) == '*') {
 					int index = skipSpaces(dn, 1);
 					if (dn.charAt(index) != ',') {
@@ -437,13 +437,13 @@
 			if (chain == null) {
 				throw new IllegalArgumentException("DN chain must not be null.");
 			}
-			List<Object> result = new ArrayList<>(chain.size());
+			List<Object> result = new ArrayList<Object>(chain.size());
 			// Now we parse is a list of strings, lets make List of rdn out
 			// of them
 			for (String dn : chain) {
 				dn = new X500Principal(dn).getName(X500Principal.CANONICAL);
 				// Now dn is a nice CANONICAL DN
-				List<Object> rdns = new ArrayList<>();
+				List<Object> rdns = new ArrayList<Object>();
 				parseDN(dn, rdns);
 				result.add(rdns);
 			}
@@ -475,7 +475,7 @@
 		private static void parseDN(String dn, List<Object> rdn) {
 			int startIndex = 0;
 			char c = '\0';
-			List<String> nameValues = new ArrayList<>();
+			List<String> nameValues = new ArrayList<String>();
 			while (startIndex < dn.length()) {
 				int endIndex;
 				for (endIndex = startIndex; endIndex < dn.length(); endIndex++) {
@@ -494,7 +494,7 @@
 				if (c != '+') {
 					rdn.add(nameValues);
 					if (endIndex != dn.length()) {
-						nameValues = new ArrayList<>();
+						nameValues = new ArrayList<String>();
 					} else {
 						nameValues = null;
 					}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/PackagePermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/PackagePermission.java
index 0d6c370..cc8cd62 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/PackagePermission.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/PackagePermission.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2000, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2000, 2019). All Rights Reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -538,21 +538,24 @@
 		if (result != null) {
 			return result;
 		}
-		final Map<String, Object> map = new HashMap<>(5);
+		final Map<String, Object> map = new HashMap<String, Object>(5);
 		map.put("package.name", getName());
 		if (bundle != null) {
-			AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
-				map.put("id", Long.valueOf(bundle.getBundleId()));
-				map.put("location", bundle.getLocation());
-				String name = bundle.getSymbolicName();
-				if (name != null) {
-					map.put("name", name);
+			AccessController.doPrivileged(new PrivilegedAction<Void>() {
+				@Override
+				public Void run() {
+					map.put("id", Long.valueOf(bundle.getBundleId()));
+					map.put("location", bundle.getLocation());
+					String name = bundle.getSymbolicName();
+					if (name != null) {
+						map.put("name", name);
+					}
+					SignerProperty signer = new SignerProperty(bundle);
+					if (signer.isBundleSigned()) {
+						map.put("signer", signer);
+					}
+					return null;
 				}
-				SignerProperty signer = new SignerProperty(bundle);
-				if (signer.isBundleSigned()) {
-					map.put("signer", signer);
-				}
-				return null;
 			});
 		}
 		return properties = map;
@@ -596,7 +599,7 @@
 	 * Create an empty PackagePermissions object.
 	 */
 	public PackagePermissionCollection() {
-		permissions = new HashMap<>();
+		permissions = new HashMap<String, PackagePermission>();
 		all_allowed = false;
 	}
 
@@ -632,7 +635,7 @@
 			if (f != null) {
 				pc = filterPermissions;
 				if (pc == null) {
-					filterPermissions = pc = new HashMap<>();
+					filterPermissions = pc = new HashMap<String, PackagePermission>();
 				}
 			} else {
 				pc = permissions;
@@ -748,7 +751,7 @@
 	 */
 	@Override
 	public synchronized Enumeration<Permission> elements() {
-		List<Permission> all = new ArrayList<>(permissions.values());
+		List<Permission> all = new ArrayList<Permission>(permissions.values());
 		Map<String, PackagePermission> pc = filterPermissions;
 		if (pc != null) {
 			all.addAll(pc.values());
@@ -761,7 +764,7 @@
 			new ObjectStreamField("filterPermissions", HashMap.class)	};
 
 	private synchronized void writeObject(ObjectOutputStream out) throws IOException {
-		Hashtable<String, PackagePermission> hashtable = new Hashtable<>(permissions);
+		Hashtable<String, PackagePermission> hashtable = new Hashtable<String, PackagePermission>(permissions);
 		ObjectOutputStream.PutField pfields = out.putFields();
 		pfields.put("permissions", hashtable);
 		pfields.put("all_allowed", all_allowed);
@@ -773,7 +776,7 @@
 		ObjectInputStream.GetField gfields = in.readFields();
 		@SuppressWarnings("unchecked")
 		Hashtable<String, PackagePermission> hashtable = (Hashtable<String, PackagePermission>) gfields.get("permissions", null);
-		permissions = new HashMap<>(hashtable);
+		permissions = new HashMap<String, PackagePermission>(hashtable);
 		all_allowed = gfields.get("all_allowed", false);
 		@SuppressWarnings("unchecked")
 		HashMap<String, PackagePermission> fp = (HashMap<String, PackagePermission>) gfields.get("filterPermissions", null);
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServicePermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServicePermission.java
index 5bb32bf..a6b5252 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServicePermission.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServicePermission.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2000, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2000, 2019). All Rights Reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -552,25 +552,28 @@
 			return result;
 		}
 		if (service == null) {
-			result = new HashMap<>(1);
+			result = new HashMap<String, Object>(1);
 			result.put(Constants.OBJECTCLASS, new String[] {getName()});
 			return properties = result;
 		}
-		final Map<String, Object> props = new HashMap<>(4);
+		final Map<String, Object> props = new HashMap<String, Object>(4);
 		final Bundle bundle = service.getBundle();
 		if (bundle != null) {
-			AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
-				props.put("id", Long.valueOf(bundle.getBundleId()));
-				props.put("location", bundle.getLocation());
-				String name = bundle.getSymbolicName();
-				if (name != null) {
-					props.put("name", name);
+			AccessController.doPrivileged(new PrivilegedAction<Void>() {
+				@Override
+				public Void run() {
+					props.put("id", Long.valueOf(bundle.getBundleId()));
+					props.put("location", bundle.getLocation());
+					String name = bundle.getSymbolicName();
+					if (name != null) {
+						props.put("name", name);
+					}
+					SignerProperty signer = new SignerProperty(bundle);
+					if (signer.isBundleSigned()) {
+						props.put("signer", signer);
+					}
+					return null;
 				}
-				SignerProperty signer = new SignerProperty(bundle);
-				if (signer.isBundleSigned()) {
-					props.put("signer", signer);
-				}
-				return null;
 			});
 		}
 		return properties = new Properties(props, service);
@@ -608,7 +611,7 @@
 			if (entries != null) {
 				return entries;
 			}
-			Set<Map.Entry<String, Object>> all = new HashSet<>(properties.entrySet());
+			Set<Map.Entry<String, Object>> all = new HashSet<Map.Entry<String, Object>>(properties.entrySet());
 			add: for (String key : service.getPropertyKeys()) {
 				for (String k : properties.keySet()) {
 					if (key.equalsIgnoreCase(k)) {
@@ -712,7 +715,7 @@
 	 * Creates an empty ServicePermissions object.
 	 */
 	public ServicePermissionCollection() {
-		permissions = new HashMap<>();
+		permissions = new HashMap<String, ServicePermission>();
 		all_allowed = false;
 	}
 
@@ -747,7 +750,7 @@
 			if (f != null) {
 				pc = filterPermissions;
 				if (pc == null) {
-					filterPermissions = pc = new HashMap<>();
+					filterPermissions = pc = new HashMap<String, ServicePermission>();
 				}
 			} else {
 				pc = permissions;
@@ -889,7 +892,7 @@
 	 */
 	@Override
 	public synchronized Enumeration<Permission> elements() {
-		List<Permission> all = new ArrayList<>(permissions.values());
+		List<Permission> all = new ArrayList<Permission>(permissions.values());
 		Map<String, ServicePermission> pc = filterPermissions;
 		if (pc != null) {
 			all.addAll(pc.values());
@@ -902,7 +905,7 @@
 			new ObjectStreamField("filterPermissions", HashMap.class)	};
 
 	private synchronized void writeObject(ObjectOutputStream out) throws IOException {
-		Hashtable<String, ServicePermission> hashtable = new Hashtable<>(permissions);
+		Hashtable<String, ServicePermission> hashtable = new Hashtable<String, ServicePermission>(permissions);
 		ObjectOutputStream.PutField pfields = out.putFields();
 		pfields.put("permissions", hashtable);
 		pfields.put("all_allowed", all_allowed);
@@ -914,7 +917,7 @@
 		ObjectInputStream.GetField gfields = in.readFields();
 		@SuppressWarnings("unchecked")
 		Hashtable<String, ServicePermission> hashtable = (Hashtable<String, ServicePermission>) gfields.get("permissions", null);
-		permissions = new HashMap<>(hashtable);
+		permissions = new HashMap<String, ServicePermission>(hashtable);
 		all_allowed = gfields.get("all_allowed", false);
 		@SuppressWarnings("unchecked")
 		HashMap<String, ServicePermission> fp = (HashMap<String, ServicePermission>) gfields.get("filterPermissions", null);
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/SignerProperty.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/SignerProperty.java
index 792b91d..53dec4a 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/SignerProperty.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/SignerProperty.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2009, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2009, 2013). All Rights Reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -73,7 +73,7 @@
 		String matchPattern = bundle != null ? other.pattern : pattern;
 		Map<X509Certificate, List<X509Certificate>> signers = matchBundle.getSignerCertificates(Bundle.SIGNERS_TRUSTED);
 		for (List<X509Certificate> signerCerts : signers.values()) {
-			List<String> dnChain = new ArrayList<>(signerCerts.size());
+			List<String> dnChain = new ArrayList<String>(signerCerts.size());
 			for (X509Certificate signerCert : signerCerts) {
 				dnChain.add(signerCert.getSubjectDN().getName());
 			}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleLocationCondition.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleLocationCondition.java
index f46779f..8a79c14 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleLocationCondition.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleLocationCondition.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2005, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2005, 2015). All Rights Reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -66,7 +66,12 @@
 		String[] args = info.getArgs();
 		if (args.length != 1 && args.length != 2)
 			throw new IllegalArgumentException("Illegal number of args: " + args.length);
-		String bundleLocation = AccessController.doPrivileged((PrivilegedAction<String>) () -> bundle.getLocation());
+		String bundleLocation = AccessController.doPrivileged(new PrivilegedAction<String>() {
+			@Override
+			public String run() {
+				return bundle.getLocation();
+			}
+		});
 		Filter filter = null;
 		try {
 			filter = FrameworkUtil.createFilter("(location=" + escapeLocation(args[0]) + ")");
@@ -74,7 +79,7 @@
 			// this should never happen, but just in case
 			throw new RuntimeException("Invalid filter: " + e.getFilter(), e);
 		}
-		Dictionary<String, String> matchProps = new Hashtable<>(2);
+		Dictionary<String, String> matchProps = new Hashtable<String, String>(2);
 		matchProps.put("location", bundleLocation);
 		boolean negate = (args.length == 2) ? "!".equals(args[1]) : false;
 		return (negate ^ filter.match(matchProps)) ? Condition.TRUE : Condition.FALSE;
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleSignerCondition.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleSignerCondition.java
index 2941be7..9bb17ec 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleSignerCondition.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleSignerCondition.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2005, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2005, 2013). All Rights Reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -81,7 +81,7 @@
 		Map<X509Certificate, List<X509Certificate>> signers = bundle.getSignerCertificates(Bundle.SIGNERS_TRUSTED);
 		boolean match = false;
 		for (List<X509Certificate> signerCerts : signers.values()) {
-			List<String> dnChain = new ArrayList<>(signerCerts.size());
+			List<String> dnChain = new ArrayList<String>(signerCerts.size());
 			for (X509Certificate signer : signerCerts) {
 				dnChain.add(signer.getSubjectDN().getName());
 			}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionInfo.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionInfo.java
index fa529a8..f96821b 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionInfo.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionInfo.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2004, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2004, 2016). All Rights Reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -123,7 +123,7 @@
 			}
 
 			/* type may be followed by args which are quoted and encoded */
-			List<String> argsList = new ArrayList<>();
+			List<String> argsList = new ArrayList<String>();
 			while (encoded[pos] == '"') {
 				pos++;
 				begin = pos;
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/resolver/ResolutionException.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/resolver/ResolutionException.java
index d9df44a..2bcc0ac 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/resolver/ResolutionException.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/resolver/ResolutionException.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2011, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2011, 2013). All Rights Reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -57,7 +57,7 @@
 		if ((unresolvedRequirements == null) || unresolvedRequirements.isEmpty()) {
 			this.unresolvedRequirements = null;
 		} else {
-			this.unresolvedRequirements = Collections.unmodifiableCollection(new ArrayList<>(unresolvedRequirements));
+			this.unresolvedRequirements = Collections.unmodifiableCollection(new ArrayList<Requirement>(unresolvedRequirements));
 		}
 	}
 
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/resolver/ResolveContext.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/resolver/ResolveContext.java
index db9de5a..5a3d32e 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/resolver/ResolveContext.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/resolver/ResolveContext.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2011, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2011, 2017). All Rights Reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -289,7 +289,7 @@
 	 */
 	public List<Wire> getSubstitutionWires(Wiring wiring) {
 		// Keep track of the declared capability package names
-		Set<String> exportNames = new HashSet<>();
+		Set<String> exportNames = new HashSet<String>();
 
 		// Add packages declared as provided by the wiring host
 		for (Capability cap : wiring.getResource().getCapabilities(null)) {
@@ -316,7 +316,7 @@
 
 		// collect the package wires that substitute one of the declared
 		// export package names
-		List<Wire> substitutionWires = new ArrayList<>();
+		List<Wire> substitutionWires = new ArrayList<Wire>();
 		for (Wire wire : wiring.getRequiredResourceWires(null)) {
 			if (PackageNamespace.PACKAGE_NAMESPACE
 					.equals(wire.getCapability().getNamespace())) {
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/AbstractTracked.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/AbstractTracked.java
index 0773bc0..5988d79 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/AbstractTracked.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/AbstractTracked.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2007, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2007, 2013). All Rights Reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -103,10 +103,10 @@
 	 * AbstractTracked constructor.
 	 */
 	AbstractTracked() {
-		tracked = new HashMap<>();
+		tracked = new HashMap<S, T>();
 		trackingCount = 0;
-		adding = new ArrayList<>(6);
-		initial = new LinkedList<>();
+		adding = new ArrayList<S>(6);
+		initial = new LinkedList<S>();
 		closed = false;
 	}
 
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTracker.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTracker.java
index 1b52ad2..ac16c21 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTracker.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTracker.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2007, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2007, 2017). All Rights Reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -383,7 +383,7 @@
 	 * @since 1.5
 	 */
 	public Map<Bundle, T> getTracked() {
-		Map<Bundle, T> map = new HashMap<>();
+		Map<Bundle, T> map = new HashMap<Bundle, T>();
 		final Tracked t = tracked();
 		if (t == null) { /* if BundleTracker is not open */
 			return map;
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java
index fcf430c..3c9016c 100644
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java
+++ b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2000, 2021). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2000, 2017). All Rights Reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -782,7 +782,7 @@
 	 * @since 1.5
 	 */
 	public SortedMap<ServiceReference<S>, T> getTracked() {
-		SortedMap<ServiceReference<S>, T> map = new TreeMap<>(Collections.reverseOrder());
+		SortedMap<ServiceReference<S>, T> map = new TreeMap<ServiceReference<S>, T>(Collections.reverseOrder());
 		final Tracked t = tracked();
 		if (t == null) { /* if ServiceTracker is not open */
 			return map;