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

This one is for org.eclipse.core.jobs

Change-Id: Id34d0b4657a68fafbfffd346c4050081e83438f4
diff --git a/bundles/org.eclipse.core.jobs/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.core.jobs/.settings/org.eclipse.jdt.core.prefs
index 739b00f..8f1c687 100644
--- a/bundles/org.eclipse.core.jobs/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.core.jobs/.settings/org.eclipse.jdt.core.prefs
@@ -2,8 +2,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
@@ -62,19 +65,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=ignore
 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.core.jobs/src/org/eclipse/core/internal/jobs/DeadlockDetector.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/DeadlockDetector.java
index 13e54eb..3572e03 100644
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/DeadlockDetector.java
+++ b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/DeadlockDetector.java
@@ -74,9 +74,9 @@
 	//matrix of relationships between threads and locks
 	private int[][] graph = EMPTY_MATRIX;
 	//index is column in adjacency matrix for the lock
-	private final ArrayList<ISchedulingRule> locks = new ArrayList<ISchedulingRule>();
+	private final ArrayList<ISchedulingRule> locks = new ArrayList<>();
 	//index is row in adjacency matrix for the thread
-	private final ArrayList<Thread> lockThreads = new ArrayList<Thread>();
+	private final ArrayList<Thread> lockThreads = new ArrayList<>();
 	//whether the graph needs to be resized
 	private boolean resize = false;
 
@@ -185,7 +185,7 @@
 	 * Returns all the locks owned by the given thread
 	 */
 	private Object[] getOwnedLocks(Thread current) {
-		ArrayList<ISchedulingRule> ownedLocks = new ArrayList<ISchedulingRule>(1);
+		ArrayList<ISchedulingRule> ownedLocks = new ArrayList<>(1);
 		int index = indexOf(current, false);
 
 		for (int j = 0; j < graph[index].length; j++) {
@@ -201,7 +201,7 @@
 	 * Returns an array of threads that form the deadlock (usually 2).
 	 */
 	private Thread[] getThreadsInDeadlock(Thread cause) {
-		ArrayList<Thread> deadlockedThreads = new ArrayList<Thread>(2);
+		ArrayList<Thread> deadlockedThreads = new ArrayList<>(2);
 		/**
 		 * if the thread that caused deadlock doesn't own any locks, then it is not part
 		 * of the deadlock (it just caused it because of a rule it tried to acquire)
@@ -219,7 +219,7 @@
 		if (rule == null)
 			return new Thread[0];
 		int lockIndex = indexOf(rule, false);
-		ArrayList<Thread> blocking = new ArrayList<Thread>(1);
+		ArrayList<Thread> blocking = new ArrayList<>(1);
 		for (int i = 0; i < graph.length; i++) {
 			if (graph[i][lockIndex] > NO_STATE)
 				blocking.add(lockThreads.get(i));
@@ -295,7 +295,7 @@
 		 * or conflict with a lock the given lock will acquire implicitly
 		 * (locks are acquired implicitly when a conflicting lock is acquired)
 		 */
-		ArrayList<ISchedulingRule> conflicting = new ArrayList<ISchedulingRule>(1);
+		ArrayList<ISchedulingRule> conflicting = new ArrayList<>(1);
 		//only need two passes through all the locks to pick up all conflicting rules
 		int NUM_PASSES = 2;
 		conflicting.add(lock);
@@ -490,7 +490,7 @@
 	 */
 	private ISchedulingRule[] realLocksForThread(Thread owner) {
 		int threadIndex = indexOf(owner, false);
-		ArrayList<ISchedulingRule> ownedLocks = new ArrayList<ISchedulingRule>(1);
+		ArrayList<ISchedulingRule> ownedLocks = new ArrayList<>(1);
 		for (int j = 0; j < graph[threadIndex].length; j++) {
 			if ((graph[threadIndex][j] > NO_STATE) && (locks.get(j) instanceof ILock))
 				ownedLocks.add(locks.get(j));
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ImplicitJobs.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ImplicitJobs.java
index 6e081ae..31de7d3 100644
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ImplicitJobs.java
+++ b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ImplicitJobs.java
@@ -35,14 +35,14 @@
 	 * Set of suspended scheduling rules.
 	 * @GuardedBy("this")
 	 */
-	private final Set<ISchedulingRule> suspendedRules = new HashSet<ISchedulingRule>(20);
+	private final Set<ISchedulingRule> suspendedRules = new HashSet<>(20);
 
 	/**
 	 * Maps (Thread->ThreadJob), threads to the currently running job for that
 	 * thread.
 	 * @GuardedBy("this")
 	 */
-	private final Map<Thread, ThreadJob> threadJobs = new HashMap<Thread, ThreadJob>(20);
+	private final Map<Thread, ThreadJob> threadJobs = new HashMap<>(20);
 
 	ImplicitJobs(JobManager manager) {
 		this.manager = manager;
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/InternalJob.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/InternalJob.java
index 2bee293..167334c 100644
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/InternalJob.java
+++ b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/InternalJob.java
@@ -83,7 +83,7 @@
 	 * The list of job listeners. Never null.
 	 * @GuardedBy("itself")
 	 */
-	private final ListenerList<IJobChangeListener> listeners = new ListenerList<IJobChangeListener>(ListenerList.IDENTITY);
+	private final ListenerList<IJobChangeListener> listeners = new ListenerList<>(ListenerList.IDENTITY);
 
 	private volatile IProgressMonitor monitor;
 	private String name;
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/InternalJobGroup.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/InternalJobGroup.java
index f287685..a6f6439 100644
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/InternalJobGroup.java
+++ b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/InternalJobGroup.java
@@ -46,9 +46,9 @@
 
 	private volatile int state = JobGroup.NONE;
 	private volatile MultiStatus result;
-	private final Set<InternalJob> runningJobs = new HashSet<InternalJob>();
-	private final Set<InternalJob> otherActiveJobs = new HashSet<InternalJob>();
-	private final List<IStatus> results = new ArrayList<IStatus>();
+	private final Set<InternalJob> runningJobs = new HashSet<>();
+	private final Set<InternalJob> otherActiveJobs = new HashSet<>();
+	private final List<IStatus> results = new ArrayList<>();
 	private boolean cancelingDueToError;
 	private int failedJobsCount;
 	private int canceledJobsCount;
@@ -240,7 +240,7 @@
 	}
 
 	final List<Job> internalGetActiveJobs() {
-		List<Job> activeJobs = new ArrayList<Job>(runningJobs.size() + otherActiveJobs.size());
+		List<Job> activeJobs = new ArrayList<>(runningJobs.size() + otherActiveJobs.size());
 		for (InternalJob job : runningJobs)
 			activeJobs.add((Job) job);
 		for (InternalJob job : otherActiveJobs)
@@ -276,7 +276,7 @@
 	}
 
 	final List<IStatus> getCompletedJobResults() {
-		return new ArrayList<IStatus>(results);
+		return new ArrayList<>(results);
 	}
 
 	protected boolean shouldCancel(IStatus lastCompletedJobResult, int numberOfFailedJobs, int numberOfCanceledJobs) {
@@ -284,7 +284,7 @@
 	}
 
 	protected MultiStatus computeGroupResult(List<IStatus> jobResults) {
-		List<IStatus> importantResults = new ArrayList<IStatus>();
+		List<IStatus> importantResults = new ArrayList<>();
 		for (IStatus jobResult : jobResults) {
 			if (jobResult.getSeverity() != IStatus.OK)
 				importantResults.add(jobResult);
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java
index 25a13bf..b42fe11 100644
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java
+++ b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobManager.java
@@ -195,7 +195,7 @@
 	 * A set of progress monitors we must track cancellation requests for.
 	 * @GuardedBy("itself")
 	 */
-	final List<Object[]> monitorStack = new ArrayList<Object[]>();
+	final List<Object[]> monitorStack = new ArrayList<>();
 
 	private final InternalWorker internalWorker;
 
@@ -285,8 +285,8 @@
 			waiting = new JobQueue(false);
 			waitingThreadJobs = new JobQueue(false, false);
 			sleeping = new JobQueue(true);
-			running = new HashSet<InternalJob>(10);
-			yielding = new HashSet<InternalJob>(10);
+			running = new HashSet<>(10);
+			yielding = new HashSet<>(10);
 			pool = new WorkerPool(this);
 		}
 		pool.setDaemon(JobOSGiUtils.getDefault().useDaemonThreads());
@@ -932,7 +932,7 @@
 		synchronized (lock) {
 			//don't join a waiting or sleeping job when suspended (deadlock risk)
 			int states = suspended ? Job.RUNNING : Job.RUNNING | Job.WAITING | Job.SLEEPING;
-			jobs = Collections.synchronizedSet(new HashSet<InternalJob>(select(family, states)));
+			jobs = Collections.synchronizedSet(new HashSet<>(select(family, states)));
 			jobCount = jobs.size();
 			if (jobCount > 0) {
 				//if there is only one blocking job, use it in the blockage callback below
@@ -1290,7 +1290,7 @@
 	 * family and are in one of the provided states.
 	 */
 	private List<InternalJob> select(Object family, int stateMask) {
-		List<InternalJob> members = new ArrayList<InternalJob>();
+		List<InternalJob> members = new ArrayList<>();
 		synchronized (lock) {
 			if ((stateMask & Job.RUNNING) != 0) {
 				for (Iterator<InternalJob> it = running.iterator(); it.hasNext();) {
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobOSGiUtils.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobOSGiUtils.java
index 813aafd..a4d588a 100644
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobOSGiUtils.java
+++ b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobOSGiUtils.java
@@ -59,7 +59,7 @@
 		}
 
 		// register debug options listener
-		Hashtable<String, String> properties = new Hashtable<String, String>(2);
+		Hashtable<String, String> properties = new Hashtable<>(2);
 		properties.put(DebugOptions.LISTENER_SYMBOLICNAME, JobManager.PI_JOBS);
 		debugRegistration = context.registerService(DebugOptionsListener.class, JobManager.getInstance(), properties);
 
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/LockManager.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/LockManager.java
index 8af48db..b4ff942 100644
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/LockManager.java
+++ b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/LockManager.java
@@ -76,7 +76,7 @@
 	 * (a stack is needed because when a thread tries to re-acquire suspended locks,
 	 * it can cause deadlock, and some locks it owns can be suspended again)
 	 */
-	private HashMap<Thread, Stack<LockState[]>> suspendedLocks = new HashMap<Thread, Stack<LockState[]>>();
+	private HashMap<Thread, Stack<LockState[]>> suspendedLocks = new HashMap<>();
 
 	public LockManager() {
 		super();
@@ -167,7 +167,7 @@
 			synchronized (suspendedLocks) {
 				Stack<LockState[]> prevLocks = suspendedLocks.get(found.getCandidate());
 				if (prevLocks == null)
-					prevLocks = new Stack<LockState[]>();
+					prevLocks = new Stack<>();
 				prevLocks.push(suspended);
 				suspendedLocks.put(found.getCandidate(), prevLocks);
 			}
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ObjectMap.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ObjectMap.java
index 6cd59f7..1983c5c 100644
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ObjectMap.java
+++ b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/ObjectMap.java
@@ -181,7 +181,7 @@
 	 */
 	@Override
 	public Set keySet() {
-		Set<Object> result = new HashSet<Object>(size());
+		Set<Object> result = new HashSet<>(size());
 		for (int i = 0; i < elements.length; i = i + 2) {
 			if (elements[i] != null) {
 				result.add(elements[i]);
@@ -282,7 +282,7 @@
 	 * Creates a new hash map with the same contents as this map.
 	 */
 	private HashMap<Object, Object> toHashMap() {
-		HashMap<Object, Object> result = new HashMap<Object, Object>(size());
+		HashMap<Object, Object> result = new HashMap<>(size());
 		for (int i = 0; i < elements.length; i = i + 2) {
 			if (elements[i] != null) {
 				result.put(elements[i], elements[i + 1]);
@@ -300,7 +300,7 @@
 	 */
 	@Override
 	public Collection values() {
-		Set<Object> result = new HashSet<Object>(size());
+		Set<Object> result = new HashSet<>(size());
 		for (int i = 1; i < elements.length; i = i + 2) {
 			if (elements[i] != null) {
 				result.add(elements[i]);
diff --git a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/MultiRule.java b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/MultiRule.java
index 7175c33..50c8bd5 100644
--- a/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/MultiRule.java
+++ b/bundles/org.eclipse.core.jobs/src/org/eclipse/core/runtime/jobs/MultiRule.java
@@ -87,7 +87,7 @@
 	 * array in which no rules are MultiRules.
 	 */
 	private static ISchedulingRule[] flatten(ISchedulingRule[] nestedRules) {
-		ArrayList<ISchedulingRule> myRules = new ArrayList<ISchedulingRule>(nestedRules.length);
+		ArrayList<ISchedulingRule> myRules = new ArrayList<>(nestedRules.length);
 		for (int i = 0; i < nestedRules.length; i++) {
 			if (nestedRules[i] instanceof MultiRule) {
 				ISchedulingRule[] children = ((MultiRule) nestedRules[i]).getChildren();