Bug 489984 - Remove redundant type argument information in
eclipse.platform.runtime

This one is for org.eclipse.e4.core.d

Change-Id: Idc22da7d1256ce06e08c150268371d073f995e02
diff --git a/bundles/org.eclipse.e4.core.di/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.e4.core.di/.settings/org.eclipse.jdt.core.prefs
index f67d59b..54ee96e 100644
--- a/bundles/org.eclipse.e4.core.di/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.e4.core.di/.settings/org.eclipse.jdt.core.prefs
@@ -9,8 +9,11 @@
 org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
 org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
 org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
 org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
 org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
@@ -71,19 +74,21 @@
 org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
 org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
 org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
 org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
 org.eclipse.jdt.core.compiler.problem.nullReference=warning
 org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
 org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
 org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
 org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
 org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
 org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
 org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
 org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
 org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
 org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=error
 org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
 org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
 org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
diff --git a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/di/suppliers/PrimaryObjectSupplier.java b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/di/suppliers/PrimaryObjectSupplier.java
index c9fcf6f..d74f27e 100644
--- a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/di/suppliers/PrimaryObjectSupplier.java
+++ b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/di/suppliers/PrimaryObjectSupplier.java
@@ -68,6 +68,6 @@
 	 * @return a new weak reference to the object
 	 */
 	public WeakReference<Object> makeReference(Object object) {
-		return new WeakReference<Object>(object);
+		return new WeakReference<>(object);
 	}
 }
diff --git a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java
index 2074f42..544ed9e 100644
--- a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java
+++ b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java
@@ -96,19 +96,19 @@
 	final private static Short DEFAULT_SHORT = new Short((short) 0);
 	final private static Byte DEFAULT_BYTE = new Byte((byte) 0);
 
-	private Map<PrimaryObjectSupplier, List<WeakReference<?>>> injectedObjects = new HashMap<PrimaryObjectSupplier, List<WeakReference<?>>>();
-	private Set<WeakReference<Class<?>>> injectedClasses = new HashSet<WeakReference<Class<?>>>();
-	private HashMap<Class<?>, Object> singletonCache = new HashMap<Class<?>, Object>();
-	private Map<Class<?>, Set<Binding>> bindings = new HashMap<Class<?>, Set<Binding>>();
+	private Map<PrimaryObjectSupplier, List<WeakReference<?>>> injectedObjects = new HashMap<>();
+	private Set<WeakReference<Class<?>>> injectedClasses = new HashSet<>();
+	private HashMap<Class<?>, Object> singletonCache = new HashMap<>();
+	private Map<Class<?>, Set<Binding>> bindings = new HashMap<>();
 	private Map<Class<? extends Annotation>, Map<AnnotatedElement, Boolean>> annotationsPresent = new HashMap<>();
 
 	// Performance improvement:
-	private Map<Class<?>, Method[]> methodsCache = new WeakHashMap<Class<?>, Method[]>();
-	private Map<Class<?>, Field[]> fieldsCache = new WeakHashMap<Class<?>, Field[]>();
-	private Map<Class<?>, Constructor<?>[]> constructorsCache = new WeakHashMap<Class<?>, Constructor<?>[]>();
-	private Map<Class<?>, Map<Method, Boolean>> isOverriddenCache = new WeakHashMap<Class<?>, Map<Method, Boolean>>();
+	private Map<Class<?>, Method[]> methodsCache = new WeakHashMap<>();
+	private Map<Class<?>, Field[]> fieldsCache = new WeakHashMap<>();
+	private Map<Class<?>, Constructor<?>[]> constructorsCache = new WeakHashMap<>();
+	private Map<Class<?>, Map<Method, Boolean>> isOverriddenCache = new WeakHashMap<>();
 
-	private Set<Class<?>> classesBeingCreated = new HashSet<Class<?>>(5);
+	private Set<Class<?>> classesBeingCreated = new HashSet<>(5);
 
 	private PrimaryObjectSupplier defaultSupplier;
 
@@ -123,7 +123,7 @@
 
 	public void inject(Object object, PrimaryObjectSupplier objectSupplier, PrimaryObjectSupplier tempSupplier) {
 		// Two stages: first, go and collect {requestor, descriptor[] }
-		ArrayList<Requestor<?>> requestors = new ArrayList<Requestor<?>>();
+		ArrayList<Requestor<?>> requestors = new ArrayList<>();
 		processClassHierarchy(object, objectSupplier, tempSupplier, true /* track */, true /* normal order */, requestors);
 
 		// if we are not establishing any links to the injected object (nothing to inject,
@@ -160,7 +160,7 @@
 		synchronized (injectedObjects) {
 			List<WeakReference<?>> list;
 			if (!injectedObjects.containsKey(objectSupplier)) {
-				list = new ArrayList<WeakReference<?>>();
+				list = new ArrayList<>();
 				injectedObjects.put(objectSupplier, list);
 			} else
 				list = injectedObjects.get(objectSupplier);
@@ -168,7 +168,7 @@
 				if (object == ref.get())
 					return; // we already have it
 			}
-			list.add(new WeakReference<Object>(object));
+			list.add(new WeakReference<>(object));
 		}
 	}
 
@@ -211,7 +211,7 @@
 				return; // not injected at this time
 			processAnnotated(PreDestroy.class, object, object.getClass(), objectSupplier, null, new ArrayList<Class<?>>(5));
 
-			ArrayList<Requestor<?>> requestors = new ArrayList<Requestor<?>>();
+			ArrayList<Requestor<?>> requestors = new ArrayList<>();
 			processClassHierarchy(object, objectSupplier, null, true /* track */, false /* inverse order */, requestors);
 
 			for (Requestor<?> requestor : requestors) {
@@ -342,7 +342,7 @@
 
 			Constructor<?>[] constructors = getDeclaredConstructors(clazz);
 			// Sort the constructors by descending number of constructor arguments
-			ArrayList<Constructor<?>> sortedConstructors = new ArrayList<Constructor<?>>(constructors.length);
+			ArrayList<Constructor<?>> sortedConstructors = new ArrayList<>(constructors.length);
 			for (Constructor<?> constructor : constructors)
 				sortedConstructors.add(constructor);
 			Collections.sort(sortedConstructors, new Comparator<Constructor<?>>() {
@@ -705,7 +705,7 @@
 			if (isOverridden == null) {
 				isOverridden = isOverridden(method, classHierarchy);
 				if (methodMap == null) {
-					methodMap = new WeakHashMap<Method, Boolean>();
+					methodMap = new WeakHashMap<>();
 					isOverriddenCache.put(originalClass, methodMap);
 				}
 				methodMap.put(method, isOverridden);
@@ -866,7 +866,7 @@
 				}
 				collection.add(internalBinding);
 			} else {
-				Set<Binding> collection = new HashSet<Binding>(1);
+				Set<Binding> collection = new HashSet<>(1);
 				collection.add(internalBinding);
 				bindings.put(clazz, collection);
 			}
diff --git a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/MethodRequestor.java b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/MethodRequestor.java
index 28b2895..20fb37c 100644
--- a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/MethodRequestor.java
+++ b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/MethodRequestor.java
@@ -26,7 +26,7 @@
 	/**
 	 * The parameters annotation cache.  Having a *static* map is valuable as it changes the hit rate from about 60% to about 90%.
 	 */
-	private static Map<Method, Annotation[][]> annotationCache = new WeakHashMap<Method, Annotation[][]>();
+	private static Map<Method, Annotation[][]> annotationCache = new WeakHashMap<>();
 
 	public MethodRequestor(Method method, IInjector injector, PrimaryObjectSupplier primarySupplier, PrimaryObjectSupplier tempSupplier, Object requestingObject, boolean track) {
 		super(method, injector, primarySupplier, tempSupplier, requestingObject, track);
diff --git a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/ObjectDescriptor.java b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/ObjectDescriptor.java
index 3483d8f..0351372 100644
--- a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/ObjectDescriptor.java
+++ b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/ObjectDescriptor.java
@@ -92,7 +92,7 @@
 		if (allAnnotations.length == 0)
 			return null;
 		Annotation[] result;
-		List<Annotation> qualifiers = new ArrayList<Annotation>();
+		List<Annotation> qualifiers = new ArrayList<>();
 		for (Annotation annotation : allAnnotations) {
 			if (annotation.annotationType().isAnnotationPresent(Qualifier.class))
 				qualifiers.add(annotation);
diff --git a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/Requestor.java b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/Requestor.java
index cba3b11..519e3e3 100644
--- a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/Requestor.java
+++ b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/Requestor.java
@@ -59,7 +59,7 @@
 			if (primarySupplier != null)
 				objectRef = primarySupplier.makeReference(requestingObject);
 			else
-				objectRef = new WeakReference<Object>(requestingObject);
+				objectRef = new WeakReference<>(requestingObject);
 			objectHashcode = requestingObject.hashCode();
 		} else {
 			objectRef = null;
diff --git a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/WeakRefList.java b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/WeakRefList.java
index 6c9af6f..f32ac9a 100644
--- a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/WeakRefList.java
+++ b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/WeakRefList.java
@@ -21,7 +21,7 @@
 	private List<WeakReference<?>> userObjects;
 
 	public WeakRefList(int initialSize) {
-		userObjects = new ArrayList<WeakReference<?>>(initialSize);
+		userObjects = new ArrayList<>(initialSize);
 	}
 
 	public Object[] getSafeCopy() {
@@ -50,7 +50,7 @@
 	}
 
 	public void add(Object object) {
-		WeakReference<?> ref = new WeakReference<Object>(object);
+		WeakReference<?> ref = new WeakReference<>(object);
 		synchronized (userObjects) {
 			userObjects.add(ref);
 		}
diff --git a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/osgi/LogHelper.java b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/osgi/LogHelper.java
index 530ef68..1470e72 100644
--- a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/osgi/LogHelper.java
+++ b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/osgi/LogHelper.java
@@ -21,7 +21,7 @@
 
 	private static ServiceTracker<FrameworkLog, FrameworkLog> openLogTracker() {
 		try {
-			ServiceTracker<FrameworkLog, FrameworkLog> st = new ServiceTracker<FrameworkLog, FrameworkLog>(
+			ServiceTracker<FrameworkLog, FrameworkLog> st = new ServiceTracker<>(
 					FrameworkUtil.getBundle(LogHelper.class).getBundleContext(), FrameworkLog.class, null);
 			st.open();
 			return st;
diff --git a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/osgi/ProviderHelper.java b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/osgi/ProviderHelper.java
index 3748770..2c65457 100644
--- a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/osgi/ProviderHelper.java
+++ b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/osgi/ProviderHelper.java
@@ -33,7 +33,7 @@
  */
 public class ProviderHelper {
 
-	static protected Map<String, ExtendedObjectSupplier> extendedSuppliers = new HashMap<String, ExtendedObjectSupplier>();
+	static protected Map<String, ExtendedObjectSupplier> extendedSuppliers = new HashMap<>();
 
 	static {
 		// in case if any extended object supplier changes, clear the supplier cache