You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by mb...@apache.org on 2017/10/11 05:53:11 UTC

[1/7] systemml git commit: [SYSTEMML-1952] Codegen row operators w/ sparse side inputs

Repository: systemml
Updated Branches:
  refs/heads/master 4f865b218 -> 40dd894ed


[SYSTEMML-1952] Codegen row operators w/ sparse side inputs

This patch improves the performance of codegen row templates with sparse
side inputs, which have been so far simply converted to dense inputs for
random access. Similar to sparse side inputs in cell templates and
compressed main inputs in row templates, we now use thread-local
temporary rows and convert sparse rows on demand. This avoids the
single-threaded full allocation and conversion of such sparse inputs,
which also significantly reduces the GC overhead.

On multinominal Mlogreg with 32 classes and a dense 10M x 100 input
(8GB), this change improved end-to-end performance for 20/10 outer/inner
iterations from 1264s (72s GC) to 1197s (43s GC).


Project: http://git-wip-us.apache.org/repos/asf/systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/b3d09d56
Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/b3d09d56
Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/b3d09d56

Branch: refs/heads/master
Commit: b3d09d5613d5f64099bb0f1d9b6d459a0e3e2a5f
Parents: 4f865b2
Author: Matthias Boehm <mb...@gmail.com>
Authored: Tue Oct 10 17:24:09 2017 -0700
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Tue Oct 10 17:24:09 2017 -0700

----------------------------------------------------------------------
 .../sysml/hops/codegen/cplan/CNodeBinary.java   |  4 +-
 .../sysml/hops/codegen/cplan/CNodeCell.java     |  2 +-
 .../sysml/hops/codegen/cplan/CNodeMultiAgg.java |  2 +-
 .../hops/codegen/cplan/CNodeOuterProduct.java   |  4 +-
 .../sysml/hops/codegen/cplan/CNodeRow.java      |  8 +--
 .../sysml/hops/codegen/cplan/CNodeTernary.java  |  4 +-
 .../sysml/hops/codegen/cplan/CNodeUnary.java    | 10 ++--
 .../sysml/runtime/codegen/SpoofOperator.java    | 59 +++++++++++++++++---
 .../sysml/runtime/codegen/SpoofRowwise.java     | 21 ++++---
 9 files changed, 81 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/b3d09d56/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeBinary.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeBinary.java b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeBinary.java
index a101647..1ca4aa6 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeBinary.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeBinary.java
@@ -287,13 +287,13 @@ public class CNodeBinary extends CNode
 			tmp = tmp.replace("%IN"+(j+1)+"v%", varj+"vals");
 			tmp = tmp.replace("%IN"+(j+1)+"i%", varj+"ix");
 			tmp = tmp.replace("%IN"+(j+1)+"%", 
-				varj.startsWith("b") ? varj + ".ddat" : varj );
+				varj.startsWith("b") ? varj + ".values(rix)" : varj );
 			
 			//replace start position of main input
 			tmp = tmp.replace("%POS"+(j+1)+"%", (_inputs.get(j) instanceof CNodeData 
 				&& _inputs.get(j).getDataType().isMatrix()) ? (!varj.startsWith("b")) ? varj+"i" : 
 				(TemplateUtils.isMatrix(_inputs.get(j)) && _type!=BinType.VECT_MATRIXMULT) ? 
-				"rowIndex*"+((_type==BinType.VECT_OUTERMULT_ADD)?"%LEN"+(j+1)+"%":"%LEN%") : "0" : "0");
+				varj + ".pos(rix)" : "0" : "0");
 		}
 		//replace length information (e.g., after matrix mult)
 		if( _type == BinType.VECT_OUTERMULT_ADD ) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/b3d09d56/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeCell.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeCell.java b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeCell.java
index 25c422d..3b30124 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeCell.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeCell.java
@@ -41,7 +41,7 @@ public class CNodeCell extends CNodeTpl
 			+ "  public %TMP%() {\n"
 			+ "    super(CellType.%TYPE%, %SPARSE_SAFE%, %AGG_OP%);\n"
 			+ "  }\n"
-			+ "  protected double genexec(double a, SideInput[] b, double[] scalars, int m, int n, int rowIndex, int colIndex) { \n"
+			+ "  protected double genexec(double a, SideInput[] b, double[] scalars, int m, int n, int rix, int cix) { \n"
 			+ "%BODY_dense%"
 			+ "    return %OUT%;\n"
 			+ "  }\n"

http://git-wip-us.apache.org/repos/asf/systemml/blob/b3d09d56/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeMultiAgg.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeMultiAgg.java b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeMultiAgg.java
index 8abf907..fd39c7c 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeMultiAgg.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeMultiAgg.java
@@ -44,7 +44,7 @@ public class CNodeMultiAgg extends CNodeTpl
 			+ "    super(%SPARSE_SAFE%, %AGG_OP%);\n"
 			+ "  }\n"
 			+ "  protected void genexec(double a, SideInput[] b, double[] scalars, double[] c, "
-					+ "int m, int n, int rowIndex, int colIndex) { \n"
+					+ "int m, int n, int rix, int cix) { \n"
 			+ "%BODY_dense%"
 			+ "  }\n"
 			+ "}\n";

http://git-wip-us.apache.org/repos/asf/systemml/blob/b3d09d56/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeOuterProduct.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeOuterProduct.java b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeOuterProduct.java
index b06e9b9..e518246 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeOuterProduct.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeOuterProduct.java
@@ -39,10 +39,10 @@ public class CNodeOuterProduct extends CNodeTpl
 			+ "  public %TMP%() {\n"
 			+ "    super(OutProdType.%TYPE%);\n"
 			+ "  }\n"
-			+ "  protected void genexecDense(double a, double[] a1, int a1i, double[] a2, int a2i, double[][] b, double[] scalars, double[] c, int ci, int m, int n, int len, int rowIndex, int colIndex) { \n"
+			+ "  protected void genexecDense(double a, double[] a1, int a1i, double[] a2, int a2i, double[][] b, double[] scalars, double[] c, int ci, int m, int n, int len, int rix, int cix) { \n"
 			+ "%BODY_dense%"
 			+ "  }\n"
-			+ "  protected double genexecCellwise(double a, double[] a1, int a1i, double[] a2, int a2i, double[][] b, double[] scalars, int m, int n, int len, int rowIndex, int colIndex) { \n"
+			+ "  protected double genexecCellwise(double a, double[] a1, int a1i, double[] a2, int a2i, double[][] b, double[] scalars, int m, int n, int len, int rix, int cix) { \n"
 			+ "%BODY_cellwise%"
 			+ "    return %OUT_cellwise%;\n"
 			+ "  }\n"			

http://git-wip-us.apache.org/repos/asf/systemml/blob/b3d09d56/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeRow.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeRow.java b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeRow.java
index 9235216..68739ad 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeRow.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeRow.java
@@ -41,17 +41,17 @@ public class CNodeRow extends CNodeTpl
 			+ "  public %TMP%() {\n"
 			+ "    super(RowType.%TYPE%, %CONST_DIM2%, %TB1%, %VECT_MEM%);\n"
 			+ "  }\n"
-			+ "  protected void genexec(double[] a, int ai, SideInput[] b, double[] scalars, double[] c, int len, int rowIndex) { \n"
+			+ "  protected void genexec(double[] a, int ai, SideInput[] b, double[] scalars, double[] c, int len, int rix) { \n"
 			+ "%BODY_dense%"
 			+ "  }\n"
-			+ "  protected void genexec(double[] avals, int[] aix, int ai, SideInput[] b, double[] scalars, double[] c, int alen, int len, int rowIndex) { \n"
+			+ "  protected void genexec(double[] avals, int[] aix, int ai, SideInput[] b, double[] scalars, double[] c, int alen, int len, int rix) { \n"
 			+ "%BODY_sparse%"
 			+ "  }\n"			
 			+ "}\n";
 
-	private static final String TEMPLATE_ROWAGG_OUT  = "    c[rowIndex] = %IN%;\n";
+	private static final String TEMPLATE_ROWAGG_OUT  = "    c[rix] = %IN%;\n";
 	private static final String TEMPLATE_FULLAGG_OUT = "    c[0] += %IN%;\n";
-	private static final String TEMPLATE_NOAGG_OUT   = "    LibSpoofPrimitives.vectWrite(%IN%, c, rowIndex*%LEN%, %LEN%);\n";
+	private static final String TEMPLATE_NOAGG_OUT   = "    LibSpoofPrimitives.vectWrite(%IN%, c, rix*%LEN%, %LEN%);\n";
 	
 	public CNodeRow(ArrayList<CNode> inputs, CNode output ) {
 		super(inputs, output);

http://git-wip-us.apache.org/repos/asf/systemml/blob/b3d09d56/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTernary.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTernary.java b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTernary.java
index 6e76816..155cc8b 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTernary.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTernary.java
@@ -56,10 +56,10 @@ public class CNodeTernary extends CNode
 				case LOOKUP_RC1:
 					return sparse ?
 						"    double %TMP% = getValue(%IN1v%, %IN1i%, ai, alen, %IN3%-1);\n" :
-						"    double %TMP% = getValue(%IN1%, %IN2%, rowIndex, %IN3%-1);\n";
+						"    double %TMP% = getValue(%IN1%, %IN2%, rix, %IN3%-1);\n";
 					
 				case LOOKUP_RVECT1:
-					return "    double[] %TMP% = getVector(%IN1%, %IN2%, rowIndex, %IN3%-1);\n";
+					return "    double[] %TMP% = getVector(%IN1%, %IN2%, rix, %IN3%-1);\n";
 					
 				default: 
 					throw new RuntimeException("Invalid ternary type: "+this.toString());

http://git-wip-us.apache.org/repos/asf/systemml/blob/b3d09d56/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeUnary.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeUnary.java b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeUnary.java
index 5e3ef83..b66423e 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeUnary.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeUnary.java
@@ -90,11 +90,11 @@ public class CNodeUnary extends CNode
 			    case LOOKUP_R:
 			    	return sparse ?
 			    		"    double %TMP% = getValue(%IN1v%, %IN1i%, ai, alen, 0);\n" :
-			    		"    double %TMP% = getValue(%IN1%, rowIndex);\n";
+			    		"    double %TMP% = getValue(%IN1%, rix);\n";
 			    case LOOKUP_C:
-			    	return "    double %TMP% = getValue(%IN1%, n, 0, colIndex);\n";
+			    	return "    double %TMP% = getValue(%IN1%, n, 0, cix);\n";
 			    case LOOKUP_RC:
-			    	return "    double %TMP% = getValue(%IN1%, n, rowIndex, colIndex);\n";	
+			    	return "    double %TMP% = getValue(%IN1%, n, rix, cix);\n";	
 				case LOOKUP0:
 					return "    double %TMP% = %IN1%[0];\n" ;
 				case POW2:
@@ -216,12 +216,12 @@ public class CNodeUnary extends CNode
 		tmp = tmp.replace("%IN1v%", varj+"vals");
 		tmp = tmp.replace("%IN1i%", varj+"ix");
 		tmp = tmp.replace("%IN1%", varj.startsWith("b") && !_type.isScalarLookup()
-			&& TemplateUtils.isMatrix(_inputs.get(0)) ? varj + ".ddat" : varj );
+			&& TemplateUtils.isMatrix(_inputs.get(0)) ? varj + ".values(rix)" : varj );
 		
 		//replace start position of main input
 		String spos = (_inputs.get(0) instanceof CNodeData 
 			&& _inputs.get(0).getDataType().isMatrix()) ? !varj.startsWith("b") ? 
-			varj+"i" : TemplateUtils.isMatrix(_inputs.get(0)) ? "rowIndex*%LEN%" : "0" : "0";
+			varj+"i" : TemplateUtils.isMatrix(_inputs.get(0)) ? varj + ".pos(rix)" : "0" : "0";
 		
 		tmp = tmp.replace("%POS1%", spos);
 		tmp = tmp.replace("%POS2%", spos);

http://git-wip-us.apache.org/repos/asf/systemml/blob/b3d09d56/src/main/java/org/apache/sysml/runtime/codegen/SpoofOperator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/codegen/SpoofOperator.java b/src/main/java/org/apache/sysml/runtime/codegen/SpoofOperator.java
index bec488b..a614ded 100644
--- a/src/main/java/org/apache/sysml/runtime/codegen/SpoofOperator.java
+++ b/src/main/java/org/apache/sysml/runtime/codegen/SpoofOperator.java
@@ -30,6 +30,7 @@ import org.apache.sysml.runtime.compress.CompressedMatrixBlock;
 import org.apache.sysml.runtime.instructions.cp.ScalarObject;
 import org.apache.sysml.runtime.matrix.data.LibMatrixReorg;
 import org.apache.sysml.runtime.matrix.data.MatrixBlock;
+import org.apache.sysml.runtime.matrix.data.SparseBlock;
 import org.apache.sysml.runtime.util.DataConverter;
 import org.apache.sysml.runtime.util.UtilFunctions;
 
@@ -119,6 +120,10 @@ public abstract class SpoofOperator implements Serializable
 	}
 	
 	protected static SideInput[] createSparseSideInputs(SideInput[] input) {
+		return createSparseSideInputs(input, false);
+	}
+	
+	protected static SideInput[] createSparseSideInputs(SideInput[] input, boolean row) {
 		//determine if there are sparse side inputs
 		boolean containsSparse = false;
 		for( int i=0; i<input.length; i++ ) {
@@ -133,7 +138,8 @@ public abstract class SpoofOperator implements Serializable
 			SideInput tmp = input[i];
 			ret[i] = (tmp.mdat != null && tmp.mdat.isInSparseFormat()
 				&& !tmp.mdat.isEmptyBlock(false) && tmp.clen > 1) ?
-				new SideInputSparse(tmp) : tmp;
+				(row ? new SideInputSparseRow(tmp) : 
+				new SideInputSparseCell(tmp)) : tmp;
 		}
 		return ret;
 	}
@@ -213,7 +219,8 @@ public abstract class SpoofOperator implements Serializable
 	protected static double getValue(SideInput data, int n, int rowIndex, int colIndex) {
 		//note: wrapper sideinput guaranteed to exist
 		return (data.ddat!=null) ? data.ddat[rowIndex*n+colIndex] : 
-			(data instanceof SideInputSparse) ? ((SideInputSparse)data).next(rowIndex, colIndex) :
+			(data instanceof SideInputSparseCell) ? 
+			((SideInputSparseCell)data).next(rowIndex, colIndex) :
 			(data.mdat!=null) ? data.mdat.quickGetValue(rowIndex, colIndex) : 0;
 	}
 	
@@ -224,9 +231,8 @@ public abstract class SpoofOperator implements Serializable
 	}
 	
 	protected static double[] getVector(SideInput data, int n, int rowIndex, int colIndex) {
-		//note: wrapper sideinput guaranteed to be in dense format
 		double[] c = LibSpoofPrimitives.allocVector(colIndex+1, false);
-		System.arraycopy(data.ddat, rowIndex*n, c, 0, colIndex+1);
+		System.arraycopy(data.values(rowIndex), data.pos(rowIndex), c, 0, colIndex+1);
 		return c;
 	}
 	
@@ -234,22 +240,61 @@ public abstract class SpoofOperator implements Serializable
 		public final double[] ddat;
 		public final MatrixBlock mdat;
 		public final int clen;
-	
 		public SideInput(double[] ddata, MatrixBlock mdata, int clength) {
 			ddat = ddata;
 			mdat = mdata;
 			clen = clength;
 		}
+		public int pos(int r) {
+			return r * clen;
+		}
+		public double[] values(int r) {
+			return ddat;
+		}
+	}
+	
+	public static class SideInputSparseRow extends SideInput {
+		private final double[] values;
+		private int currRowIndex = -1;
+		
+		public SideInputSparseRow(SideInput in) {
+			super(in.ddat, in.mdat, in.clen);
+			values = new double[in.clen];
+		}
+		@Override
+		public int pos(int r) {
+			return 0;
+		}
+		@Override
+		public double[] values(int r) {
+			if( r > currRowIndex )
+				nextRow(r);
+			return values;
+		}
+		
+		private void nextRow(int r) {
+			currRowIndex = r;
+			Arrays.fill(values, 0);
+			SparseBlock sblock = mdat.getSparseBlock();
+			if( sblock != null && !sblock.isEmpty(r) ) {
+				int apos = sblock.pos(r);
+				int alen = sblock.size(r);
+				int[] aix = sblock.indexes(r);
+				double[] avals = sblock.values(r);
+				for(int k=apos; k<apos+alen; k++)
+					values[aix[k]] = avals[k];
+			}
+		}
 	}
 	
-	public static class SideInputSparse extends SideInput {
+	public static class SideInputSparseCell extends SideInput {
 		private int currRowIndex = -1;
 		private int currColPos = 0;
 		private int currLen = 0;
 		private int[] indexes;
 		private double[] values;
 		
-		public SideInputSparse(SideInput in) {
+		public SideInputSparseCell(SideInput in) {
 			super(in.ddat, in.mdat, in.clen);
 		}
 		public double next(int rowIndex, int colIndex) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/b3d09d56/src/main/java/org/apache/sysml/runtime/codegen/SpoofRowwise.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/codegen/SpoofRowwise.java b/src/main/java/org/apache/sysml/runtime/codegen/SpoofRowwise.java
index 311c27f..679ac78 100644
--- a/src/main/java/org/apache/sysml/runtime/codegen/SpoofRowwise.java
+++ b/src/main/java/org/apache/sysml/runtime/codegen/SpoofRowwise.java
@@ -112,7 +112,7 @@ public abstract class SpoofRowwise extends SpoofOperator
 	}
 	
 	@Override
-	public MatrixBlock execute(ArrayList<MatrixBlock> inputs, ArrayList<ScalarObject> scalarObjects, MatrixBlock out)	
+	public MatrixBlock execute(ArrayList<MatrixBlock> inputs, ArrayList<ScalarObject> scalarObjects, MatrixBlock out)
 		throws DMLRuntimeException 
 	{
 		return execute(inputs, scalarObjects, out, true, false);
@@ -138,7 +138,7 @@ public abstract class SpoofRowwise extends SpoofOperator
 			&& LibSpoofPrimitives.isFlipOuter(out.getNumRows(), out.getNumColumns());
 		
 		//input preparation
-		SideInput[] b = prepInputMatrices(inputs, 1, inputs.size()-1, true, _tB1);
+		SideInput[] b = prepInputMatrices(inputs, 1, inputs.size()-1, false, _tB1);
 		double[] scalars = prepInputScalars(scalarObjects);
 		
 		//setup thread-local memory if necessary
@@ -168,7 +168,7 @@ public abstract class SpoofRowwise extends SpoofOperator
 	}
 	
 	@Override
-	public MatrixBlock execute(ArrayList<MatrixBlock> inputs, ArrayList<ScalarObject> scalarObjects, MatrixBlock out, int k)	
+	public MatrixBlock execute(ArrayList<MatrixBlock> inputs, ArrayList<ScalarObject> scalarObjects, MatrixBlock out, int k)
 		throws DMLRuntimeException
 	{
 		//redirect to serial execution
@@ -193,7 +193,7 @@ public abstract class SpoofRowwise extends SpoofOperator
 		
 		//input preparation
 		MatrixBlock a = inputs.get(0);
-		SideInput[] b = prepInputMatrices(inputs, 1, inputs.size()-1, true, _tB1);
+		SideInput[] b = prepInputMatrices(inputs, 1, inputs.size()-1, false, _tB1);
 		double[] scalars = prepInputScalars(scalarObjects);
 		
 		//core parallel execute
@@ -287,14 +287,16 @@ public abstract class SpoofRowwise extends SpoofOperator
 		if( a == null )
 			return;
 		
+		SideInput[] lb = createSparseSideInputs(b, true);
 		for( int i=rl, aix=rl*n; i<ru; i++, aix+=n ) {
 			//call generated method
-			genexec( a, aix, b, scalars, c, n, i );
+			genexec( a, aix, lb, scalars, c, n, i );
 		}
 	}
 	
 	private void executeSparse(SparseBlock sblock, SideInput[] b, double[] scalars, double[] c, int n, int rl, int ru) 
 	{
+		SideInput[] lb = createSparseSideInputs(b, true);
 		SparseRow empty = new SparseRowVector(1);
 		for( int i=rl; i<ru; i++ ) {
 			if( sblock!=null && !sblock.isEmpty(i) ) {
@@ -304,11 +306,11 @@ public abstract class SpoofRowwise extends SpoofOperator
 				int alen = sblock.size(i);
 				
 				//call generated method
-				genexec(avals, aix, apos, b, scalars, c, alen, n, i);
+				genexec(avals, aix, apos, lb, scalars, c, alen, n, i);
 			}
 			else
-				genexec(empty.values(), 
-					empty.indexes(), 0, b, scalars, c, 0, n, i);	
+				genexec(empty.values(),
+					empty.indexes(), 0, lb, scalars, c, 0, n, i);
 		}
 	}
 	
@@ -317,9 +319,10 @@ public abstract class SpoofRowwise extends SpoofOperator
 		if( a.isEmptyBlock(false) )
 			return;
 		
+		SideInput[] lb = createSparseSideInputs(b, true);
 		Iterator<double[]> iter = a.getDenseRowIterator(rl, ru);
 		for( int i=rl; iter.hasNext(); i++ ) {
-			genexec(iter.next(), 0, b, scalars, c, n, i);
+			genexec(iter.next(), 0, lb, scalars, c, n, i);
 		}
 	}
 	


[3/7] systemml git commit: [MINOR] Cleanup various issues raised by static code analysis, part 1

Posted by mb...@apache.org.
http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/cp/ConvolutionCPInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/cp/ConvolutionCPInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/cp/ConvolutionCPInstruction.java
index df72f24..5545ea2 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/cp/ConvolutionCPInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/cp/ConvolutionCPInstruction.java
@@ -43,8 +43,8 @@ public class ConvolutionCPInstruction extends UnaryCPInstruction {
 	private CPOperand _in3;
 	private ArrayList<CPOperand> _input_shape;
 	private ArrayList<CPOperand> _filter_shape;
-	private ArrayList<CPOperand> _stride = new ArrayList<CPOperand>();
-	private ArrayList<CPOperand> _padding = new ArrayList<CPOperand>();
+	private ArrayList<CPOperand> _stride = new ArrayList<>();
+	private ArrayList<CPOperand> _padding = new ArrayList<>();
 	private int _numThreads = -1;	private double _intermediateMemoryBudget = 0;
 	private static final Log LOG = LogFactory.getLog(ConvolutionCPInstruction.class.getName());
 	private static boolean warnedUnderUtilitization = false;
@@ -120,10 +120,10 @@ public class ConvolutionCPInstruction extends UnaryCPInstruction {
 			CPOperand in = new CPOperand(parts[1]);
 			CPOperand out = new CPOperand(parts[14]);
 
-			ArrayList<CPOperand> stride = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> padding = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> input_shape = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> filter_shape = new ArrayList<CPOperand>();
+			ArrayList<CPOperand> stride = new ArrayList<>();
+			ArrayList<CPOperand> padding = new ArrayList<>();
+			ArrayList<CPOperand> input_shape = new ArrayList<>();
+			ArrayList<CPOperand> filter_shape = new ArrayList<>();
 			stride.add(new CPOperand(parts[2]));
 			stride.add(new CPOperand(parts[3]));
 			padding.add(new CPOperand(parts[4]));
@@ -153,10 +153,10 @@ public class ConvolutionCPInstruction extends UnaryCPInstruction {
 			CPOperand in2 = new CPOperand(parts[2]);
 			CPOperand out = new CPOperand(parts[15]);
 
-			ArrayList<CPOperand> stride = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> padding = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> input_shape = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> filter_shape = new ArrayList<CPOperand>();
+			ArrayList<CPOperand> stride = new ArrayList<>();
+			ArrayList<CPOperand> padding = new ArrayList<>();
+			ArrayList<CPOperand> input_shape = new ArrayList<>();
+			ArrayList<CPOperand> filter_shape = new ArrayList<>();
 			stride.add(new CPOperand(parts[3]));
 			stride.add(new CPOperand(parts[4]));
 			padding.add(new CPOperand(parts[5]));
@@ -184,10 +184,10 @@ public class ConvolutionCPInstruction extends UnaryCPInstruction {
 			CPOperand in3 = new CPOperand(parts[3]);
 			CPOperand out = new CPOperand(parts[16]);
 
-			ArrayList<CPOperand> stride = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> padding = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> input_shape = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> filter_shape = new ArrayList<CPOperand>();
+			ArrayList<CPOperand> stride = new ArrayList<>();
+			ArrayList<CPOperand> padding = new ArrayList<>();
+			ArrayList<CPOperand> input_shape = new ArrayList<>();
+			ArrayList<CPOperand> filter_shape = new ArrayList<>();
 			stride.add(new CPOperand(parts[4]));
 			stride.add(new CPOperand(parts[5]));
 			padding.add(new CPOperand(parts[6]));

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/cp/FunctionCallCPInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/cp/FunctionCallCPInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/cp/FunctionCallCPInstruction.java
index d774c8d..3e0ecf9 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/cp/FunctionCallCPInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/cp/FunctionCallCPInstruction.java
@@ -79,9 +79,9 @@ public class FunctionCallCPInstruction extends CPInstruction {
 		String functionName = parts[2];
 		int numInputs = Integer.valueOf(parts[3]);
 		int numOutputs = Integer.valueOf(parts[4]);
-		ArrayList<CPOperand> boundInParamOperands = new ArrayList<CPOperand>();
-		ArrayList<String> boundInParamNames = new ArrayList<String>();
-		ArrayList<String> boundOutParamNames = new ArrayList<String>();
+		ArrayList<CPOperand> boundInParamOperands = new ArrayList<>();
+		ArrayList<String> boundInParamNames = new ArrayList<>();
+		ArrayList<String> boundOutParamNames = new ArrayList<>();
 		for (int i = 0; i < numInputs; i++) {
 			CPOperand operand = new CPOperand(parts[5 + i]);
 			boundInParamOperands.add(operand);
@@ -188,8 +188,8 @@ public class FunctionCallCPInstruction extends CPInstruction {
 		LocalVariableMap retVars = fn_ec.getVariables();  
 		
 		// cleanup all returned variables w/o binding 
-		Collection<String> retVarnames = new LinkedList<String>(retVars.keySet());
-		HashSet<String> probeVars = new HashSet<String>();
+		Collection<String> retVarnames = new LinkedList<>(retVars.keySet());
+		HashSet<String> probeVars = new HashSet<>();
 		for(DataIdentifier di : fpb.getOutputParams())
 			probeVars.add(di.getName());
 		for( String var : retVarnames ) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/cp/MultiReturnBuiltinCPInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/cp/MultiReturnBuiltinCPInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/cp/MultiReturnBuiltinCPInstruction.java
index c60b088..d69f08c 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/cp/MultiReturnBuiltinCPInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/cp/MultiReturnBuiltinCPInstruction.java
@@ -56,7 +56,7 @@ public class MultiReturnBuiltinCPInstruction extends ComputationCPInstruction {
 		throws DMLRuntimeException 
 	{
 		String[] parts = InstructionUtils.getInstructionPartsWithValueType(str);
-		ArrayList<CPOperand> outputs = new ArrayList<CPOperand>();
+		ArrayList<CPOperand> outputs = new ArrayList<>();
 		// first part is always the opcode
 		String opcode = parts[0];
 		

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/cp/MultiReturnParameterizedBuiltinCPInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/cp/MultiReturnParameterizedBuiltinCPInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/cp/MultiReturnParameterizedBuiltinCPInstruction.java
index e59bb3a..27013a7 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/cp/MultiReturnParameterizedBuiltinCPInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/cp/MultiReturnParameterizedBuiltinCPInstruction.java
@@ -50,7 +50,7 @@ public class MultiReturnParameterizedBuiltinCPInstruction extends ComputationCPI
 		throws DMLRuntimeException 
 	{
 		String[] parts = InstructionUtils.getInstructionPartsWithValueType(str);
-		ArrayList<CPOperand> outputs = new ArrayList<CPOperand>();
+		ArrayList<CPOperand> outputs = new ArrayList<>();
 		String opcode = parts[0];
 		
 		if ( opcode.equalsIgnoreCase("transformencode") ) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/cp/SpoofCPInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/cp/SpoofCPInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/cp/SpoofCPInstruction.java
index 9252915..021ab34 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/cp/SpoofCPInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/cp/SpoofCPInstruction.java
@@ -53,7 +53,7 @@ public class SpoofCPInstruction extends ComputationCPInstruction {
 	{
 		String[] parts = InstructionUtils.getInstructionPartsWithValueType(str);
 		
-		ArrayList<CPOperand> inlist = new ArrayList<CPOperand>();
+		ArrayList<CPOperand> inlist = new ArrayList<>();
 		Class<?> cla = CodegenUtils.getClass(parts[1]);
 		SpoofOperator op = CodegenUtils.createInstance(cla);
 		String opcode =  parts[0] + op.getSpoofType();
@@ -71,8 +71,8 @@ public class SpoofCPInstruction extends ComputationCPInstruction {
 		throws DMLRuntimeException 
 	{
 		//get input matrices and scalars, incl pinning of matrices
-		ArrayList<MatrixBlock> inputs = new ArrayList<MatrixBlock>();
-		ArrayList<ScalarObject> scalars = new ArrayList<ScalarObject>();
+		ArrayList<MatrixBlock> inputs = new ArrayList<>();
+		ArrayList<ScalarObject> scalars = new ArrayList<>();
 		for (CPOperand input : _in) {
 			if(input.getDataType()==DataType.MATRIX)
 				inputs.add(ec.getMatrixInput(input.getName(), getExtendedOpcode()));

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java
index 1ac046a..9525d2a 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java
@@ -122,7 +122,7 @@ public class VariableCPInstruction extends CPInstruction {
 		super(sopcode, istr);
 		_cptype = CPINSTRUCTION_TYPE.Variable;
 		opcode = op;
-		inputs = new ArrayList<CPOperand>();
+		inputs = new ArrayList<>();
 		addInput(in1);
 		addInput(in2);
 		addInput(in3);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/cpfile/ParameterizedBuiltinCPFileInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/cpfile/ParameterizedBuiltinCPFileInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/cpfile/ParameterizedBuiltinCPFileInstruction.java
index 6383906..64a2b5f 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/cpfile/ParameterizedBuiltinCPFileInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/cpfile/ParameterizedBuiltinCPFileInstruction.java
@@ -273,7 +273,7 @@ public class ParameterizedBuiltinCPFileInstruction extends ParameterizedBuiltinC
 			informat.configure(job);
 			InputSplit[] splits = informat.getSplits(job, 1);
 		
-			LinkedList<Cell> buffer = new LinkedList<Cell>();
+			LinkedList<Cell> buffer = new LinkedList<>();
 			
 			LongWritable key = new LongWritable();
 			Text value = new Text();
@@ -323,7 +323,7 @@ public class ParameterizedBuiltinCPFileInstruction extends ParameterizedBuiltinC
 			if( !fs.exists(path) )	
 				throw new IOException("File "+fnameOld+" does not exist on HDFS.");
 			
-			LinkedList<Cell> buffer = new LinkedList<Cell>();
+			LinkedList<Cell> buffer = new LinkedList<>();
 			
 			MatrixIndexes key = new MatrixIndexes();
 			MatrixCell value = new MatrixCell();
@@ -396,7 +396,7 @@ public class ParameterizedBuiltinCPFileInstruction extends ParameterizedBuiltinC
 						if( !value.isEmptyBlock() ) //skip empty blocks (important for diag)
 						{
 							String fname = stagingDir +"/"+key.getRowIndex()+"_"+key.getColumnIndex();
-							LocalFileUtils.writeMatrixBlockToLocal(fname, value);							
+							LocalFileUtils.writeMatrixBlockToLocal(fname, value);
 							diagBlocks &= (key.getRowIndex()==key.getColumnIndex());
 						}
 					}	
@@ -412,7 +412,7 @@ public class ParameterizedBuiltinCPFileInstruction extends ParameterizedBuiltinC
 		private void appendCellBufferToStagingArea( String dir, LinkedList<Cell> buffer, int brlen, int bclen ) 
 			throws DMLRuntimeException, IOException
 		{
-			HashMap<String,LinkedList<Cell>> sortedBuffer = new HashMap<String,LinkedList<Cell>>();
+			HashMap<String,LinkedList<Cell>> sortedBuffer = new HashMap<>();
 			
 			//sort cells in buffer wrt key
 			String key = null;
@@ -474,7 +474,7 @@ public class ParameterizedBuiltinCPFileInstruction extends ParameterizedBuiltinC
 					} 
 			
 					//create and append key mapping
-					LinkedList<long[]> keyMapping = new LinkedList<long[]>();
+					LinkedList<long[]> keyMapping = new LinkedList<>();
 					for( int i = 0; i<flags.length; i++ )
 						if( !flags[i] )
 							keyMapping.add(new long[]{blockRow*brlen+i, lastKey++});
@@ -514,7 +514,7 @@ public class ParameterizedBuiltinCPFileInstruction extends ParameterizedBuiltinC
 					} 
 			
 					//create and append key mapping
-					LinkedList<long[]> keyMapping = new LinkedList<long[]>();
+					LinkedList<long[]> keyMapping = new LinkedList<>();
 					for( int i = 0; i<flags.length; i++ )
 						if( !flags[i] )
 							keyMapping.add(new long[]{blockCol*bclen+i, lastKey++});
@@ -568,7 +568,7 @@ public class ParameterizedBuiltinCPFileInstruction extends ParameterizedBuiltinC
 					 
 			
 					//create and append key mapping
-					LinkedList<long[]> keyMapping = new LinkedList<long[]>();
+					LinkedList<long[]> keyMapping = new LinkedList<>();
 					for( int i = 0; i<flags.length; i++ )
 						if( !flags[i] )
 							keyMapping.add(new long[]{blockRow*brlen+i, lastKey++});
@@ -606,7 +606,7 @@ public class ParameterizedBuiltinCPFileInstruction extends ParameterizedBuiltinC
 					 
 			
 					//create and append key mapping
-					LinkedList<long[]> keyMapping = new LinkedList<long[]>();
+					LinkedList<long[]> keyMapping = new LinkedList<>();
 					for( int i = 0; i<flags.length; i++ )
 						if( !flags[i] )
 							keyMapping.add(new long[]{blockCol*bclen+i, lastKey++});
@@ -646,7 +646,7 @@ public class ParameterizedBuiltinCPFileInstruction extends ParameterizedBuiltinC
 			MatrixIndexes key = new MatrixIndexes();
 			MatrixCell value = new MatrixCell();
 
-			HashMap<Integer,HashMap<Long,Long>> keyMap = new HashMap<Integer, HashMap<Long,Long>>();
+			HashMap<Integer,HashMap<Long,Long>> keyMap = new HashMap<>();
 			BufferedReader fkeyMap = StagingFileUtils.openKeyMap(metaOut);
 			try
 			{
@@ -748,7 +748,7 @@ public class ParameterizedBuiltinCPFileInstruction extends ParameterizedBuiltinC
 					
 					for(int blockCol = 0; blockCol < (int)Math.ceil(clen/(double)bclen); blockCol++)
 					{
-						HashMap<Integer,HashMap<Long,Long>> keyMap = new HashMap<Integer, HashMap<Long,Long>>();
+						HashMap<Integer,HashMap<Long,Long>> keyMap = new HashMap<>();
 						BufferedReader fkeyMap = StagingFileUtils.openKeyMap(metaOut);
 						int maxCol = (int)(((long)blockCol*bclen + bclen < clen) ? bclen : clen - (long)blockCol*bclen);
 						
@@ -812,7 +812,7 @@ public class ParameterizedBuiltinCPFileInstruction extends ParameterizedBuiltinC
 					
 					for(int blockRow = 0; blockRow < (int)Math.ceil(rlen/(double)brlen); blockRow++)
 					{
-						HashMap<Integer,HashMap<Long,Long>> keyMap = new HashMap<Integer, HashMap<Long,Long>>();
+						HashMap<Integer,HashMap<Long,Long>> keyMap = new HashMap<>();
 						BufferedReader fkeyMap = StagingFileUtils.openKeyMap(metaOut);
 						int maxRow = (int)(((long)blockRow*brlen + brlen < rlen) ? brlen : rlen - (long)blockRow*brlen);
 						
@@ -888,7 +888,7 @@ public class ParameterizedBuiltinCPFileInstruction extends ParameterizedBuiltinC
 			//prepare output
 			SequenceFile.Writer writer = new SequenceFile.Writer(fs, job, path, MatrixIndexes.class, MatrixBlock.class);
 			MatrixIndexes key = new MatrixIndexes(); 
-			HashSet<Long> writtenBlocks = new HashSet<Long>();
+			HashSet<Long> writtenBlocks = new HashSet<>();
 			
 			try
 			{
@@ -896,7 +896,7 @@ public class ParameterizedBuiltinCPFileInstruction extends ParameterizedBuiltinC
 				{
 					MatrixBlock[] blocks = MatrixWriter.createMatrixBlocksForReuse(newlen, clen, brlen, bclen, 
 							                       MatrixBlock.evalSparseFormatInMemory(rlen, clen, nnz), nnz);  
-					HashMap<Integer,HashMap<Long,Long>> keyMap = new HashMap<Integer, HashMap<Long,Long>>();
+					HashMap<Integer,HashMap<Long,Long>> keyMap = new HashMap<>();
 					BufferedReader fkeyMap = StagingFileUtils.openKeyMap(metaOut);
 					int currentSize = -1;
 					int blockRowOut = 0;
@@ -954,7 +954,7 @@ public class ParameterizedBuiltinCPFileInstruction extends ParameterizedBuiltinC
 				{
 					MatrixBlock[] blocks = MatrixWriter.createMatrixBlocksForReuse(rlen, newlen, brlen, bclen, 
 							                     MatrixBlock.evalSparseFormatInMemory(rlen, clen, nnz), nnz);  
-					HashMap<Integer,HashMap<Long,Long>> keyMap = new HashMap<Integer, HashMap<Long,Long>>();
+					HashMap<Integer,HashMap<Long,Long>> keyMap = new HashMap<>();
 					BufferedReader fkeyMap = StagingFileUtils.openKeyMap(metaOut);
 					int currentSize = -1;
 					int blockColOut = 0;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/gpu/ConvolutionGPUInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/gpu/ConvolutionGPUInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/gpu/ConvolutionGPUInstruction.java
index b25f787..d841e69 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/gpu/ConvolutionGPUInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/gpu/ConvolutionGPUInstruction.java
@@ -39,8 +39,8 @@ public class ConvolutionGPUInstruction extends GPUInstruction {
 	private CPOperand _output;
 	private ArrayList<CPOperand> _input_shape;
 	private ArrayList<CPOperand> _filter_shape;
-	private ArrayList<CPOperand> _stride = new ArrayList<CPOperand>();
-	private ArrayList<CPOperand> _padding = new ArrayList<CPOperand>();
+	private ArrayList<CPOperand> _stride = new ArrayList<>();
+	private ArrayList<CPOperand> _padding = new ArrayList<>();
 	private double _intermediateMemoryBudget = 0;
 	
 	public ConvolutionGPUInstruction(CPOperand in1, CPOperand in2, CPOperand out, String opcode, String istr, double intermediateMemoryBudget) throws DMLRuntimeException {
@@ -99,10 +99,10 @@ public class ConvolutionGPUInstruction extends GPUInstruction {
 			CPOperand in2 = new CPOperand(parts[2]);
 			CPOperand out = new CPOperand(parts[15]);
 		
-			ArrayList<CPOperand> stride = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> padding = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> input_shape = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> filter_shape = new ArrayList<CPOperand>();
+			ArrayList<CPOperand> stride = new ArrayList<>();
+			ArrayList<CPOperand> padding = new ArrayList<>();
+			ArrayList<CPOperand> input_shape = new ArrayList<>();
+			ArrayList<CPOperand> filter_shape = new ArrayList<>();
 			stride.add(new CPOperand(parts[3]));
 			stride.add(new CPOperand(parts[4]));
 			padding.add(new CPOperand(parts[5]));
@@ -126,10 +126,10 @@ public class ConvolutionGPUInstruction extends GPUInstruction {
 			CPOperand in3 = new CPOperand(parts[3]);
 			CPOperand out = new CPOperand(parts[16]);
 		
-			ArrayList<CPOperand> stride = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> padding = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> input_shape = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> filter_shape = new ArrayList<CPOperand>();
+			ArrayList<CPOperand> stride = new ArrayList<>();
+			ArrayList<CPOperand> padding = new ArrayList<>();
+			ArrayList<CPOperand> input_shape = new ArrayList<>();
+			ArrayList<CPOperand> filter_shape = new ArrayList<>();
 			stride.add(new CPOperand(parts[4]));
 			stride.add(new CPOperand(parts[5]));
 			padding.add(new CPOperand(parts[6]));
@@ -151,10 +151,10 @@ public class ConvolutionGPUInstruction extends GPUInstruction {
 			CPOperand in1 = new CPOperand(parts[1]);
 			CPOperand out = new CPOperand(parts[14]);
 		
-			ArrayList<CPOperand> stride = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> padding = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> input_shape = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> filter_shape = new ArrayList<CPOperand>();
+			ArrayList<CPOperand> stride = new ArrayList<>();
+			ArrayList<CPOperand> padding = new ArrayList<>();
+			ArrayList<CPOperand> input_shape = new ArrayList<>();
+			ArrayList<CPOperand> filter_shape = new ArrayList<>();
 			stride.add(new CPOperand(parts[2]));
 			stride.add(new CPOperand(parts[3]));
 			padding.add(new CPOperand(parts[4]));

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/gpu/GPUInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/gpu/GPUInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/gpu/GPUInstruction.java
index 108a622..ed2a4a2 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/gpu/GPUInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/gpu/GPUInstruction.java
@@ -48,7 +48,7 @@ public abstract class GPUInstruction extends Instruction {
 		BuiltinBinary,
 		Builtin,
 		MatrixIndexing
-	};
+	}
 	
 	private static final Log LOG = LogFactory.getLog(GPUInstruction.class.getName());
 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/mr/MRInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/mr/MRInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/mr/MRInstruction.java
index 0fd160a..e0a97bf 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/mr/MRInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/mr/MRInstruction.java
@@ -35,7 +35,7 @@ public abstract class MRInstruction extends Instruction {
 		PickByCount, Partition, Ternary, Quaternary, CM_N_COV, MapGroupedAggregate, GroupedAggregate, RightIndex,
 		ZeroOut, MMTSJ, PMMJ, MatrixReshape, ParameterizedBuiltin, Sort, MapMultChain, CumsumAggregate, CumsumSplit,
 		CumsumOffset, BinUaggChain, UaggOuterChain, RemoveEmpty
-	};
+	}
 
 	protected MRINSTRUCTION_TYPE mrtype;
 	protected Operator optr;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/spark/ConvolutionSPInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/spark/ConvolutionSPInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/spark/ConvolutionSPInstruction.java
index 5206f9f..7bb15cb 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/spark/ConvolutionSPInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/spark/ConvolutionSPInstruction.java
@@ -56,8 +56,8 @@ public class ConvolutionSPInstruction extends UnarySPInstruction {
 	private CPOperand _in3;
 	private ArrayList<CPOperand> _input_shape;
 	private ArrayList<CPOperand> _filter_shape;
-	private ArrayList<CPOperand> _stride = new ArrayList<CPOperand>();
-	private ArrayList<CPOperand> _padding = new ArrayList<CPOperand>();
+	private ArrayList<CPOperand> _stride = new ArrayList<>();
+	private ArrayList<CPOperand> _padding = new ArrayList<>();
 
 	private ConvolutionSPInstruction(CPOperand in, CPOperand out, String opcode, String istr,
 			ArrayList<CPOperand> stride, ArrayList<CPOperand> padding, ArrayList<CPOperand> input_shape,
@@ -115,10 +115,10 @@ public class ConvolutionSPInstruction extends UnarySPInstruction {
 			in.split(parts[1]);
 			out.split(parts[14]);
 
-			ArrayList<CPOperand> stride = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> padding = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> input_shape = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> filter_shape = new ArrayList<CPOperand>();
+			ArrayList<CPOperand> stride = new ArrayList<>();
+			ArrayList<CPOperand> padding = new ArrayList<>();
+			ArrayList<CPOperand> input_shape = new ArrayList<>();
+			ArrayList<CPOperand> filter_shape = new ArrayList<>();
 			stride.add(new CPOperand(parts[2]));
 			stride.add(new CPOperand(parts[3]));
 			padding.add(new CPOperand(parts[4]));
@@ -148,10 +148,10 @@ public class ConvolutionSPInstruction extends UnarySPInstruction {
 			in2.split(parts[2]);
 			out.split(parts[15]);
 
-			ArrayList<CPOperand> stride = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> padding = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> input_shape = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> filter_shape = new ArrayList<CPOperand>();
+			ArrayList<CPOperand> stride = new ArrayList<>();
+			ArrayList<CPOperand> padding = new ArrayList<>();
+			ArrayList<CPOperand> input_shape = new ArrayList<>();
+			ArrayList<CPOperand> filter_shape = new ArrayList<>();
 			stride.add(new CPOperand(parts[3]));
 			stride.add(new CPOperand(parts[4]));
 			padding.add(new CPOperand(parts[5]));
@@ -180,10 +180,10 @@ public class ConvolutionSPInstruction extends UnarySPInstruction {
 			in3.split(parts[3]);
 			out.split(parts[16]);
 
-			ArrayList<CPOperand> stride = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> padding = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> input_shape = new ArrayList<CPOperand>();
-			ArrayList<CPOperand> filter_shape = new ArrayList<CPOperand>();
+			ArrayList<CPOperand> stride = new ArrayList<>();
+			ArrayList<CPOperand> padding = new ArrayList<>();
+			ArrayList<CPOperand> input_shape = new ArrayList<>();
+			ArrayList<CPOperand> filter_shape = new ArrayList<>();
 			stride.add(new CPOperand(parts[4]));
 			stride.add(new CPOperand(parts[5]));
 			padding.add(new CPOperand(parts[6]));
@@ -396,10 +396,9 @@ public class ConvolutionSPInstruction extends UnarySPInstruction {
 					throw new RuntimeException("Expected the inputs to be reblocked as rectangular RDD");
 				}
 				MatrixBlock out = processRectangularBlock(arg._2);
-				if(out.getNumRows() != 1) {
+				if(out.getNumRows() != 1)
 					throw new RuntimeException("Expected the output to have 1 row");
-				}
-				return new Tuple2<MatrixIndexes, MatrixBlock>(arg._1, out);
+				return new Tuple2<>(arg._1, out);
 			}
 		}
 		

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/spark/MultiReturnParameterizedBuiltinSPInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/spark/MultiReturnParameterizedBuiltinSPInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/spark/MultiReturnParameterizedBuiltinSPInstruction.java
index 6436389..19b0732 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/spark/MultiReturnParameterizedBuiltinSPInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/spark/MultiReturnParameterizedBuiltinSPInstruction.java
@@ -81,7 +81,7 @@ public class MultiReturnParameterizedBuiltinSPInstruction extends ComputationSPI
 		throws DMLRuntimeException 
 	{
 		String[] parts = InstructionUtils.getInstructionPartsWithValueType(str);
-		ArrayList<CPOperand> outputs = new ArrayList<CPOperand>();
+		ArrayList<CPOperand> outputs = new ArrayList<>();
 		String opcode = parts[0];
 		
 		if ( opcode.equalsIgnoreCase("transformencode") ) {
@@ -265,11 +265,11 @@ public class MultiReturnParameterizedBuiltinSPInstruction extends ComputationSPI
 			}
 			
 			//output recode maps as columnID - token pairs
-			ArrayList<Tuple2<Integer,Object>> ret = new ArrayList<Tuple2<Integer,Object>>();
+			ArrayList<Tuple2<Integer,Object>> ret = new ArrayList<>();
 			HashMap<Integer,HashSet<Object>> tmp = _raEncoder.getCPRecodeMapsPartial();
 			for( Entry<Integer,HashSet<Object>> e1 : tmp.entrySet() )
 				for( Object token : e1.getValue() )
-					ret.add(new Tuple2<Integer,Object>(e1.getKey(), token));
+					ret.add(new Tuple2<>(e1.getKey(), token));
 			_raEncoder.getCPRecodeMapsPartial().clear();
 		
 			return ret.iterator();
@@ -301,7 +301,7 @@ public class MultiReturnParameterizedBuiltinSPInstruction extends ComputationSPI
 			String colID = String.valueOf(arg0._1());
 			Iterator<Object> iter = arg0._2().iterator();
 			
-			ArrayList<String> ret = new ArrayList<String>();
+			ArrayList<String> ret = new ArrayList<>();
 			StringBuilder sb = new StringBuilder();
 			long rowID = 1;
 			while( iter.hasNext() ) {
@@ -342,21 +342,21 @@ public class MultiReturnParameterizedBuiltinSPInstruction extends ComputationSPI
 			}
 			
 			//extract meta data
-			ArrayList<Tuple2<Integer,ColumnMetadata>> ret = new ArrayList<Tuple2<Integer,ColumnMetadata>>();
+			ArrayList<Tuple2<Integer,ColumnMetadata>> ret = new ArrayList<>();
 			int[] collist = _encoder.getColList();
 			for( int j=0; j<collist.length; j++ ) {
 				if( _encoder.getMethod(collist[j]) == MVMethod.GLOBAL_MODE ) {
 					HashMap<String,Long> hist = _encoder.getHistogram(collist[j]);
 					for( Entry<String,Long> e : hist.entrySet() )
-						ret.add(new Tuple2<Integer,ColumnMetadata>(collist[j], 
+						ret.add(new Tuple2<>(collist[j], 
 								new ColumnMetadata(e.getValue(), e.getKey())));
 				}
 				else if( _encoder.getMethod(collist[j]) == MVMethod.GLOBAL_MEAN ) {
-					ret.add(new Tuple2<Integer,ColumnMetadata>(collist[j], 
+					ret.add(new Tuple2<>(collist[j], 
 							new ColumnMetadata(_encoder.getNonMVCount(collist[j]), String.valueOf(_encoder.getMeans()[j]._sum))));
 				}
 				else if( _encoder.getMethod(collist[j]) == MVMethod.CONSTANT ) {
-					ret.add(new Tuple2<Integer,ColumnMetadata>(collist[j],
+					ret.add(new Tuple2<>(collist[j],
 							new ColumnMetadata(0, _encoder.getReplacement(collist[j]))));
 				}
 			}
@@ -381,11 +381,11 @@ public class MultiReturnParameterizedBuiltinSPInstruction extends ComputationSPI
 		{
 			int colix = arg0._1();
 			Iterator<ColumnMetadata> iter = arg0._2().iterator();
-			ArrayList<String> ret = new ArrayList<String>();
+			ArrayList<String> ret = new ArrayList<>();
 			
 			//compute global mode of categorical feature, i.e., value with highest frequency
 			if( _encoder.getMethod(colix) == MVMethod.GLOBAL_MODE ) {
-				HashMap<String, Long> hist = new HashMap<String,Long>();
+				HashMap<String, Long> hist = new HashMap<>();
 				while( iter.hasNext() ) {
 					ColumnMetadata cmeta = iter.next(); 
 					Long tmp = hist.get(cmeta.getMvValue());

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/spark/SPInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/spark/SPInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/spark/SPInstruction.java
index 0261357..f0ee6e3 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/spark/SPInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/spark/SPInstruction.java
@@ -38,7 +38,7 @@ public abstract class SPInstruction extends Instruction {
 		MatrixReshape, Ternary, Quaternary, CumsumAggregate, CumsumOffset, BinUaggChain, UaggOuterChain, 
 		Write, SpoofFused, INVALID, 
 		Convolution
-	};
+	}
 
 	protected SPINSTRUCTION_TYPE _sptype;
 	protected Operator _optr;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/spark/SpoofSPInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/spark/SpoofSPInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/spark/SpoofSPInstruction.java
index a628dc0..416e4a6 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/spark/SpoofSPInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/spark/SpoofSPInstruction.java
@@ -88,7 +88,7 @@ public class SpoofSPInstruction extends SPInstruction {
 		String[] parts = InstructionUtils.getInstructionPartsWithValueType(str);
 		
 		//String opcode = parts[0];
-		ArrayList<CPOperand> inlist = new ArrayList<CPOperand>();
+		ArrayList<CPOperand> inlist = new ArrayList<>();
 		Class<?> cls = CodegenUtils.getClass(parts[1]);
 		byte[] classBytes = CodegenUtils.getClassData(parts[1]);
 		String opcode =  parts[0] + CodegenUtils.createInstance(cls).getSpoofType();
@@ -410,7 +410,7 @@ public class SpoofSPInstruction extends SPInstruction {
 		protected ArrayList<MatrixBlock> getAllMatrixInputs(MatrixIndexes ixIn, MatrixBlock[] blkIn, boolean outer) 
 			throws DMLRuntimeException 
 		{
-			ArrayList<MatrixBlock> ret = new ArrayList<MatrixBlock>();
+			ArrayList<MatrixBlock> ret = new ArrayList<>();
 			//add all rdd/broadcast inputs (main and side inputs)
 			for( int i=0, posRdd=0, posBc=0; i<_bcInd.length; i++ ) {
 				if( _bcInd[i] ) {
@@ -458,7 +458,7 @@ public class SpoofSPInstruction extends SPInstruction {
 				_op.getRowType().isRowTypeB1() ? _inputs.get(0).getNumCols() : -1);
 			LibSpoofPrimitives.setupThreadLocalMemory(_op.getNumIntermediates(), _clen, clen2);
 			
-			ArrayList<Tuple2<MatrixIndexes,MatrixBlock>> ret = new ArrayList<Tuple2<MatrixIndexes,MatrixBlock>>();
+			ArrayList<Tuple2<MatrixIndexes,MatrixBlock>> ret = new ArrayList<>();
 			boolean aggIncr = (_op.getRowType().isColumnAgg() //aggregate entire partition
 				|| _op.getRowType() == RowType.FULL_AGG); 
 			MatrixBlock blkOut = aggIncr ? new MatrixBlock() : null;
@@ -476,14 +476,14 @@ public class SpoofSPInstruction extends SPInstruction {
 				if( !aggIncr ) {
 					MatrixIndexes ixOut = new MatrixIndexes(ixIn.getRowIndex(),
 						_op.getRowType()!=RowType.NO_AGG ? 1 : ixIn.getColumnIndex());
-					ret.add(new Tuple2<MatrixIndexes, MatrixBlock>(ixOut, blkOut));
+					ret.add(new Tuple2<>(ixOut, blkOut));
 				}
 			}
 			
 			//cleanup and final result preparations
 			LibSpoofPrimitives.cleanupThreadLocalMemory();
 			if( aggIncr )
-				ret.add(new Tuple2<MatrixIndexes, MatrixBlock>(new MatrixIndexes(1,1), blkOut));
+				ret.add(new Tuple2<>(new MatrixIndexes(1,1), blkOut));
 			
 			return ret.iterator();
 		}
@@ -512,7 +512,7 @@ public class SpoofSPInstruction extends SPInstruction {
 				_op = (SpoofOperator) CodegenUtils.createInstance(loadedClass); 
 			}
 			
-			List<Tuple2<MatrixIndexes, MatrixBlock>> ret = new ArrayList<Tuple2<MatrixIndexes,MatrixBlock>>();
+			List<Tuple2<MatrixIndexes, MatrixBlock>> ret = new ArrayList<>();
 			while(arg.hasNext()) 
 			{
 				Tuple2<MatrixIndexes,MatrixBlock[]> tmp = arg.next();
@@ -535,7 +535,7 @@ public class SpoofSPInstruction extends SPInstruction {
 						ixOut = new MatrixIndexes(1, ixOut.getColumnIndex());
 					blkOut = _op.execute(inputs, _scalars, blkOut);
 				}
-				ret.add(new Tuple2<MatrixIndexes,MatrixBlock>(ixOut, blkOut));
+				ret.add(new Tuple2<>(ixOut, blkOut));
 			}
 			return ret.iterator();
 		}
@@ -569,7 +569,7 @@ public class SpoofSPInstruction extends SPInstruction {
 			MatrixBlock blkOut = new MatrixBlock();
 			blkOut = _op.execute(inputs, _scalars, blkOut);
 			
-			return new Tuple2<MatrixIndexes,MatrixBlock>(arg._1(), blkOut);
+			return new Tuple2<>(arg._1(), blkOut);
 		}
 	}
 	
@@ -626,7 +626,7 @@ public class SpoofSPInstruction extends SPInstruction {
 				_op = (SpoofOperator) CodegenUtils.createInstance(loadedClass); 
 			}
 			
-			List<Tuple2<MatrixIndexes, MatrixBlock>> ret = new ArrayList<Tuple2<MatrixIndexes,MatrixBlock>>();
+			List<Tuple2<MatrixIndexes, MatrixBlock>> ret = new ArrayList<>();
 			while(arg.hasNext())
 			{
 				Tuple2<MatrixIndexes,MatrixBlock[]> tmp = arg.next();
@@ -645,7 +645,7 @@ public class SpoofSPInstruction extends SPInstruction {
 					blkOut = _op.execute(inputs, _scalars, blkOut);
 				}
 				
-				ret.add(new Tuple2<MatrixIndexes,MatrixBlock>(createOutputIndexes(ixIn,_op), blkOut));				
+				ret.add(new Tuple2<>(createOutputIndexes(ixIn,_op), blkOut));
 			}
 			
 			return ret.iterator();
@@ -677,7 +677,7 @@ public class SpoofSPInstruction extends SPInstruction {
 		public Iterator<Tuple2<MatrixIndexes, MatrixBlock>> call( Tuple2<MatrixIndexes, MatrixBlock> arg0 ) 
 			throws Exception 
 		{
-			LinkedList<Tuple2<MatrixIndexes, MatrixBlock>> ret = new LinkedList<Tuple2<MatrixIndexes, MatrixBlock>>();
+			LinkedList<Tuple2<MatrixIndexes, MatrixBlock>> ret = new LinkedList<>();
 			MatrixIndexes ixIn = arg0._1();
 			MatrixBlock blkIn = arg0._2();
 			
@@ -688,7 +688,7 @@ public class SpoofSPInstruction extends SPInstruction {
 			for( long i=1; i<=numBlocks; i++ ) {
 				MatrixIndexes tmpix = new MatrixIndexes(i, j);
 				MatrixBlock tmpblk = blkIn;
-				ret.add( new Tuple2<MatrixIndexes, MatrixBlock>(tmpix, tmpblk) );
+				ret.add( new Tuple2<>(tmpix, tmpblk) );
 			}
 			
 			//output list of new tuples

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/spark/data/BlockPartitioner.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/spark/data/BlockPartitioner.java b/src/main/java/org/apache/sysml/runtime/instructions/spark/data/BlockPartitioner.java
index 48b30b0..677fbbf 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/spark/data/BlockPartitioner.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/spark/data/BlockPartitioner.java
@@ -19,6 +19,8 @@
 
 package org.apache.sysml.runtime.instructions.spark.data;
 
+import java.util.Arrays;
+
 import org.apache.spark.Partitioner;
 
 import org.apache.sysml.runtime.matrix.MatrixCharacteristics;
@@ -100,6 +102,12 @@ public class BlockPartitioner extends Partitioner
 	public int numPartitions() {
 		return _numParts;
 	}
+	
+	@Override 
+	public int hashCode() {
+		return Arrays.hashCode(new long[]{
+			_numParts, _ncparts, _rbPerPart, _cbPerPart});
+	}
 
 	@Override
 	public boolean equals(Object obj) 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/io/IOUtilFunctions.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/io/IOUtilFunctions.java b/src/main/java/org/apache/sysml/runtime/io/IOUtilFunctions.java
index ecbf7e4..3ac4dc4 100644
--- a/src/main/java/org/apache/sysml/runtime/io/IOUtilFunctions.java
+++ b/src/main/java/org/apache/sysml/runtime/io/IOUtilFunctions.java
@@ -420,7 +420,7 @@ public class IOUtilFunctions
 	 * @return the number of columns in the collection of csv file splits
 	 * @throws IOException if IOException occurs
 	 */
-	@SuppressWarnings({ "rawtypes", "unchecked" })
+	@SuppressWarnings({ "rawtypes" })
 	public static int countNumColumnsCSV(InputSplit[] splits, InputFormat informat, JobConf job, String delim ) 
 		throws IOException 
 	{

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/CombineMR.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/CombineMR.java b/src/main/java/org/apache/sysml/runtime/matrix/CombineMR.java
index d40857f..f18a811 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/CombineMR.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/CombineMR.java
@@ -73,8 +73,8 @@ public class CombineMR
 		protected MRInstruction[] comb_instructions=null;
 		private MatrixIndexes keyBuff=new MatrixIndexes();
 		private WeightedPair valueBuff=new WeightedPair();
-		private HashMap<Byte, Pair<Integer, Integer>> outputBlockSizes=new HashMap<Byte, Pair<Integer, Integer>>();
-		private HashMap<Byte, ArrayList<Integer>> outputIndexesMapping=new HashMap<Byte, ArrayList<Integer>>();
+		private HashMap<Byte, Pair<Integer, Integer>> outputBlockSizes=new HashMap<>();
+		private HashMap<Byte, ArrayList<Integer>> outputIndexesMapping=new HashMap<>();
 		@Override
 		public void reduce(MatrixIndexes indexes,
 				Iterator<TaggedMatrixValue> values,

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/GMR.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/GMR.java b/src/main/java/org/apache/sysml/runtime/matrix/GMR.java
index 1024070..f0c214e 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/GMR.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/GMR.java
@@ -330,12 +330,12 @@ public class GMR
 			&& InstructionUtils.isDistributedCacheUsed(allInsts) ) 
 		{
 			//get all indexes of distributed cache inputs
-			ArrayList<Byte> indexList = new ArrayList<Byte>();
+			ArrayList<Byte> indexList = new ArrayList<>();
 			String[] inst = allInsts.split(Instruction.INSTRUCTION_DELIM);
 			for( String tmp : inst ) {
 				if( InstructionUtils.isDistributedCacheUsed(tmp) )
 				{
-					ArrayList<Byte> tmpindexList = new ArrayList<Byte>();
+					ArrayList<Byte> tmpindexList = new ArrayList<>();
 					
 					MRInstruction mrinst = MRInstructionParser.parseSingleInstruction(tmp);
 					if( mrinst instanceof IDistributedCacheConsumer )
@@ -349,7 +349,7 @@ public class GMR
 			}
 
 			//construct index and path strings
-			ArrayList<String> pathList = new ArrayList<String>(); // list of paths to be placed in Distributed cache
+			ArrayList<String> pathList = new ArrayList<>(); // list of paths to be placed in Distributed cache
 			StringBuilder indexString = new StringBuilder(); // input indices to be placed in Distributed Cache (concatenated) 
 			StringBuilder pathString = new StringBuilder();  // input paths to be placed in Distributed Cache (concatenated) 
 			for( byte index : indexList )

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/WriteCSVMR.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/WriteCSVMR.java b/src/main/java/org/apache/sysml/runtime/matrix/WriteCSVMR.java
index 2eaddb7..c4f9a56 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/WriteCSVMR.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/WriteCSVMR.java
@@ -99,7 +99,7 @@ public class WriteCSVMR
 		byte[] resultDimsUnknown = new byte[resultIndexes.length];
 		MatrixCharacteristics[] stats=new MatrixCharacteristics[resultIndexes.length];
 		OutputInfo[] outputInfos=new OutputInfo[outputs.length];
-		HashMap<Byte, Integer> indexmap=new HashMap<Byte, Integer>();
+		HashMap<Byte, Integer> indexmap=new HashMap<>();
 		for(int i=0; i<stats.length; i++)
 		{
 			indexmap.put(resultIndexes[i], i);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/data/AddDummyWeightConverter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/AddDummyWeightConverter.java b/src/main/java/org/apache/sysml/runtime/matrix/data/AddDummyWeightConverter.java
index cadc0e9..2dd29af 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/AddDummyWeightConverter.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/AddDummyWeightConverter.java
@@ -61,7 +61,6 @@ public class AddDummyWeightConverter implements Converter<Writable, Writable, Ma
 	}
 
 	@Override
-	@SuppressWarnings("unchecked")
 	public Pair<MatrixIndexes, WeightedPair> next() {
 		Pair<MatrixIndexes, MatrixCell> temp=toCellConverter.next();
 		pair.setKey(temp.getKey());
@@ -71,12 +70,11 @@ public class AddDummyWeightConverter implements Converter<Writable, Writable, Ma
 
 	@Override
 	public void setBlockSize(int rl, int cl) {
-		
-		if(toCellConverter==null)
-		{
+		if(toCellConverter==null) {
 			rlen=rl;
 			clen=cl;
-		}else
+		} 
+		else
 			toCellConverter.setBlockSize(rl, cl);
 	}
 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/data/FileFormatProperties.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/FileFormatProperties.java b/src/main/java/org/apache/sysml/runtime/matrix/data/FileFormatProperties.java
index 2f405da..c03aa99 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/FileFormatProperties.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/FileFormatProperties.java
@@ -21,10 +21,9 @@ package org.apache.sysml.runtime.matrix.data;
 
 public class FileFormatProperties 
 {
-	
 	private String description;
 	
-	public enum FileFormat { CSV, NATIVE };
+	public enum FileFormat { CSV, NATIVE }
 	
 	FileFormat fmt;
 	

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNHelper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNHelper.java b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNHelper.java
index 0550a98..ff932fa 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNHelper.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNHelper.java
@@ -44,7 +44,7 @@ public class LibMatrixDNNHelper {
 	 * @throws DMLRuntimeException if error occurs
 	 */
 	public static ArrayList<Callable<Long>> getMaxPoolingWorkers(ConvolutionParameters params) throws DMLRuntimeException {
-		ArrayList<Callable<Long>> ret = new ArrayList<Callable<Long>>();
+		ArrayList<Callable<Long>> ret = new ArrayList<>();
 		int k = OptimizerUtils.getConstrainedNumThreads(params.numThreads);
 		int taskSize = (int)(Math.ceil((double)params.N / k));
 		for(int i = 0; i*taskSize < params.N; i++) {
@@ -65,7 +65,7 @@ public class LibMatrixDNNHelper {
 	 * @throws DMLRuntimeException if error occurs
 	 */
 	public static ArrayList<Callable<Long>> getMaxPoolingBackwardWorkers(ConvolutionParameters params, boolean performReluBackward) throws DMLRuntimeException {
-		ArrayList<Callable<Long>> ret = new ArrayList<Callable<Long>>();
+		ArrayList<Callable<Long>> ret = new ArrayList<>();
 		int k = OptimizerUtils.getConstrainedNumThreads(params.numThreads);
 		int taskSize = (int)(Math.ceil((double)params.N / k));
 		for(int i = 0; i*taskSize < params.N; i++) {
@@ -93,7 +93,7 @@ public class LibMatrixDNNHelper {
 	 * @throws DMLRuntimeException if error occurs
 	 */
 	public static ArrayList<Callable<Long>> getReluBackwardWorkers(ConvolutionParameters params) throws DMLRuntimeException {
-		ArrayList<Callable<Long>> ret = new ArrayList<Callable<Long>>();
+		ArrayList<Callable<Long>> ret = new ArrayList<>();
 		int k = OptimizerUtils.getConstrainedNumThreads(params.numThreads);
 		int taskSize = (int)(Math.ceil((double)params.N / k));
 		for(int i = 0; i*taskSize < params.N; i++) {
@@ -110,7 +110,7 @@ public class LibMatrixDNNHelper {
 	 * @throws DMLRuntimeException if error occurs
 	 */
 	public static ArrayList<Callable<Long>> getConv2dWorkers(ConvolutionParameters params) throws DMLRuntimeException {
-		ArrayList<Callable<Long>> ret = new ArrayList<Callable<Long>>();
+		ArrayList<Callable<Long>> ret = new ArrayList<>();
 		
 		// Try to create as many tasks as threads. 
 		// Creating more tasks will help in tail, but would have additional overhead of maintaining the intermediate
@@ -148,7 +148,7 @@ public class LibMatrixDNNHelper {
 	 * @throws DMLRuntimeException if error occurs
 	 */
 	public static ArrayList<Callable<Long>> getConv2dBackwardFilterWorkers(ConvolutionParameters params) throws DMLRuntimeException {
-		ArrayList<Callable<Long>> ret = new ArrayList<Callable<Long>>();
+		ArrayList<Callable<Long>> ret = new ArrayList<>();
 		// Try to create as many tasks as threads. 
 		// Creating more tasks will help in tail, but would have additional overhead of maintaining the intermediate
 		// data structures such as im2col blocks.
@@ -177,7 +177,7 @@ public class LibMatrixDNNHelper {
 	 * @throws DMLRuntimeException if error occurs
 	 */
 	public static ArrayList<Callable<Long>> getConv2dBackwardDataWorkers(ConvolutionParameters params) throws DMLRuntimeException {
-		ArrayList<Callable<Long>> ret = new ArrayList<Callable<Long>>();
+		ArrayList<Callable<Long>> ret = new ArrayList<>();
 		
 		// Try to create as many tasks as threads. 
 		// Creating more tasks will help in tail, but would have additional overhead of maintaining the intermediate
@@ -256,7 +256,7 @@ public class LibMatrixDNNHelper {
 	
 	//Split a filter of size [K, CRS] into c filters of [K, RS]
 	private static ArrayList<MatrixBlock> splitFilter(ConvolutionParameters _params) {
-		ArrayList<MatrixBlock> ret = new ArrayList<MatrixBlock>();
+		ArrayList<MatrixBlock> ret = new ArrayList<>();
 		int RS = _params.R*_params.S; int CRS = _params.C*_params.R*_params.S;
 		double [] filter = _params.input2.getDenseBlock(); int S = _params.S;
 		for(int c = 0; c < _params.C; c++) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java
index 3c3b1ab..37a55ba 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java
@@ -1059,7 +1059,7 @@ public class LibMatrixOuterAgg
 		int cnt = 0;
 		
 		if( ix >= 0 ){ //match, scan to next val
-			while( value==bv[ix++] && ix<bv.length );
+			while( value==bv[ix++] && ix<bv.length ) {}
 			ix += (value==bv[bv.length-1])?1:0;
 		}
 			

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/data/OutputInfo.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/OutputInfo.java b/src/main/java/org/apache/sysml/runtime/matrix/data/OutputInfo.java
index 675f0f5..1b0424a 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/OutputInfo.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/OutputInfo.java
@@ -21,6 +21,7 @@
 package org.apache.sysml.runtime.matrix.data;
 
 import java.io.Serializable;
+import java.util.Arrays;
 
 import org.apache.hadoop.io.DoubleWritable;
 import org.apache.hadoop.io.IntWritable;
@@ -36,12 +37,9 @@ import org.apache.sysml.runtime.DMLRuntimeException;
 import org.apache.sysml.runtime.matrix.mapred.CSVWriteReducer.RowBlockForTextOutput;
 import org.apache.sysml.runtime.matrix.sort.CompactOutputFormat;
 
-
-
 @SuppressWarnings("rawtypes")
 public class OutputInfo implements Serializable 
 {
-
 	private static final long serialVersionUID = -3115943514779675817L;
 
 	public Class<? extends OutputFormat> outputFormatClass;
@@ -156,6 +154,15 @@ public class OutputInfo implements Serializable
 			return "specialized";
 	}
 	
+	@Override 
+	public int hashCode() {
+		return Arrays.hashCode(new int[] {
+			outputFormatClass.hashCode(),
+			outputKeyClass.hashCode(),
+			outputValueClass.hashCode()
+		});
+	}
+	
 	@Override
 	public boolean equals( Object o ) 
 	{

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/data/TaggedFirstSecondIndexes.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/TaggedFirstSecondIndexes.java b/src/main/java/org/apache/sysml/runtime/matrix/data/TaggedFirstSecondIndexes.java
index 14d35b4..bea0c48 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/TaggedFirstSecondIndexes.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/TaggedFirstSecondIndexes.java
@@ -41,12 +41,11 @@ import org.apache.sysml.runtime.util.UtilFunctions;
 //sorted by first index, tag, and second index
 public class TaggedFirstSecondIndexes implements WritableComparable<TaggedFirstSecondIndexes>
 {
-	
 	protected long first=-1;
 	protected byte tag=-1;
 	protected long second=-1;
 	
-	public TaggedFirstSecondIndexes(){};
+	public TaggedFirstSecondIndexes(){}
 	public TaggedFirstSecondIndexes(long i1, byte t, long i2)
 	{
 		setIndexes(i1,i2);
@@ -182,7 +181,7 @@ public class TaggedFirstSecondIndexes implements WritableComparable<TaggedFirstS
 			for(int i=0; i<matrices.length; i++)
 				inRstep[i]=(long) Math.ceil((double)MRJobConfiguration.getNumRows(job, (byte)i)/(double)partitions);
 			byte maxIndex=0;
-			HashMap<Byte, Long> outRsteps=new HashMap<Byte, Long>();
+			HashMap<Byte, Long> outRsteps=new HashMap<>();
 			try {
 				CSVWriteInstruction[] ins = MRJobConfiguration.getCSVWriteInstructions(job);
 				for(CSVWriteInstruction in: ins)

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/data/hadoopfix/DelegatingInputFormat.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/hadoopfix/DelegatingInputFormat.java b/src/main/java/org/apache/sysml/runtime/matrix/data/hadoopfix/DelegatingInputFormat.java
index 7c38651..d5149ec 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/hadoopfix/DelegatingInputFormat.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/hadoopfix/DelegatingInputFormat.java
@@ -51,12 +51,11 @@ public class DelegatingInputFormat<K, V> implements InputFormat<K, V> {
   public InputSplit[] getSplits(JobConf conf, int numSplits) throws IOException {
 
     JobConf confCopy = new JobConf(conf);
-    List<InputSplit> splits = new ArrayList<InputSplit>();
+    List<InputSplit> splits = new ArrayList<>();
     Map<Path, InputFormat> formatMap = MultipleInputs.getInputFormatMap(conf);
     Map<Path, Class<? extends Mapper>> mapperMap = MultipleInputs
        .getMapperTypeMap(conf);
-    Map<Class<? extends InputFormat>, List<Path>> formatPaths
-        = new HashMap<Class<? extends InputFormat>, List<Path>>();
+    Map<Class<? extends InputFormat>, List<Path>> formatPaths = new HashMap<>();
 
     // First, build a map of InputFormats to Paths
     for (Entry<Path, InputFormat> entry : formatMap.entrySet()) {
@@ -74,8 +73,7 @@ public class DelegatingInputFormat<K, V> implements InputFormat<K, V> {
          formatClass, conf);
       List<Path> paths = formatEntry.getValue();
 
-      Map<Class<? extends Mapper>, List<Path>> mapperPaths
-          = new HashMap<Class<? extends Mapper>, List<Path>>();
+      Map<Class<? extends Mapper>, List<Path>> mapperPaths = new HashMap<>();
 
       // Now, for each set of paths that have a common InputFormat, build
       // a map of Mappers to the paths they're used for

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/CMCOVMRMapper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/CMCOVMRMapper.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/CMCOVMRMapper.java
index 8f29d58..5f36a40 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/CMCOVMRMapper.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/CMCOVMRMapper.java
@@ -45,12 +45,12 @@ implements Mapper<Writable, Writable, Writable, Writable>
 {
 	
 	private boolean firsttime=true;
-	private HashMap<Byte, CM> cmFn = new HashMap<Byte, CM>();
+	private HashMap<Byte, CM> cmFn = new HashMap<>();
 	private COV covFn=COV.getCOMFnObject();
 	private OutputCollector<Writable, Writable> cachedCollector=null;
 	private CachedValueMap cmNcovCache=new CachedValueMap();
-	protected HashSet<Byte> cmTags=new HashSet<Byte>();
-	protected HashSet<Byte> covTags=new HashSet<Byte>();
+	protected HashSet<Byte> cmTags=new HashSet<>();
+	protected HashSet<Byte> covTags=new HashSet<>();
 	@Override
 	public void map(Writable index, Writable cell,
 			OutputCollector<Writable, Writable> out, Reporter report)

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/CMCOVMRReducer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/CMCOVMRReducer.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/CMCOVMRReducer.java
index 547a8b3..4194b08 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/CMCOVMRReducer.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/CMCOVMRReducer.java
@@ -53,11 +53,11 @@ implements Reducer<TaggedFirstSecondIndexes, MatrixValue, MatrixIndexes, MatrixV
 	private CM_N_COVInstruction[] cmNcovInstructions=null;
 	private CM_N_COVCell cmNcovCell=new CM_N_COVCell(); 
 	private COV covFn=COV.getCOMFnObject();
-	private HashMap<Byte, CM> cmFn = new HashMap<Byte, CM>();
+	private HashMap<Byte, CM> cmFn = new HashMap<>();
 	private MatrixIndexes outIndex=new MatrixIndexes(1, 1);
 	private MatrixCell outCell=new MatrixCell();
-	private HashMap<Byte, ArrayList<Integer>> outputIndexesMapping=new HashMap<Byte, ArrayList<Integer>>();
-	protected HashSet<Byte> covTags=new HashSet<Byte>();
+	private HashMap<Byte, ArrayList<Integer>> outputIndexesMapping=new HashMap<>();
+	protected HashSet<Byte> covTags=new HashSet<>();
 	private CM_COV_Object zeroObj=null;
 	
 	//the dimension for all the representative matrices 
@@ -137,8 +137,8 @@ implements Reducer<TaggedFirstSecondIndexes, MatrixValue, MatrixIndexes, MatrixV
 		} catch (Exception e) {
 			throw new RuntimeException(e);
 		} 
-		rlens=new HashMap<Byte, Long>();
-		clens=new HashMap<Byte, Long>();
+		rlens=new HashMap<>();
+		clens=new HashMap<>();
 		for(CM_N_COVInstruction ins: cmNcovInstructions)
 		{
 			if(ins.getOperator() instanceof COVOperator)

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVAssignRowIDReducer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVAssignRowIDReducer.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVAssignRowIDReducer.java
index c29e83c..0674b9a 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVAssignRowIDReducer.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVAssignRowIDReducer.java
@@ -37,7 +37,7 @@ public class CSVAssignRowIDReducer extends MapReduceBase implements Reducer<Byte
 {
 	
 	
-	private ArrayList<OffsetCount> list = new ArrayList<OffsetCount>();
+	private ArrayList<OffsetCount> list = new ArrayList<>();
 	
 	@Override
 	@SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVWriteMapper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVWriteMapper.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVWriteMapper.java
index c742531..0c1bf2c 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVWriteMapper.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVWriteMapper.java
@@ -37,13 +37,10 @@ import org.apache.sysml.runtime.matrix.data.TaggedFirstSecondIndexes;
 
 public class CSVWriteMapper extends MapperBase implements Mapper<Writable, Writable, TaggedFirstSecondIndexes, MatrixBlock>
 {
-	
-	
-	HashMap<Byte, ArrayList<Byte>> inputOutputMap=new HashMap<Byte, ArrayList<Byte>>();
+	HashMap<Byte, ArrayList<Byte>> inputOutputMap=new HashMap<>();
 	TaggedFirstSecondIndexes outIndexes=new TaggedFirstSecondIndexes();
 	
 	@Override
-	@SuppressWarnings("unchecked")
 	public void map(Writable rawKey, Writable rawValue,
 			OutputCollector<TaggedFirstSecondIndexes, MatrixBlock> out,
 			Reporter reporter) throws IOException
@@ -88,9 +85,8 @@ public class CSVWriteMapper extends MapperBase implements Mapper<Writable, Writa
 			for(CSVWriteInstruction in: ins)
 			{
 				ArrayList<Byte> outputs=inputOutputMap.get(in.input);
-				if(outputs==null)
-				{
-					outputs=new ArrayList<Byte>();
+				if(outputs==null) {
+					outputs=new ArrayList<>();
 					inputOutputMap.put(in.input, outputs);
 				}
 				outputs.add(in.output);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVWriteReducer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVWriteReducer.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVWriteReducer.java
index 64c42df..c5f26d8 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVWriteReducer.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/CSVWriteReducer.java
@@ -173,7 +173,7 @@ public class CSVWriteReducer extends ReduceBase implements Reducer<TaggedFirstSe
 	{
 		super.configure(job);
 		byte maxIndex=0;
-		HashMap<Byte, CSVWriteInstruction> out2Ins=new HashMap<Byte, CSVWriteInstruction>();
+		HashMap<Byte, CSVWriteInstruction> out2Ins=new HashMap<>();
 		try {
 			CSVWriteInstruction[] ins = MRJobConfiguration.getCSVWriteInstructions(job);
 			for(CSVWriteInstruction in: ins)
@@ -252,7 +252,7 @@ public class CSVWriteReducer extends ReduceBase implements Reducer<TaggedFirstSe
 			START, 
 			NEWLINE, 
 			MIDDLE
-		};
+		}
 		
 		private MatrixBlock _data = null;
 		private int _numCols = 0;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/CachedValueMap.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/CachedValueMap.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/CachedValueMap.java
index 54e62a8..b856774 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/CachedValueMap.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/CachedValueMap.java
@@ -30,12 +30,10 @@ import org.apache.sysml.runtime.matrix.data.MatrixValue;
 
 public class CachedValueMap //extends CachedMap<IndexedMatrixValue>
 {
-
 	private HashMap<Byte, ArrayList<IndexedMatrixValue>> map = null;
 	
-	public CachedValueMap()
-	{
-		map = new HashMap<Byte, ArrayList<IndexedMatrixValue>>();
+	public CachedValueMap() {
+		map = new HashMap<>();
 	}
 	
 	public IndexedMatrixValue getFirst(byte tag) 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/CollectMultipleConvertedOutputs.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/CollectMultipleConvertedOutputs.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/CollectMultipleConvertedOutputs.java
index 6079677..e630029 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/CollectMultipleConvertedOutputs.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/CollectMultipleConvertedOutputs.java
@@ -53,26 +53,19 @@ public class CollectMultipleConvertedOutputs
 		Converter<Writable, Writable, Writable, Writable> conv=outputConverters[output];
 		conv.setBlockSize(matrixStats[output].getRowsPerBlock(), matrixStats[output].getColsPerBlock());
 		conv.convert(key, value);
-	//	System.out.println("output before convert: "+key+" "+value);
-		while(conv.hasNext())
-		{
+		while(conv.hasNext()) {
 			Pair<Writable, Writable> outpair=conv.next();
 			multipleOutputs.getCollector(Integer.toString(output), reporter).collect(outpair.getKey(), outpair.getValue());
-		//	System.out.println("output in collectOutput "+outpair.getKey().toString()+":"+outpair.getValue());
 		}
 	}
 	
-	@SuppressWarnings("unchecked")
 	public void directOutput(Writable key, Writable value, int output, Reporter reporter) 
 		throws IOException
 	{
 		multipleOutputs.getCollector(Integer.toString(output), reporter).collect(key, value);
 	}
 
-	public void close() 
-		throws IOException 
-	{
+	public void close() throws IOException {
 		multipleOutputs.close();
 	}
-
 }

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/GMRCtableBuffer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/GMRCtableBuffer.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/GMRCtableBuffer.java
index d5c00de..3c682ce 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/GMRCtableBuffer.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/GMRCtableBuffer.java
@@ -57,9 +57,9 @@ public class GMRCtableBuffer
 	public GMRCtableBuffer( CollectMultipleConvertedOutputs collector, boolean outputDimsKnown )
 	{
 		if ( outputDimsKnown )
-			_blockBuffer = new HashMap<Byte, MatrixBlock>();
+			_blockBuffer = new HashMap<>();
 		else
-			_mapBuffer = new HashMap<Byte, CTableMap>();
+			_mapBuffer = new HashMap<>();
 		_collector = collector;
 	}
 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/GMRMapper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/GMRMapper.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/GMRMapper.java
index e843264..0c30023 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/GMRMapper.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/GMRMapper.java
@@ -192,7 +192,7 @@ implements Mapper<Writable, Writable, Writable, Writable>
 		resultsMaxRowDims=new long[resultIndexes.length];
 		resultsMaxColDims=new long[resultIndexes.length];
 		
-		tagMapping=new HashMap<Byte, ArrayList<Integer>>();
+		tagMapping=new HashMap<>();
 		for(int i=0; i<resultIndexes.length; i++)
 		{
 			byte output=resultIndexes[i];

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRCombiner.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRCombiner.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRCombiner.java
index 6cb0830..f16bab1 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRCombiner.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRCombiner.java
@@ -43,11 +43,11 @@ public class GroupedAggMRCombiner extends ReduceBase
 	implements Reducer<TaggedMatrixIndexes, WeightedCell, TaggedMatrixIndexes, WeightedCell>
 {	
 	//grouped aggregate instructions
-	private HashMap<Byte, GroupedAggregateInstruction> grpaggInstructions = new HashMap<Byte, GroupedAggregateInstruction>();
+	private HashMap<Byte, GroupedAggregateInstruction> grpaggInstructions = new HashMap<>();
 	
 	//reused intermediate objects
 	private CM_COV_Object cmObj = new CM_COV_Object(); 
-	private HashMap<Byte, CM> cmFn = new HashMap<Byte, CM>();
+	private HashMap<Byte, CM> cmFn = new HashMap<>();
 	private WeightedCell outCell = new WeightedCell();
 
 	@Override

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRMapper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRMapper.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRMapper.java
index 1a3b306..454093d 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRMapper.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRMapper.java
@@ -42,7 +42,7 @@ public class GroupedAggMRMapper extends MapperBase
 {
 		
 	//block instructions that need to be performed in part by mapper
-	protected ArrayList<ArrayList<GroupedAggregateInstruction>> groupAgg_instructions=new ArrayList<ArrayList<GroupedAggregateInstruction>>();
+	protected ArrayList<ArrayList<GroupedAggregateInstruction>> groupAgg_instructions=new ArrayList<>();
 	private MatrixIndexes outKeyValue=new MatrixIndexes();
 	private TaggedMatrixIndexes outKey=new TaggedMatrixIndexes(outKeyValue, (byte)0);
 	private WeightedCell outValue=new WeightedCell();

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRReducer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRReducer.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRReducer.java
index bebace2..f0db5e3 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRReducer.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/GroupedAggMRReducer.java
@@ -48,10 +48,10 @@ public class GroupedAggMRReducer extends ReduceBase
 	
 	private MatrixIndexes outIndex=new MatrixIndexes(1, 1);
 	private MatrixCell outCell=new MatrixCell();
-	private HashMap<Byte, GroupedAggregateInstruction> grpaggInstructions=new HashMap<Byte, GroupedAggregateInstruction>();
+	private HashMap<Byte, GroupedAggregateInstruction> grpaggInstructions=new HashMap<>();
 	private CM_COV_Object cmObj=new CM_COV_Object(); 
-	private HashMap<Byte, CM> cmFn = new HashMap<Byte, CM>();
-	private HashMap<Byte, ArrayList<Integer>> outputIndexesMapping=new HashMap<Byte, ArrayList<Integer>>();
+	private HashMap<Byte, CM> cmFn = new HashMap<>();
+	private HashMap<Byte, ArrayList<Integer>> outputIndexesMapping=new HashMap<>();
 	
 	@Override
 	public void reduce(TaggedMatrixIndexes key,Iterator<WeightedCell> values,

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/MMRJMRMapper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/MMRJMRMapper.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/MMRJMRMapper.java
index e83713c..af46b7d 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/MMRJMRMapper.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/MMRJMRMapper.java
@@ -45,9 +45,9 @@ implements Mapper<Writable, Writable, Writable, Writable>
 	//the aggregate binary instruction for this mmcj job
 	private TripleIndexes triplebuffer=new TripleIndexes();
 	private TaggedMatrixValue taggedValue=null;
-	private HashMap<Byte, Long> numRepeats=new HashMap<Byte, Long>();
-	private HashSet<Byte> aggBinInput1s=new HashSet<Byte>();
-	private HashSet<Byte> aggBinInput2s=new HashSet<Byte>();
+	private HashMap<Byte, Long> numRepeats=new HashMap<>();
+	private HashSet<Byte> aggBinInput1s=new HashSet<>();
+	private HashSet<Byte> aggBinInput2s=new HashSet<>();
 	
 	@Override
 	protected void specialOperationsForActualMap(int index,

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/MRBaseForCommonInstructions.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/MRBaseForCommonInstructions.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/MRBaseForCommonInstructions.java
index 58f8624..ef90349 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/MRBaseForCommonInstructions.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/MRBaseForCommonInstructions.java
@@ -67,9 +67,9 @@ public class MRBaseForCommonInstructions extends MapReduceBase
 	
 	//distributed cache data handling
 	public static boolean isJobLocal = false; //set from MapperBase
-	public static HashMap<Byte, DistributedCacheInput> dcValues = new HashMap<Byte, DistributedCacheInput>();
+	public static HashMap<Byte, DistributedCacheInput> dcValues = new HashMap<>();
  	
-	protected HashMap<Byte, MatrixCharacteristics> dimensions=new HashMap<Byte, MatrixCharacteristics>();
+	protected HashMap<Byte, MatrixCharacteristics> dimensions=new HashMap<>();
 	
 	//temporary variables
 	protected IndexedMatrixValue tempValue=null;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/MRJobConfiguration.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/MRJobConfiguration.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/MRJobConfiguration.java
index 5cd5daf..269fe52 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/MRJobConfiguration.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/MRJobConfiguration.java
@@ -708,7 +708,7 @@ public class MRJobConfiguration
 		thisFile = thisFile.makeQualified(fs);
 		
 		Path thisDir=thisFile.getParent().makeQualified(fs);
-		ArrayList<Byte> representativeMatrixes=new ArrayList<Byte>();
+		ArrayList<Byte> representativeMatrixes=new ArrayList<>();
 		for(int i=0; i<matrices.length; i++)
 		{
 			Path p = new Path(matrices[i]).makeQualified(fs);
@@ -1008,8 +1008,8 @@ public class MRJobConfiguration
 		}
 		
 		//remove redundant inputs and pure broadcast variables
-		ArrayList<Path> lpaths = new ArrayList<Path>();
-		ArrayList<InputInfo> liinfos = new ArrayList<InputInfo>();
+		ArrayList<Path> lpaths = new ArrayList<>();
+		ArrayList<InputInfo> liinfos = new ArrayList<>();
 		for(int i=0; i<inputs.length; i++)
 		{
 			Path p = new Path(inputs[i]);
@@ -1092,7 +1092,7 @@ public class MRJobConfiguration
 		}
 		
 		//remove redundant input files
-		ArrayList<Path> paths=new ArrayList<Path>();
+		ArrayList<Path> paths=new ArrayList<>();
 		for(int i=0; i<inputs.length; i++)
 		{
 			String name=inputs[i];
@@ -1231,8 +1231,8 @@ public class MRJobConfiguration
 			String instructionsInMapper, String reblockInstructions, String aggInstructionsInReducer, String aggBinInstructions, 
 			String otherInstructionsInReducer, byte[] resultIndexes, HashSet<Byte> mapOutputIndexes, boolean forMMCJ) throws DMLRuntimeException
 	{
-		HashSet<Byte> intermediateMatrixIndexes=new HashSet<Byte>();
-		HashMap<Byte, MatrixCharacteristics> dims=new HashMap<Byte, MatrixCharacteristics>();
+		HashSet<Byte> intermediateMatrixIndexes=new HashSet<>();
+		HashMap<Byte, MatrixCharacteristics> dims=new HashMap<>();
 		for(byte i: inputIndexes){
 			MatrixCharacteristics dim=new MatrixCharacteristics(getNumRows(job, i), getNumColumns(job, i), 
 					getNumRowsPerBlock(job, i), getNumColumnsPerBlock(job, i), getNumNonZero(job, i));
@@ -1354,8 +1354,8 @@ public class MRJobConfiguration
 		if(!forMMCJ)
 		{
 			//store the skylines
-			ArrayList<Long> xs=new ArrayList<Long>(mapOutputIndexes.size());
-			ArrayList<Long> ys=new ArrayList<Long>(mapOutputIndexes.size());
+			ArrayList<Long> xs=new ArrayList<>(mapOutputIndexes.size());
+			ArrayList<Long> ys=new ArrayList<>(mapOutputIndexes.size());
 			for(byte idx: mapOutputIndexes)
 			{
 				MatrixCharacteristics dim=dims.get(idx);
@@ -1387,7 +1387,7 @@ public class MRJobConfiguration
 				}
 			}
 			//sort by x
-			TreeMap<Long, Long> map=new TreeMap<Long, Long>();
+			TreeMap<Long, Long> map=new TreeMap<>();
 			for(int i=0; i<xs.size(); i++)
 				map.put(xs.get(i), ys.get(i));
 			numReduceGroups=0;
@@ -1586,7 +1586,7 @@ public class MRJobConfiguration
 	{
 		//find out what results are needed to send to reducers
 		
-		HashSet<Byte> indexesInMapper=new HashSet<Byte>();
+		HashSet<Byte> indexesInMapper=new HashSet<>();
 		for(byte b: inputIndexes)
 			indexesInMapper.add(b);
 		
@@ -1602,7 +1602,7 @@ public class MRJobConfiguration
 		getIndexes(reblockIns, indexesInMapper);
 		
 		MRInstruction[] insReducer = MRInstructionParser.parseAggregateInstructions(aggInstructionsInReducer);
-		HashSet<Byte> indexesInReducer=new HashSet<Byte>();
+		HashSet<Byte> indexesInReducer=new HashSet<>();
 		getIndexes(insReducer, indexesInReducer);
 		
 		insReducer = MRInstructionParser.parseMixedInstructions(otherInstructionsInReducer);
@@ -1622,14 +1622,14 @@ public class MRJobConfiguration
 		byte[] resultIndexes=MRJobConfiguration.getResultIndexes(job);
 		Converter[] outputConverters=new Converter[resultIndexes.length];
 		MatrixCharacteristics[] stats=new MatrixCharacteristics[resultIndexes.length];
-		HashMap<Byte, ArrayList<Integer>> tagMapping=new HashMap<Byte, ArrayList<Integer>>();
+		HashMap<Byte, ArrayList<Integer>> tagMapping=new HashMap<>();
 		for(int i=0; i<resultIndexes.length; i++)
 		{
 			byte output=resultIndexes[i];
 			ArrayList<Integer> vec=tagMapping.get(output);
 			if(vec==null)
 			{
-				vec=new ArrayList<Integer>();
+				vec=new ArrayList<>();
 				tagMapping.put(output, vec);
 			}
 			vec.add(i);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/MapperBase.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/MapperBase.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/MapperBase.java
index 878c236..3b630ae 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/MapperBase.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/MapperBase.java
@@ -66,19 +66,19 @@ public abstract class MapperBase extends MRBaseForCommonInstructions
 	protected int[] lastblockclens=null;
 	
 	//rand instructions that need to be performed in mapper
-	protected ArrayList<DataGenMRInstruction> dataGen_instructions=new ArrayList<DataGenMRInstruction>();
+	protected ArrayList<DataGenMRInstruction> dataGen_instructions=new ArrayList<>();
 	
 	//instructions that need to be performed in mapper
-	protected ArrayList<ArrayList<MRInstruction>> mapper_instructions=new ArrayList<ArrayList<MRInstruction>>();
+	protected ArrayList<ArrayList<MRInstruction>> mapper_instructions=new ArrayList<>();
 	
 	//block instructions that need to be performed in part by mapper
-	protected ArrayList<ArrayList<ReblockInstruction>> reblock_instructions=new ArrayList<ArrayList<ReblockInstruction>>();
+	protected ArrayList<ArrayList<ReblockInstruction>> reblock_instructions=new ArrayList<>();
 	
 	//csv block instructions that need to be performed in part by mapper
-	protected ArrayList<ArrayList<CSVReblockInstruction>> csv_reblock_instructions=new ArrayList<ArrayList<CSVReblockInstruction>>();
+	protected ArrayList<ArrayList<CSVReblockInstruction>> csv_reblock_instructions=new ArrayList<>();
 	
 	//the indexes of the matrices that needed to be outputted
-	protected ArrayList<ArrayList<Byte>> outputIndexes=new ArrayList<ArrayList<Byte>>();
+	protected ArrayList<ArrayList<Byte>> outputIndexes=new ArrayList<>();
 	
 	//converter to convert the input record into indexes and matrix value (can be a cell or a block)
 	protected Converter inputConverter=null;
@@ -86,7 +86,7 @@ public abstract class MapperBase extends MRBaseForCommonInstructions
 	//a counter to measure the time spent in a mapper
 	protected static enum Counters {
 		MAP_TIME 
-	};
+	}
 	
 	
 	@SuppressWarnings("unchecked")
@@ -280,14 +280,14 @@ public abstract class MapperBase extends MRBaseForCommonInstructions
 		}
 
 		//collect unary instructions for each representative matrix
-		HashSet<Byte> set=new HashSet<Byte>();
+		HashSet<Byte> set=new HashSet<>();
 		for(int i=0; i<representativeMatrixes.size(); i++)
 		{
 			set.clear();
 			set.add(representativeMatrixes.get(i));
 			
 			//collect the relavent datagen instructions for this representative matrix
-			ArrayList<DataGenMRInstruction> dataGensForThisMatrix=new ArrayList<DataGenMRInstruction>();
+			ArrayList<DataGenMRInstruction> dataGensForThisMatrix=new ArrayList<>();
 			if(allDataGenIns!=null)
 			{
 				for(DataGenMRInstruction ins:allDataGenIns)
@@ -307,7 +307,7 @@ public abstract class MapperBase extends MRBaseForCommonInstructions
 				dataGen_instructions.add(dataGensForThisMatrix.get(0));
 						
 			//collect the relavent instructions for this representative matrix
-			ArrayList<MRInstruction> opsForThisMatrix=new ArrayList<MRInstruction>();
+			ArrayList<MRInstruction> opsForThisMatrix=new ArrayList<>();
 			
 			if(allMapperIns!=null)
 			{
@@ -345,7 +345,7 @@ public abstract class MapperBase extends MRBaseForCommonInstructions
 			mapper_instructions.add(opsForThisMatrix);
 			
 			//collect the relavent reblock instructions for this representative matrix
-			ArrayList<ReblockInstruction> reblocksForThisMatrix=new ArrayList<ReblockInstruction>();
+			ArrayList<ReblockInstruction> reblocksForThisMatrix=new ArrayList<>();
 			if(allReblockIns!=null)
 			{
 				for(ReblockInstruction ins:allReblockIns)
@@ -361,7 +361,7 @@ public abstract class MapperBase extends MRBaseForCommonInstructions
 			reblock_instructions.add(reblocksForThisMatrix);
 			
 			//collect the relavent reblock instructions for this representative matrix
-			ArrayList<CSVReblockInstruction> csvReblocksForThisMatrix=new ArrayList<CSVReblockInstruction>();
+			ArrayList<CSVReblockInstruction> csvReblocksForThisMatrix=new ArrayList<>();
 			if(allCSVReblockIns!=null)
 			{
 				for(CSVReblockInstruction ins:allCSVReblockIns)
@@ -377,7 +377,7 @@ public abstract class MapperBase extends MRBaseForCommonInstructions
 			csv_reblock_instructions.add(csvReblocksForThisMatrix);
 			
 			//collect the output indexes for this representative matrix
-			ArrayList<Byte> outsForThisMatrix=new ArrayList<Byte>();
+			ArrayList<Byte> outsForThisMatrix=new ArrayList<>();
 			for(byte output: outputs)
 			{
 				if(set.contains(output))

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReblockMapper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReblockMapper.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReblockMapper.java
index b32e5f8..de34f3a 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReblockMapper.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReblockMapper.java
@@ -49,12 +49,12 @@ public class ReblockMapper extends MapperBase
 	//state of reblock mapper
 	private OutputCollector<Writable, Writable> cachedCollector = null;
 	private JobConf cachedJobConf = null;
-	private HashMap<Byte, MatrixCharacteristics> dimensionsOut = new HashMap<Byte, MatrixCharacteristics>();
-	private HashMap<Byte, MatrixCharacteristics> dimensionsIn = new HashMap<Byte, MatrixCharacteristics>();
-	private HashMap<Byte, Boolean> emptyBlocks = new HashMap<Byte, Boolean>();
+	private HashMap<Byte, MatrixCharacteristics> dimensionsOut = new HashMap<>();
+	private HashMap<Byte, MatrixCharacteristics> dimensionsIn = new HashMap<>();
+	private HashMap<Byte, Boolean> emptyBlocks = new HashMap<>();
 	
 	//reblock buffer
-	private HashMap<Byte, ReblockBuffer> buffer = new HashMap<Byte,ReblockBuffer>();
+	private HashMap<Byte, ReblockBuffer> buffer = new HashMap<>();
 	private int buffersize =-1;
 	
 	@Override

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReblockReducer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReblockReducer.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReblockReducer.java
index 46c4bf6..3f6de3c 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReblockReducer.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReblockReducer.java
@@ -42,7 +42,7 @@ public class ReblockReducer extends ReduceBase
 	implements Reducer<MatrixIndexes, TaggedAdaptivePartialBlock, MatrixIndexes, MatrixBlock>
 {
 	
-	private HashMap<Byte, MatrixCharacteristics> dimensions = new HashMap<Byte, MatrixCharacteristics>();
+	private HashMap<Byte, MatrixCharacteristics> dimensions = new HashMap<>();
 	
 	@Override
 	public void reduce(MatrixIndexes indexes, Iterator<TaggedAdaptivePartialBlock> values,

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReduceBase.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReduceBase.java b/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReduceBase.java
index 60b4990..eade689 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReduceBase.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/mapred/ReduceBase.java
@@ -44,10 +44,8 @@ import org.apache.sysml.runtime.util.MapReduceTool;
 
 public class ReduceBase extends MRBaseForCommonInstructions
 {
-		
 	//aggregate instructions
-	protected HashMap<Byte, ArrayList<AggregateInstruction>> 
-	agg_instructions=new HashMap<Byte, ArrayList<AggregateInstruction>>();
+	protected HashMap<Byte, ArrayList<AggregateInstruction>> agg_instructions=new HashMap<>();
 	
 	//default aggregate operation
 	protected static final AggregateOperator DEFAULT_AGG_OP = new AggregateOperator(0, Plus.getPlusFnObject());
@@ -67,7 +65,7 @@ public class ReduceBase extends MRBaseForCommonInstructions
 	protected CollectMultipleConvertedOutputs collectFinalMultipleOutputs;
 	
 	//a counter to calculate the time spent in a reducer or a combiner
-	public static enum Counters {COMBINE_OR_REDUCE_TIME };
+	public static enum Counters {COMBINE_OR_REDUCE_TIME }
 
 	//the counters to record how many nonZero cells have been produced for each output
 	protected long[] resultsNonZeros=null;
@@ -120,7 +118,7 @@ public class ReduceBase extends MRBaseForCommonInstructions
 			//parse unary and binary operations
 			MRInstruction[] tmp = MRJobConfiguration.getInstructionsInReducer(job);
 			if( tmp != null ) {
-				mixed_instructions=new ArrayList<MRInstruction>();
+				mixed_instructions=new ArrayList<>();
 				Collections.addAll(mixed_instructions, tmp);
 			}
 			
@@ -147,7 +145,7 @@ public class ReduceBase extends MRBaseForCommonInstructions
 				ArrayList<AggregateInstruction> vec=agg_instructions.get(ins.input);
 				if(vec==null)
 				{
-					vec = new ArrayList<AggregateInstruction>();
+					vec = new ArrayList<>();
 					agg_instructions.put(ins.input, vec);
 				}
 				vec.add(ins);
@@ -162,7 +160,7 @@ public class ReduceBase extends MRBaseForCommonInstructions
 				vec=agg_instructions.get(partialIns.input);
 				if(vec==null)
 				{
-					vec=new ArrayList<AggregateInstruction>();
+					vec=new ArrayList<>();
 					agg_instructions.put(partialIns.input, vec);
 				}
 				vec.add(partialIns);
@@ -179,7 +177,7 @@ public class ReduceBase extends MRBaseForCommonInstructions
 	
 	protected ArrayList<Integer> getOutputIndexes(byte outputTag)
 	{
-		ArrayList<Integer> ret = new ArrayList<Integer>();
+		ArrayList<Integer> ret = new ArrayList<>();
 		for(int i=0; i<resultIndexes.length; i++)
 			if(resultIndexes[i]==outputTag)
 				ret.add(i);
@@ -188,7 +186,7 @@ public class ReduceBase extends MRBaseForCommonInstructions
 	
 	protected static ArrayList<Integer> getOutputIndexes(byte outputTag, byte[] resultIndexes)
 	{
-		ArrayList<Integer> ret=new ArrayList<Integer>();
+		ArrayList<Integer> ret=new ArrayList<>();
 		for(int i=0; i<resultIndexes.length; i++)
 			if(resultIndexes[i]==outputTag)
 				ret.add(i);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/operators/CMOperator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/operators/CMOperator.java b/src/main/java/org/apache/sysml/runtime/matrix/operators/CMOperator.java
index e89ced6..7a6c17b 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/operators/CMOperator.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/operators/CMOperator.java
@@ -38,7 +38,7 @@ public class CMOperator extends Operator
 		CM4,
 		VARIANCE,
 		INVALID
-	};
+	}
 
 	public ValueFunction fn;
 	public AggregateOperationTypes aggOpType;


[5/7] systemml git commit: [MINOR] Cleanup various issues raised by static code analysis, part 1

Posted by mb...@apache.org.
http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java
index f8d0a1b..67978cb 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java
@@ -76,12 +76,12 @@ public class RewriteSplitDagDataDependentOperators extends StatementBlockRewrite
 	{
 		//DAG splits not required for forced single node
 		if( DMLScript.rtplatform == RUNTIME_PLATFORM.SINGLE_NODE )
-			return new ArrayList<StatementBlock>(Arrays.asList(sb));
+			return new ArrayList<>(Arrays.asList(sb));
 		
-		ArrayList<StatementBlock> ret = new ArrayList<StatementBlock>();
+		ArrayList<StatementBlock> ret = new ArrayList<>();
 	
 		//collect all unknown csv reads hops
-		ArrayList<Hop> cand = new ArrayList<Hop>();
+		ArrayList<Hop> cand = new ArrayList<>();
 		collectDataDependentOperators( sb.get_hops(), cand );
 		Hop.resetVisitStatus(sb.get_hops());
 		
@@ -89,7 +89,7 @@ public class RewriteSplitDagDataDependentOperators extends StatementBlockRewrite
 		if( !cand.isEmpty() )
 		{
 			//collect child operators of candidates (to prevent rewrite anomalies)
-			HashSet<Hop> candChilds = new HashSet<Hop>();
+			HashSet<Hop> candChilds = new HashSet<>();
 			collectCandidateChildOperators( cand, candChilds );
 			
 			try
@@ -103,7 +103,7 @@ public class RewriteSplitDagDataDependentOperators extends StatementBlockRewrite
 				
 				//move data-dependent ops incl transient writes to new statement block
 				//(and replace original persistent read with transient read)
-				ArrayList<Hop> sb1hops = new ArrayList<Hop>();			
+				ArrayList<Hop> sb1hops = new ArrayList<>();
 				for( Hop c : cand )
 				{
 					//if there are already transient writes use them and don't introduce artificial variables; 
@@ -128,12 +128,12 @@ public class RewriteSplitDagDataDependentOperators extends StatementBlockRewrite
 						
 						//create new transient read
 						DataOp tread = new DataOp(varname, c.getDataType(), c.getValueType(),
-			                    DataOpTypes.TRANSIENTREAD, null, rlen, clen, nnz, update, brlen, bclen);
+							DataOpTypes.TRANSIENTREAD, null, rlen, clen, nnz, update, brlen, bclen);
 						tread.setVisited();
 						HopRewriteUtils.copyLineNumbers(c, tread);
 						
 						//replace data-dependent operator with transient read
-						ArrayList<Hop> parents = new ArrayList<Hop>(c.getParent());
+						ArrayList<Hop> parents = new ArrayList<>(c.getParent());
 						for( int i=0; i<parents.size(); i++ ) {
 							//prevent concurrent modification by index access
 							Hop parent = parents.get(i);
@@ -154,12 +154,12 @@ public class RewriteSplitDagDataDependentOperators extends StatementBlockRewrite
 						
 						//create new transient read
 						DataOp tread = new DataOp(varname, c.getDataType(), c.getValueType(),
-			                    DataOpTypes.TRANSIENTREAD, null, rlen, clen, nnz, update, brlen, bclen);
+							DataOpTypes.TRANSIENTREAD, null, rlen, clen, nnz, update, brlen, bclen);
 						tread.setVisited();
 						HopRewriteUtils.copyLineNumbers(c, tread);
 						
 						//replace data-dependent operator with transient read
-						ArrayList<Hop> parents = new ArrayList<Hop>(c.getParent());						
+						ArrayList<Hop> parents = new ArrayList<>(c.getParent());
 						for( int i=0; i<parents.size(); i++ ) {
 							//prevent concurrent modification by index access
 							Hop parent = parents.get(i);
@@ -337,13 +337,13 @@ public class RewriteSplitDagDataDependentOperators extends StatementBlockRewrite
 	private void handleReplicatedOperators( ArrayList<Hop> rootsSB1, ArrayList<Hop> rootsSB2, VariableSet sb1out, VariableSet sb2in )
 	{
 		//step 1: create probe set SB1
-		HashSet<Hop> probeSet = new HashSet<Hop>();
+		HashSet<Hop> probeSet = new HashSet<>();
 		Hop.resetVisitStatus(rootsSB1);
 		for( Hop h : rootsSB1 )
 			rAddHopsToProbeSet( h, probeSet );
 		
 		//step 2: probe SB2 operators top-down (collect cut candidates)
-		HashSet<Pair<Hop,Hop>> candSet = new HashSet<Pair<Hop,Hop>>();
+		HashSet<Pair<Hop,Hop>> candSet = new HashSet<>();
 		Hop.resetVisitStatus(rootsSB2);
 		for( Hop h : rootsSB2 )
 			rProbeAndAddHopsToCandidateSet(h, probeSet, candSet);
@@ -424,7 +424,7 @@ public class RewriteSplitDagDataDependentOperators extends StatementBlockRewrite
 					rProbeAndAddHopsToCandidateSet(c, probeSet, candSet);
 				else
 				{
-					candSet.add(new Pair<Hop,Hop>(hop,c)); 
+					candSet.add(new Pair<>(hop,c)); 
 				}
 			}
 		

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java
index ef8d9dc..e9a6407 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java
@@ -53,10 +53,10 @@ public class RewriteSplitDagUnknownCSVRead extends StatementBlockRewriteRule
 		if( DMLScript.rtplatform == RUNTIME_PLATFORM.SINGLE_NODE )
 			return Arrays.asList(sb);
 		
-		ArrayList<StatementBlock> ret = new ArrayList<StatementBlock>();
+		ArrayList<StatementBlock> ret = new ArrayList<>();
 		
 		//collect all unknown csv reads hops
-		ArrayList<Hop> cand = new ArrayList<Hop>();
+		ArrayList<Hop> cand = new ArrayList<>();
 		collectCSVReadHopsUnknownSize( sb.get_hops(), cand );
 		
 		//split hop dag on demand
@@ -73,7 +73,7 @@ public class RewriteSplitDagUnknownCSVRead extends StatementBlockRewriteRule
 				
 				//move csv reads incl reblock to new statement block
 				//(and replace original persistent read with transient read)
-				ArrayList<Hop> sb1hops = new ArrayList<Hop>();			
+				ArrayList<Hop> sb1hops = new ArrayList<>();
 				for( Hop reblock : cand )
 				{
 					long rlen = reblock.getDim1();
@@ -92,11 +92,11 @@ public class RewriteSplitDagUnknownCSVRead extends StatementBlockRewriteRule
 					
 					//create new transient read
 					DataOp tread = new DataOp(reblock.getName(), reblock.getDataType(), reblock.getValueType(),
-		                    DataOpTypes.TRANSIENTREAD, null, rlen, clen, nnz, update, brlen, bclen);
+						DataOpTypes.TRANSIENTREAD, null, rlen, clen, nnz, update, brlen, bclen);
 					HopRewriteUtils.copyLineNumbers(reblock, tread);
 					
 					//replace reblock with transient read
-					ArrayList<Hop> parents = new ArrayList<Hop>(reblock.getParent());
+					ArrayList<Hop> parents = new ArrayList<>(reblock.getParent());
 					for( int i=0; i<parents.size(); i++ ) {
 						Hop parent = parents.get(i);
 						HopRewriteUtils.replaceChildReference(parent, reblock, tread);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/Binary.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/Binary.java b/src/main/java/org/apache/sysml/lops/Binary.java
index d42cb3b..711fd9c 100644
--- a/src/main/java/org/apache/sysml/lops/Binary.java
+++ b/src/main/java/org/apache/sysml/lops/Binary.java
@@ -32,13 +32,12 @@ import org.apache.sysml.parser.Expression.*;
 
 public class Binary extends Lop 
 {
-	
 	public enum OperationTypes {
 		ADD, SUBTRACT, MULTIPLY, DIVIDE, MINUS1_MULTIPLY, MODULUS, INTDIV, MATMULT, 
 		LESS_THAN, LESS_THAN_OR_EQUALS, GREATER_THAN, GREATER_THAN_OR_EQUALS, EQUALS, NOT_EQUALS,
 		AND, OR, 
 		MAX, MIN, POW, SOLVE, NOTSUPPORTED
-	};	
+	}
 
 	private OperationTypes operation;
 	private int numThreads = -1;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/CombineBinary.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/CombineBinary.java b/src/main/java/org/apache/sysml/lops/CombineBinary.java
index f3c757e..8a13710 100644
--- a/src/main/java/org/apache/sysml/lops/CombineBinary.java
+++ b/src/main/java/org/apache/sysml/lops/CombineBinary.java
@@ -36,7 +36,7 @@ public class CombineBinary extends Lop
 {
 
 	
-	public enum OperationTypes {PreSort, PreCentralMoment, PreCovUnweighted, PreGroupedAggUnweighted}; // (PreCovWeighted,PreGroupedAggWeighted) will be CombineTertiary	
+	public enum OperationTypes {PreSort, PreCentralMoment, PreCovUnweighted, PreGroupedAggUnweighted}
 	OperationTypes operation;
 
 	/**
@@ -109,7 +109,7 @@ public class CombineBinary extends Lop
 	public static CombineBinary constructCombineLop(OperationTypes op, Lop input1, 
 			Lop input2, DataType dt, ValueType vt) {
 		
-		HashSet<Lop> set1 = new HashSet<Lop>();
+		HashSet<Lop> set1 = new HashSet<>();
 		set1.addAll(input1.getOutputs());
 		
 		// find intersection of input1.getOutputs() and input2.getOutputs();

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/CombineTernary.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/CombineTernary.java b/src/main/java/org/apache/sysml/lops/CombineTernary.java
index 9200f5c..d49e099 100644
--- a/src/main/java/org/apache/sysml/lops/CombineTernary.java
+++ b/src/main/java/org/apache/sysml/lops/CombineTernary.java
@@ -37,7 +37,7 @@ public class CombineTernary extends Lop
 	
 	public enum OperationTypes {
 		PreCovWeighted
-	};
+	}
 
 	OperationTypes operation;
 
@@ -97,7 +97,7 @@ public class CombineTernary extends Lop
 
 	public static CombineTernary constructCombineLop( OperationTypes op, Lop input1, Lop input2, Lop input3, DataType dt, ValueType vt) {
 
-		HashSet<Lop> set1 = new HashSet<Lop>();
+		HashSet<Lop> set1 = new HashSet<>();
 		set1.addAll(input1.getOutputs());
 
 		// find intersection of input1.getOutputs() and input2.getOutputs()

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/CombineUnary.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/CombineUnary.java b/src/main/java/org/apache/sysml/lops/CombineUnary.java
index 4882e3c..a3e92e7 100644
--- a/src/main/java/org/apache/sysml/lops/CombineUnary.java
+++ b/src/main/java/org/apache/sysml/lops/CombineUnary.java
@@ -80,7 +80,7 @@ public class CombineUnary extends Lop
 	public static CombineUnary constructCombineLop(Lop input1, 
 			DataType dt, ValueType vt) {
 		
-		HashSet<Lop> set1 = new HashSet<Lop>();
+		HashSet<Lop> set1 = new HashSet<>();
 		set1.addAll(input1.getOutputs());
 			
 		for (Lop lop  : set1) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/ConvolutionTransform.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/ConvolutionTransform.java b/src/main/java/org/apache/sysml/lops/ConvolutionTransform.java
index 121112b..947b019 100644
--- a/src/main/java/org/apache/sysml/lops/ConvolutionTransform.java
+++ b/src/main/java/org/apache/sysml/lops/ConvolutionTransform.java
@@ -33,7 +33,7 @@ public class ConvolutionTransform extends Lop
 		MAX_POOLING, MAX_POOLING_BACKWARD, RELU_MAX_POOLING, RELU_BACKWARD, RELU_MAX_POOLING_BACKWARD,
 		DIRECT_CONV2D, DIRECT_CONV2D_BACKWARD_FILTER, DIRECT_CONV2D_BACKWARD_DATA,
 		BIAS_ADD, DIRECT_CONV2D_BIAS_ADD, BIAS_MULTIPLY
-	};
+	}
 	
 	private OperationTypes operation = null;
 	private int numThreads = -1;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/Data.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/Data.java b/src/main/java/org/apache/sysml/lops/Data.java
index 3d5db8a..56601be 100644
--- a/src/main/java/org/apache/sysml/lops/Data.java
+++ b/src/main/java/org/apache/sysml/lops/Data.java
@@ -40,7 +40,7 @@ import org.apache.sysml.parser.Expression.ValueType;
 public class Data extends Lop  
 {
 	
-	public enum OperationTypes {READ,WRITE};
+	public enum OperationTypes {READ,WRITE}
 	
 	FileFormatTypes formatType = FileFormatTypes.BINARY;
 	OperationTypes operation;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/FunctionCallCP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/FunctionCallCP.java b/src/main/java/org/apache/sysml/lops/FunctionCallCP.java
index 0fb997a..3490b8d 100644
--- a/src/main/java/org/apache/sysml/lops/FunctionCallCP.java
+++ b/src/main/java/org/apache/sysml/lops/FunctionCallCP.java
@@ -44,7 +44,7 @@ public class FunctionCallCP extends Lop
 	{
 		this(inputs, fnamespace, fname, outputs, et);
 		if(outputHops != null) {
-			_outputLops = new ArrayList<Lop>();
+			_outputLops = new ArrayList<>();
 			for(Hop h : outputHops)
 				_outputLops.add( h.constructLops() );
 		}

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/Group.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/Group.java b/src/main/java/org/apache/sysml/lops/Group.java
index 7fe238b..1bedd7e 100644
--- a/src/main/java/org/apache/sysml/lops/Group.java
+++ b/src/main/java/org/apache/sysml/lops/Group.java
@@ -30,7 +30,7 @@ import org.apache.sysml.parser.Expression.*;
 
 public class Group extends Lop  
 {
-	public enum OperationTypes {Sort};
+	public enum OperationTypes {Sort}
 	
 	OperationTypes operation;
 	

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/Lop.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/Lop.java b/src/main/java/org/apache/sysml/lops/Lop.java
index 238e329..48554d9 100644
--- a/src/main/java/org/apache/sysml/lops/Lop.java
+++ b/src/main/java/org/apache/sysml/lops/Lop.java
@@ -61,14 +61,14 @@ public abstract class Lop
 		SpoofFused,                                         //CP/SP generated fused operator
 		/** CP operation on a variable number of operands */
 		MULTIPLE_CP
-	};
+	}
 
 	/**
 	 * Lop types
 	 */
 	public enum SimpleInstType {
 		Scalar
-	};
+	}
 
 	public enum VisitStatus {
 		DONE, NOTVISITED
@@ -138,8 +138,8 @@ public abstract class Lop
 		type = t;
 		_dataType = dt; // data type of the output produced from this LOP
 		_valueType = vt; // value type of the output produced from this LOP
-		inputs = new ArrayList<Lop>();
-		outputs = new ArrayList<Lop>();
+		inputs = new ArrayList<>();
+		outputs = new ArrayList<>();
 		outParams = new OutputParameters();
 		lps = new LopProperties();
 	}

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/LopProperties.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/LopProperties.java b/src/main/java/org/apache/sysml/lops/LopProperties.java
index 5720487..24b43dc 100644
--- a/src/main/java/org/apache/sysml/lops/LopProperties.java
+++ b/src/main/java/org/apache/sysml/lops/LopProperties.java
@@ -39,8 +39,8 @@ public class LopProperties
 	 * </ul>
 	 *
 	 */
-	public enum ExecType { CP, CP_FILE, MR, SPARK, GPU, INVALID };
-	public enum ExecLocation {INVALID, RecordReader, Map, MapOrReduce, MapAndReduce, Reduce, Data, ControlProgram };
+	public enum ExecType { CP, CP_FILE, MR, SPARK, GPU, INVALID }
+	public enum ExecLocation {INVALID, RecordReader, Map, MapOrReduce, MapAndReduce, Reduce, Data, ControlProgram }
 
 	// static variable to assign an unique ID to every lop that is created
 	private static IDSequence UniqueLopID = null;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/MultipleCP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/MultipleCP.java b/src/main/java/org/apache/sysml/lops/MultipleCP.java
index 4e2b5a8..2560861 100644
--- a/src/main/java/org/apache/sysml/lops/MultipleCP.java
+++ b/src/main/java/org/apache/sysml/lops/MultipleCP.java
@@ -33,7 +33,7 @@ public class MultipleCP extends Lop {
 
 	public enum OperationType {
 		PRINTF
-	};
+	}
 
 	OperationType operationType;
 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/OutputParameters.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/OutputParameters.java b/src/main/java/org/apache/sysml/lops/OutputParameters.java
index 86866c1..bdabdad 100644
--- a/src/main/java/org/apache/sysml/lops/OutputParameters.java
+++ b/src/main/java/org/apache/sysml/lops/OutputParameters.java
@@ -29,10 +29,9 @@ import org.apache.sysml.runtime.controlprogram.caching.MatrixObject.UpdateType;
 
 public class OutputParameters 
 {
-	
 	public enum Format {
 		TEXT, BINARY, MM, CSV
-	};
+	}
 
 	private boolean _blocked = true;
 	private long _num_rows = -1;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/ParameterizedBuiltin.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/ParameterizedBuiltin.java b/src/main/java/org/apache/sysml/lops/ParameterizedBuiltin.java
index 81b8f1f..6df8308 100644
--- a/src/main/java/org/apache/sysml/lops/ParameterizedBuiltin.java
+++ b/src/main/java/org/apache/sysml/lops/ParameterizedBuiltin.java
@@ -40,7 +40,7 @@ public class ParameterizedBuiltin extends Lop
 		CDF, INVCDF, RMEMPTY, REPLACE, REXPAND,
 		TRANSFORMAPPLY, TRANSFORMDECODE, TRANSFORMCOLMAP, TRANSFORMMETA,
 		TOSTRING
-	};
+	}
 	
 	private OperationTypes _operation;
 	private HashMap<String, Lop> _inputParams;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/PartialAggregate.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/PartialAggregate.java b/src/main/java/org/apache/sysml/lops/PartialAggregate.java
index cf7826e..0517ca5 100644
--- a/src/main/java/org/apache/sysml/lops/PartialAggregate.java
+++ b/src/main/java/org/apache/sysml/lops/PartialAggregate.java
@@ -40,7 +40,7 @@ public class PartialAggregate extends Lop
 		RowCol, 
 		Row, 
 		Col
-	};
+	}
 
 	public enum CorrectionLocationType { 
 		NONE, 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/PickByCount.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/PickByCount.java b/src/main/java/org/apache/sysml/lops/PickByCount.java
index 9ad45b9..513724b 100644
--- a/src/main/java/org/apache/sysml/lops/PickByCount.java
+++ b/src/main/java/org/apache/sysml/lops/PickByCount.java
@@ -36,7 +36,7 @@ public class PickByCount extends Lop
 		RANGEPICK, 
 		IQM, 
 		MEDIAN
-	};	
+	}
 	
 	private OperationTypes operation;
 	private boolean inMemoryInput = false;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/SortKeys.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/SortKeys.java b/src/main/java/org/apache/sysml/lops/SortKeys.java
index 6344eda..b29d7b8 100644
--- a/src/main/java/org/apache/sysml/lops/SortKeys.java
+++ b/src/main/java/org/apache/sysml/lops/SortKeys.java
@@ -36,7 +36,7 @@ public class SortKeys extends Lop
 		WithWeights, 
 		WithoutWeights,
 		Indexes,
-	};
+	}
 	
 	private OperationTypes operation;
 	private boolean descending = false;
@@ -160,7 +160,7 @@ public class SortKeys extends Lop
 	public static SortKeys constructSortByValueLop(Lop input1, Lop input2, OperationTypes op, 
 			DataType dt, ValueType vt, ExecType et) {
 		
-		HashSet<Lop> set1 = new HashSet<Lop>();
+		HashSet<Lop> set1 = new HashSet<>();
 		set1.addAll(input1.getOutputs());
 		// find intersection of input1.getOutputs() and input2.getOutputs();
 		set1.retainAll(input2.getOutputs());

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/Ternary.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/Ternary.java b/src/main/java/org/apache/sysml/lops/Ternary.java
index eee9574..ba3f884 100644
--- a/src/main/java/org/apache/sysml/lops/Ternary.java
+++ b/src/main/java/org/apache/sysml/lops/Ternary.java
@@ -34,7 +34,6 @@ import org.apache.sysml.parser.Expression.*;
 
 public class Ternary extends Lop 
 {
-	
 	private boolean _ignoreZeros = false;
 	
 	public enum OperationTypes { 
@@ -43,7 +42,8 @@ public class Ternary extends Lop
 		CTABLE_TRANSFORM_HISTOGRAM, 
 		CTABLE_TRANSFORM_WEIGHTED_HISTOGRAM, 
 		CTABLE_EXPAND_SCALAR_WEIGHT, 
-		INVALID };	
+		INVALID 
+	}
 	
 	OperationTypes operation;
 	

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/Transform.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/Transform.java b/src/main/java/org/apache/sysml/lops/Transform.java
index d677f6b..919d16c 100644
--- a/src/main/java/org/apache/sysml/lops/Transform.java
+++ b/src/main/java/org/apache/sysml/lops/Transform.java
@@ -38,7 +38,7 @@ public class Transform extends Lop
 		Reshape,
 		Sort,
 		Rev
-	};
+	}
 	
 	private OperationTypes operation = null;
 	private boolean _bSortIndInMem = false;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/Unary.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/Unary.java b/src/main/java/org/apache/sysml/lops/Unary.java
index 36f186a..d82819c 100644
--- a/src/main/java/org/apache/sysml/lops/Unary.java
+++ b/src/main/java/org/apache/sysml/lops/Unary.java
@@ -45,7 +45,7 @@ public class Unary extends Lop
 		SPROP, SIGMOID, SELP, SUBTRACT_NZ, LOG_NZ,
 		CAST_AS_MATRIX, CAST_AS_FRAME,
 		NOTSUPPORTED
-	};
+	}
 
 	private OperationTypes operation;
 	private Lop valInput;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/UnaryCP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/UnaryCP.java b/src/main/java/org/apache/sysml/lops/UnaryCP.java
index c83baf4..1ccafe7 100644
--- a/src/main/java/org/apache/sysml/lops/UnaryCP.java
+++ b/src/main/java/org/apache/sysml/lops/UnaryCP.java
@@ -37,7 +37,7 @@ public class UnaryCP extends Lop
 		NOT, ABS, SIN, COS, TAN, ASIN, ACOS, ATAN, SQRT, LOG, EXP, SINH, COSH, TANH,
 		CAST_AS_SCALAR, CAST_AS_MATRIX, CAST_AS_FRAME, CAST_AS_DOUBLE, CAST_AS_INT, CAST_AS_BOOLEAN, 
 		PRINT, NROW, NCOL, LENGTH, ROUND, STOP, CEIL, FLOOR, CUMSUM
-	};
+	}
 	
 	public static final String CAST_AS_SCALAR_OPCODE = "castdts";
 	public static final String CAST_AS_MATRIX_OPCODE = "castdtm";

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/lops/compile/Dag.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/lops/compile/Dag.java b/src/main/java/org/apache/sysml/lops/compile/Dag.java
index 8673fc9..c09d1c9 100644
--- a/src/main/java/org/apache/sysml/lops/compile/Dag.java
+++ b/src/main/java/org/apache/sysml/lops/compile/Dag.java
@@ -138,9 +138,9 @@ public class Dag<N extends Lop>
 			fileName = null;
 			varName = null;
 			outInfo = null;
-			preInstructions = new ArrayList<Instruction>(); 
-			postInstructions = new ArrayList<Instruction>(); 
-			lastInstructions = new ArrayList<Instruction>();
+			preInstructions = new ArrayList<>(); 
+			postInstructions = new ArrayList<>(); 
+			lastInstructions = new ArrayList<>();
 		}
 		
 		public String getFileName() {
@@ -184,8 +184,8 @@ public class Dag<N extends Lop>
 	public Dag() 
 	{
 		//allocate internal data structures
-		nodes = new ArrayList<Lop>();
-		IDMap = new HashMap<Long, Integer>();
+		nodes = new ArrayList<>();
+		IDMap = new HashMap<>();
 
 		// get number of reducers from dml config
 		total_reducers = ConfigurationManager.getNumReducers();
@@ -254,7 +254,7 @@ public class Dag<N extends Lop>
 		}
 		
 		// hold all nodes in a vector (needed for ordering)
-		ArrayList<Lop> node_v = new ArrayList<Lop>();
+		ArrayList<Lop> node_v = new ArrayList<>();
 		node_v.addAll(nodes);
 		
 		/*
@@ -286,12 +286,12 @@ public class Dag<N extends Lop>
 			LOG.trace("In delete updated variables");
 
 		// CANDIDATE list of variables which could have been updated in this statement block 
-		HashMap<String, Lop> labelNodeMapping = new HashMap<String, Lop>();
+		HashMap<String, Lop> labelNodeMapping = new HashMap<>();
 		
 		// ACTUAL list of variables whose value is updated, AND the old value of the variable 
 		// is no longer accessible/used.
-		HashSet<String> updatedLabels = new HashSet<String>();
-		HashMap<String, Lop> updatedLabelsLineNum =  new HashMap<String, Lop>();
+		HashSet<String> updatedLabels = new HashSet<>();
+		HashMap<String, Lop> updatedLabelsLineNum =  new HashMap<>();
 		
 		// first capture all transient read variables
 		for ( Lop node : nodeV ) {
@@ -377,7 +377,7 @@ public class Dag<N extends Lop>
 	}
 
 	private static ArrayList<ArrayList<Lop>> createNodeVectors(int size) {
-		ArrayList<ArrayList<Lop>> arr = new ArrayList<ArrayList<Lop>>();
+		ArrayList<ArrayList<Lop>> arr = new ArrayList<>();
 
 		// for each job type, we need to create a vector.
 		// additionally, create another vector for execNodes
@@ -552,7 +552,7 @@ public class Dag<N extends Lop>
 		 * If the input of a MMCJ/MMRJ job (must have executed in a Mapper) is used
 		 * by multiple lops then we should mark it as not-finished.
 		 */
-		ArrayList<Lop> nodesWithUnfinishedOutputs = new ArrayList<Lop>();
+		ArrayList<Lop> nodesWithUnfinishedOutputs = new ArrayList<>();
 		int[] jobIndices = {JobType.MMCJ.getId()};
 		Lop.Type[] lopTypes = { Lop.Type.MMCJ};
 		
@@ -786,21 +786,21 @@ public class Dag<N extends Lop>
 			LOG.trace("Grouping DAG ============");
 
 		// nodes to be executed in current iteration
-		ArrayList<Lop> execNodes = new ArrayList<Lop>();
+		ArrayList<Lop> execNodes = new ArrayList<>();
 		// nodes that have already been processed
-		ArrayList<Lop> finishedNodes = new ArrayList<Lop>();
+		ArrayList<Lop> finishedNodes = new ArrayList<>();
 		// nodes that are queued for the following iteration
-		ArrayList<Lop> queuedNodes = new ArrayList<Lop>();
+		ArrayList<Lop> queuedNodes = new ArrayList<>();
 
 		ArrayList<ArrayList<Lop>> jobNodes = createNodeVectors(JobType.getNumJobTypes());
 		
 		// list of instructions
-		ArrayList<Instruction> inst = new ArrayList<Instruction>();
+		ArrayList<Instruction> inst = new ArrayList<>();
 
 		//ArrayList<Instruction> preWriteDeleteInst = new ArrayList<Instruction>();
-		ArrayList<Instruction> writeInst = new ArrayList<Instruction>();
-		ArrayList<Instruction> deleteInst = new ArrayList<Instruction>();
-		ArrayList<Instruction> endOfBlockInst = new ArrayList<Instruction>();
+		ArrayList<Instruction> writeInst = new ArrayList<>();
+		ArrayList<Instruction> deleteInst = new ArrayList<>();
+		ArrayList<Instruction> endOfBlockInst = new ArrayList<>();
 
 		// remove files for transient reads that are updated.
 		deleteUpdatedTransientReadVariables(sb, node_v, writeInst);
@@ -1305,11 +1305,11 @@ public class Dag<N extends Lop>
 			ArrayList<Instruction> inst, ArrayList<Instruction> writeInst, ArrayList<Instruction> deleteInst) throws LopsException, DMLRuntimeException {
 
 		// nodes to be deleted from execnodes
-		ArrayList<Lop> markedNodes = new ArrayList<Lop>();
+		ArrayList<Lop> markedNodes = new ArrayList<>();
 
 		// variable names to be deleted
-		ArrayList<String> var_deletions = new ArrayList<String>();
-		HashMap<String, Lop> var_deletionsLineNum =  new HashMap<String, Lop>();
+		ArrayList<String> var_deletions = new ArrayList<>();
+		HashMap<String, Lop> var_deletionsLineNum =  new HashMap<>();
 		
 		boolean doRmVar = false;
 
@@ -1640,7 +1640,7 @@ public class Dag<N extends Lop>
 		// Evaluate each lop in <code>execNodes</code> for removal.
 		// Add lops to be removed to <code>markedNodes</code>.
 		
-		ArrayList<Lop> markedNodes = new ArrayList<Lop>();
+		ArrayList<Lop> markedNodes = new ArrayList<>();
 		for (Lop tmpNode : execNodes ) {
 
 			if (LOG.isTraceEnabled()) {
@@ -2015,7 +2015,7 @@ public class Dag<N extends Lop>
 	private ArrayList<ArrayList<Lop>> splitGMRNodesByRecordReader(ArrayList<Lop> gmrnodes) 
 	{
 		// obtain the list of record reader nodes
-		ArrayList<Lop> rrnodes = new ArrayList<Lop>();
+		ArrayList<Lop> rrnodes = new ArrayList<>();
 		for (Lop gmrnode : gmrnodes ) {
 			if (gmrnode.getExecLocation() == ExecLocation.RecordReader)
 				rrnodes.add(gmrnode);
@@ -2080,7 +2080,7 @@ public class Dag<N extends Lop>
 	{
 		printJobNodes(jobNodes);
 		
-		ArrayList<Instruction> rmvarinst = new ArrayList<Instruction>();
+		ArrayList<Instruction> rmvarinst = new ArrayList<>();
 		for (JobType jt : JobType.values()) { 
 			
 			// do nothing, if jt = INVALID or ANY
@@ -2108,7 +2108,7 @@ public class Dag<N extends Lop>
 					// We should split the nodes so that a separate job is produced for each shuffle instruction.
 					Lop.Type splittingLopType = jt.getShuffleLopType();
 					
-					ArrayList<Lop> nodesForASingleJob = new ArrayList<Lop>();
+					ArrayList<Lop> nodesForASingleJob = new ArrayList<>();
 					for (int i = 0; i < jobNodes.get(index).size(); i++) {
 						if (jobNodes.get(index).get(i).getType() == splittingLopType) {
 							nodesForASingleJob.clear();
@@ -2669,36 +2669,36 @@ public class Dag<N extends Lop>
 			ArrayList<Instruction> inst, ArrayList<Instruction> writeinst, ArrayList<Instruction> deleteinst, ArrayList<Instruction> rmvarinst, 
 			JobType jt) throws LopsException, DMLRuntimeException
 	{
-		ArrayList<Byte> resultIndices = new ArrayList<Byte>();
-		ArrayList<String> inputs = new ArrayList<String>();
-		ArrayList<String> outputs = new ArrayList<String>();
-		ArrayList<InputInfo> inputInfos = new ArrayList<InputInfo>();
-		ArrayList<OutputInfo> outputInfos = new ArrayList<OutputInfo>();
-		ArrayList<Long> numRows = new ArrayList<Long>();
-		ArrayList<Long> numCols = new ArrayList<Long>();
-		ArrayList<Long> numRowsPerBlock = new ArrayList<Long>();
-		ArrayList<Long> numColsPerBlock = new ArrayList<Long>();
-		ArrayList<String> mapperInstructions = new ArrayList<String>();
-		ArrayList<String> randInstructions = new ArrayList<String>();
-		ArrayList<String> recordReaderInstructions = new ArrayList<String>();
+		ArrayList<Byte> resultIndices = new ArrayList<>();
+		ArrayList<String> inputs = new ArrayList<>();
+		ArrayList<String> outputs = new ArrayList<>();
+		ArrayList<InputInfo> inputInfos = new ArrayList<>();
+		ArrayList<OutputInfo> outputInfos = new ArrayList<>();
+		ArrayList<Long> numRows = new ArrayList<>();
+		ArrayList<Long> numCols = new ArrayList<>();
+		ArrayList<Long> numRowsPerBlock = new ArrayList<>();
+		ArrayList<Long> numColsPerBlock = new ArrayList<>();
+		ArrayList<String> mapperInstructions = new ArrayList<>();
+		ArrayList<String> randInstructions = new ArrayList<>();
+		ArrayList<String> recordReaderInstructions = new ArrayList<>();
 		int numReducers = 0;
 		int replication = 1;
-		ArrayList<String> inputLabels = new ArrayList<String>();
-		ArrayList<String> outputLabels = new ArrayList<String>();
-		ArrayList<Instruction> renameInstructions = new ArrayList<Instruction>();
-		ArrayList<Instruction> variableInstructions = new ArrayList<Instruction>();
-		ArrayList<Instruction> postInstructions = new ArrayList<Instruction>();
+		ArrayList<String> inputLabels = new ArrayList<>();
+		ArrayList<String> outputLabels = new ArrayList<>();
+		ArrayList<Instruction> renameInstructions = new ArrayList<>();
+		ArrayList<Instruction> variableInstructions = new ArrayList<>();
+		ArrayList<Instruction> postInstructions = new ArrayList<>();
 		ArrayList<Integer> MRJobLineNumbers = null;
 		if(DMLScript.ENABLE_DEBUG_MODE) {
-			MRJobLineNumbers = new ArrayList<Integer>();
+			MRJobLineNumbers = new ArrayList<>();
 		}
 		
-		ArrayList<Lop> inputLops = new ArrayList<Lop>();
+		ArrayList<Lop> inputLops = new ArrayList<>();
 		
 		boolean cellModeOverride = false;
 		
 		/* Find the nodes that produce an output */
-		ArrayList<Lop> rootNodes = new ArrayList<Lop>();
+		ArrayList<Lop> rootNodes = new ArrayList<>();
 		getOutputNodes(execNodes, rootNodes, jt);
 		if( LOG.isTraceEnabled() )
 			LOG.trace("# of root nodes = " + rootNodes.size());
@@ -2706,7 +2706,7 @@ public class Dag<N extends Lop>
 		
 		/* Remove transient writes that are simple copy of transient reads */
 		if (jt == JobType.GMR || jt == JobType.GMRCELL) {
-			ArrayList<Lop> markedNodes = new ArrayList<Lop>();
+			ArrayList<Lop> markedNodes = new ArrayList<>();
 			// only keep data nodes that are results of some computation.
 			for ( Lop rnode : rootNodes ) {
 				if (rnode.getExecLocation() == ExecLocation.Data
@@ -2731,7 +2731,7 @@ public class Dag<N extends Lop>
 		}
 		
 		// structure that maps node to their indices that will be used in the instructions
-		HashMap<Lop, Integer> nodeIndexMapping = new HashMap<Lop, Integer>();
+		HashMap<Lop, Integer> nodeIndexMapping = new HashMap<>();
 		
 		/* Determine all input data files */
 		
@@ -2799,9 +2799,9 @@ public class Dag<N extends Lop>
 
 		/* Get Shuffle and Reducer Instructions */
 		
-		ArrayList<String> shuffleInstructions = new ArrayList<String>();
-		ArrayList<String> aggInstructionsReducer = new ArrayList<String>();
-		ArrayList<String> otherInstructionsReducer = new ArrayList<String>();
+		ArrayList<String> shuffleInstructions = new ArrayList<>();
+		ArrayList<String> aggInstructionsReducer = new ArrayList<>();
+		ArrayList<String> otherInstructionsReducer = new ArrayList<>();
 
 		for( Lop rn : rootNodes ) {
 			int resultIndex = getAggAndOtherInstructions(
@@ -2962,7 +2962,7 @@ public class Dag<N extends Lop>
 		if (!execNodes.contains(node))
 			return ret_val;
 
-		ArrayList<Integer> inputIndices = new ArrayList<Integer>();
+		ArrayList<Integer> inputIndices = new ArrayList<>();
 
 		// recurse
 		// For WRITE, since the first element from input is the real input (the other elements
@@ -3216,7 +3216,7 @@ public class Dag<N extends Lop>
 		if (!execNodes.contains(node))
 			return -1;
 
-		ArrayList<Integer> inputIndices = new ArrayList<Integer>();
+		ArrayList<Integer> inputIndices = new ArrayList<>();
 		int max_input_index = -1;
 		//N child_for_max_input_index = null;
 
@@ -3317,7 +3317,7 @@ public class Dag<N extends Lop>
 		if (!execNodes.contains(node))
 			return -1;
 
-		ArrayList<Integer> inputIndices = new ArrayList<Integer>();
+		ArrayList<Integer> inputIndices = new ArrayList<>();
 		int max_input_index = -1;
 		// get mapper instructions
 		for( Lop childNode : node.getInputs()) {
@@ -3844,7 +3844,7 @@ public class Dag<N extends Lop>
 	private static ArrayList<Instruction> collapseAssignvarAndRmvarInstructions(ArrayList<Instruction> insts) 
 		throws DMLRuntimeException 
 	{
-		ArrayList<Instruction> ret = new ArrayList<Instruction>();
+		ArrayList<Instruction> ret = new ArrayList<>();
 		Iterator<Instruction> iter = insts.iterator();
 		while( iter.hasNext() ) {
 			Instruction inst = iter.next();
@@ -3874,8 +3874,8 @@ public class Dag<N extends Lop>
 	private static ArrayList<Instruction> createPackedRmvarInstructions(ArrayList<Instruction> insts) 
 		throws DMLRuntimeException 
 	{
-		ArrayList<Instruction> ret = new ArrayList<Instruction>();
-		ArrayList<String> currRmVar = new ArrayList<String>();
+		ArrayList<Instruction> ret = new ArrayList<>();
+		ArrayList<String> currRmVar = new ArrayList<>();
 		for( Instruction inst : insts ) {
 			if( inst instanceof VariableCPInstruction 
 				&& ((VariableCPInstruction)inst).isRemoveVariableNoFile() ) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/AssignmentStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/AssignmentStatement.java b/src/main/java/org/apache/sysml/parser/AssignmentStatement.java
index 2df4ed0..3d12394 100644
--- a/src/main/java/org/apache/sysml/parser/AssignmentStatement.java
+++ b/src/main/java/org/apache/sysml/parser/AssignmentStatement.java
@@ -48,14 +48,14 @@ public class AssignmentStatement extends Statement
 	}
 
 	public AssignmentStatement(DataIdentifier di, Expression exp, ParseInfo parseInfo) {
-		_targetList = new ArrayList<DataIdentifier>();
+		_targetList = new ArrayList<>();
 		_targetList.add(di);
 		_source = exp;
 		setParseInfo(parseInfo);
 	}
 
 	public AssignmentStatement(ParserRuleContext ctx, DataIdentifier di, Expression exp) throws LanguageException {
-		_targetList = new ArrayList<DataIdentifier>();
+		_targetList = new ArrayList<>();
 		_targetList.add(di);
 		_source = exp;
 		setCtxValues(ctx);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java b/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
index d5fa65d..62ed9fb 100644
--- a/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
+++ b/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
@@ -246,7 +246,7 @@ public class BuiltinFunctionExpression extends DataIdentifier
 	
 	private ArrayList<ParameterExpression> orderConvolutionParams(ArrayList<ParameterExpression> paramExpression, 
 			int skip) throws LanguageException {
-		ArrayList<ParameterExpression> newParams = new ArrayList<ParameterExpression>();
+		ArrayList<ParameterExpression> newParams = new ArrayList<>();
 
 		for(int i = 0; i < skip; i++)
 			newParams.add(paramExpression.get(i));
@@ -274,7 +274,7 @@ public class BuiltinFunctionExpression extends DataIdentifier
 
 	private ArrayList<ParameterExpression> replaceListParams(ArrayList<ParameterExpression> paramExpression,
 			String inputVarName, String outputVarName, int startIndex) throws LanguageException {
-		ArrayList<ParameterExpression> newParamExpression = new ArrayList<ParameterExpression>();
+		ArrayList<ParameterExpression> newParamExpression = new ArrayList<>();
 		int i = startIndex;
 		int j = 1; // Assumption: sequential ordering pool_size1, pool_size2 
 		for (ParameterExpression expr : paramExpression) {
@@ -291,7 +291,7 @@ public class BuiltinFunctionExpression extends DataIdentifier
 
 	private ArrayList<ParameterExpression> expandListParams(ArrayList<ParameterExpression> paramExpression, 
 			HashSet<String> paramsToExpand) throws LanguageException {
-		ArrayList<ParameterExpression> newParamExpressions = new ArrayList<ParameterExpression>();
+		ArrayList<ParameterExpression> newParamExpressions = new ArrayList<>();
 		for(ParameterExpression expr : paramExpression) {
 			if(paramsToExpand.contains(expr.getName())) {
 				if(expr.getExpr() instanceof ExpressionList) {
@@ -316,14 +316,14 @@ public class BuiltinFunctionExpression extends DataIdentifier
 		try {
 			if(_opcode == BuiltinFunctionOp.CONV2D || _opcode == BuiltinFunctionOp.CONV2D_BACKWARD_FILTER 
 					|| _opcode == BuiltinFunctionOp.CONV2D_BACKWARD_DATA) {
-				HashSet<String> expand = new HashSet<String>();
+				HashSet<String> expand = new HashSet<>();
 				expand.add("input_shape"); expand.add("filter_shape"); expand.add("stride"); expand.add("padding");
 				paramExpression = expandListParams(paramExpression, expand);
 				paramExpression = orderConvolutionParams(paramExpression, 2);
 			}
 			else if(_opcode == BuiltinFunctionOp.MAX_POOL || 
 					_opcode == BuiltinFunctionOp.MAX_POOL_BACKWARD) {
-				HashSet<String> expand = new HashSet<String>();
+				HashSet<String> expand = new HashSet<>();
 				expand.add("input_shape"); expand.add("pool_size"); expand.add("stride"); expand.add("padding");
 				paramExpression = expandListParams(paramExpression, expand);
 				paramExpression.add(new ParameterExpression("filter_shape1", new IntIdentifier(1, this)));

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/DMLProgram.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/DMLProgram.java b/src/main/java/org/apache/sysml/parser/DMLProgram.java
index 716da40..43be802 100644
--- a/src/main/java/org/apache/sysml/parser/DMLProgram.java
+++ b/src/main/java/org/apache/sysml/parser/DMLProgram.java
@@ -38,9 +38,9 @@ public class DMLProgram
 	private static final Log LOG = LogFactory.getLog(DMLProgram.class.getName());
 	
 	public DMLProgram(){
-		_blocks = new ArrayList<StatementBlock>();
-		_functionBlocks = new HashMap<String,FunctionStatementBlock>();
-		_namespaces = new HashMap<String,DMLProgram>();
+		_blocks = new ArrayList<>();
+		_functionBlocks = new HashMap<>();
+		_namespaces = new HashMap<>();
 	}
 	
 	public HashMap<String,DMLProgram> getNamespaces(){
@@ -97,7 +97,7 @@ public class DMLProgram
 	public ArrayList<FunctionStatementBlock> getFunctionStatementBlocks() 
 		throws LanguageException
 	{
-		ArrayList<FunctionStatementBlock> ret = new ArrayList<FunctionStatementBlock>();
+		ArrayList<FunctionStatementBlock> ret = new ArrayList<>();
 		
 		for( DMLProgram nsProg : _namespaces.values() )
 			ret.addAll(nsProg._functionBlocks.values());

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/DMLTranslator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/DMLTranslator.java b/src/main/java/org/apache/sysml/parser/DMLTranslator.java
index d669f73..d41943d 100644
--- a/src/main/java/org/apache/sysml/parser/DMLTranslator.java
+++ b/src/main/java/org/apache/sysml/parser/DMLTranslator.java
@@ -127,7 +127,7 @@ public class DMLTranslator
 			for (String fname :  dmlp.getFunctionStatementBlocks(namespaceKey).keySet()) {
 				FunctionStatementBlock fblock = dmlp.getFunctionStatementBlock(namespaceKey,fname);
 			
-				HashMap<String, ConstIdentifier> constVars = new HashMap<String, ConstIdentifier>();
+				HashMap<String, ConstIdentifier> constVars = new HashMap<>();
 				VariableSet vs = new VariableSet();
 			
 				// add the input variables for the function to input variable list
@@ -152,7 +152,7 @@ public class DMLTranslator
 		
 		// handle regular blocks -- "main" program
 		VariableSet vs = new VariableSet();
-		HashMap<String, ConstIdentifier> constVars = new HashMap<String, ConstIdentifier>();
+		HashMap<String, ConstIdentifier> constVars = new HashMap<>();
 		for (int i = 0; i < dmlp.getNumStatementBlocks(); i++) {
 			StatementBlock sb = dmlp.getStatementBlock(i);
 			vs = sb.validate(dmlp, vs, constVars, fWriteRead);
@@ -163,11 +163,11 @@ public class DMLTranslator
 		if( fWriteRead ) 
 		{
 			//propagate size and datatypes into read
-			prepareReadAfterWrite(dmlp, new HashMap<String, DataIdentifier>());
+			prepareReadAfterWrite(dmlp, new HashMap<>());
 		
 			//re-validate main program for datatype propagation
 			vs = new VariableSet();
-			constVars = new HashMap<String, ConstIdentifier>();
+			constVars = new HashMap<>();
 			for (int i = 0; i < dmlp.getNumStatementBlocks(); i++) {
 				StatementBlock sb = dmlp.getStatementBlock(i);
 				vs = sb.validate(dmlp, vs, constVars, fWriteRead);
@@ -431,7 +431,7 @@ public class DMLTranslator
 			if (sb.get_hops() == null)
 				sb.set_hops(new ArrayList<Hop>());
 			
-			ArrayList<Lop> lops = new ArrayList<Lop>();
+			ArrayList<Lop> lops = new ArrayList<>();
 			for (Hop hop : sb.get_hops()) {
 				lops.add(hop.constructLops());
 			}
@@ -492,11 +492,11 @@ public class DMLTranslator
 		if (sb instanceof WhileStatementBlock){
 		
 			// create DAG for loop predicates
-			pred_dag = new Dag<Lop>();
+			pred_dag = new Dag<>();
 			((WhileStatementBlock) sb).get_predicateLops().addToDag(pred_dag);
 			
 			// create instructions for loop predicates
-			pred_instruct = new ArrayList<Instruction>();
+			pred_instruct = new ArrayList<>();
 			ArrayList<Instruction> pInst = pred_dag.getJobs(null, config);
 			for (Instruction i : pInst ) {
 				pred_instruct.add(i);
@@ -540,11 +540,11 @@ public class DMLTranslator
 		else if (sb instanceof IfStatementBlock){
 		
 			// create DAG for loop predicates
-			pred_dag = new Dag<Lop>();
+			pred_dag = new Dag<>();
 			((IfStatementBlock) sb).get_predicateLops().addToDag(pred_dag);
 			
 			// create instructions for loop predicates
-			pred_instruct = new ArrayList<Instruction>();
+			pred_instruct = new ArrayList<>();
 			ArrayList<Instruction> pInst = pred_dag.getJobs(null, config);
 			for (Instruction i : pInst ) {
 				pred_instruct.add(i);
@@ -598,9 +598,9 @@ public class DMLTranslator
 			ForStatementBlock fsb = (ForStatementBlock) sb;
 			
 			// create DAGs for loop predicates 
-			Dag<Lop> fromDag = new Dag<Lop>();
-			Dag<Lop> toDag = new Dag<Lop>();
-			Dag<Lop> incrementDag = new Dag<Lop>();
+			Dag<Lop> fromDag = new Dag<>();
+			Dag<Lop> toDag = new Dag<>();
+			Dag<Lop> incrementDag = new Dag<>();
 			if( fsb.getFromHops()!=null )
 				fsb.getFromLops().addToDag(fromDag);
 			if( fsb.getToHops()!=null )
@@ -747,7 +747,7 @@ public class DMLTranslator
 			ProgramBlock rtpb = new ProgramBlock(prog);
 		
 			// DAGs for Lops
-			dag = new Dag<Lop>();
+			dag = new Dag<>();
 
 			// check there are actually Lops in to process (loop stmt body will not have any)
 			if (sb.getLops() != null && !sb.getLops().isEmpty()){
@@ -1187,8 +1187,8 @@ public class DMLTranslator
 			return;
 		}
 		
-		HashMap<String, Hop> ids = new HashMap<String, Hop>();
-		ArrayList<Hop> output = new ArrayList<Hop>();
+		HashMap<String, Hop> ids = new HashMap<>();
+		ArrayList<Hop> output = new ArrayList<>();
 
 		VariableSet liveIn 	= sb.liveIn();
 		VariableSet liveOut = sb.liveOut();
@@ -1197,7 +1197,7 @@ public class DMLTranslator
 		VariableSet updatedLiveOut = new VariableSet();
 
 		// handle liveout variables that are updated --> target identifiers for Assignment
-		HashMap<String, Integer> liveOutToTemp = new HashMap<String, Integer>();
+		HashMap<String, Integer> liveOutToTemp = new HashMap<>();
 		for (int i = 0; i < sb.getNumStatements(); i++) {
 			Statement current = sb.getStatement(i);
 			
@@ -1408,10 +1408,10 @@ public class DMLTranslator
 					if( target instanceof IndexedIdentifier ) {
 						String fkey = DMLProgram.constructFunctionKey(fci.getNamespace(),fci.getName());
 						throw new LanguageException("Unsupported function call to '"+fkey+"' in left indexing expression. " +
-								                    "Please, assign the function output to a variable.");
+								"Please, assign the function output to a variable.");
 					}
 					
-					ArrayList<Hop> finputs = new ArrayList<Hop>();
+					ArrayList<Hop> finputs = new ArrayList<>();
 					for (ParameterExpression paramName : fci.getParamExprs()){
 						Hop in = processExpression(paramName.getExpr(), null, ids);
 						finputs.add(in);
@@ -1444,9 +1444,9 @@ public class DMLTranslator
 						throw new LanguageException(source.printErrorLocation() + "function " + fci.getName() + " is undefined in namespace " + fci.getNamespace());
 					}
 					
-					ArrayList<Hop> finputs = new ArrayList<Hop>();
+					ArrayList<Hop> finputs = new ArrayList<>();
 					for (ParameterExpression paramName : fci.getParamExprs()){
-						Hop in = processExpression(paramName.getExpr(), null, ids);						
+						Hop in = processExpression(paramName.getExpr(), null, ids);
 						finputs.add(in);
 					}
 
@@ -1554,7 +1554,7 @@ public class DMLTranslator
 	
 	public void constructHopsForConditionalPredicate(StatementBlock passedSB) throws ParseException {
 
-		HashMap<String, Hop> _ids = new HashMap<String, Hop>();
+		HashMap<String, Hop> _ids = new HashMap<>();
 		
 		// set conditional predicate
 		ConditionalPredicate cp = null;
@@ -1655,7 +1655,7 @@ public class DMLTranslator
 	public void constructHopsForIterablePredicate(ForStatementBlock fsb) 
 		throws ParseException 
 	{
-		HashMap<String, Hop> _ids = new HashMap<String, Hop>();
+		HashMap<String, Hop> _ids = new HashMap<>();
 		
 		// set iterable predicate 
 		ForStatement fs = (ForStatement) fsb.getStatement(0);
@@ -2127,13 +2127,13 @@ public class DMLTranslator
 		
 		// Create an array list to hold the outputs of this lop.
 		// Exact list of outputs are added based on opcode.
-		ArrayList<Hop> outputs = new ArrayList<Hop>();
+		ArrayList<Hop> outputs = new ArrayList<>();
 		
 		// Construct Hop for current builtin function expression based on its type
 		Hop currBuiltinOp = null;
 		switch (source.getOpCode()) {
 			case TRANSFORMENCODE:
-				ArrayList<Hop> inputs = new ArrayList<Hop>();
+				ArrayList<Hop> inputs = new ArrayList<>();
 				inputs.add( processExpression(source.getVarParam("target"), null, hops) );
 				inputs.add( processExpression(source.getVarParam("spec"), null, hops) );
 				String[] outputNames = new String[targetList.size()]; 
@@ -2174,7 +2174,7 @@ public class DMLTranslator
 			HashMap<String, Hop> hops) throws ParseException, HopsException {
 		
 		// this expression has multiple "named" parameters
-		HashMap<String, Hop> paramHops = new HashMap<String,Hop>();
+		HashMap<String, Hop> paramHops = new HashMap<>();
 		
 		// -- construct hops for all input parameters
 		// -- store them in hashmap so that their "name"s are maintained
@@ -2223,7 +2223,7 @@ public class DMLTranslator
 			break;	
 			
 		case ORDER:
-			ArrayList<Hop> inputs = new ArrayList<Hop>();
+			ArrayList<Hop> inputs = new ArrayList<>();
 			inputs.add(paramHops.get("target"));
 			inputs.add(paramHops.get("by"));
 			inputs.add(paramHops.get("decreasing"));
@@ -2295,7 +2295,7 @@ public class DMLTranslator
 			HashMap<String, Hop> hops) throws ParseException, HopsException {
 		
 		// this expression has multiple "named" parameters
-		HashMap<String, Hop> paramHops = new HashMap<String,Hop>();
+		HashMap<String, Hop> paramHops = new HashMap<>();
 		
 		// -- construct hops for all input parameters
 		// -- store them in hashmap so that their "name"s are maintained
@@ -2331,7 +2331,7 @@ public class DMLTranslator
 			break;
 		
 		case MATRIX:
-			ArrayList<Hop> tmp = new ArrayList<Hop>();
+			ArrayList<Hop> tmp = new ArrayList<>();
 			tmp.add( 0, paramHops.get(DataExpression.RAND_DATA) );
 			tmp.add( 1, paramHops.get(DataExpression.RAND_ROWS) );
 			tmp.add( 2, paramHops.get(DataExpression.RAND_COLS) );
@@ -2374,7 +2374,7 @@ public class DMLTranslator
 			HashMap<String, Hop> hops) throws ParseException {
 		
 		// Construct Hops for all inputs
-		ArrayList<Hop> inputs = new ArrayList<Hop>();
+		ArrayList<Hop> inputs = new ArrayList<>();
 		inputs.add( processExpression(source.getFirstExpr(), null, hops) );
 		if ( source.getSecondExpr() != null )
 			inputs.add( processExpression(source.getSecondExpr(), null, hops) );
@@ -2386,7 +2386,7 @@ public class DMLTranslator
 		
 		// Create an array list to hold the outputs of this lop.
 		// Exact list of outputs are added based on opcode.
-		ArrayList<Hop> outputs = new ArrayList<Hop>();
+		ArrayList<Hop> outputs = new ArrayList<>();
 		
 		// Construct Hop for current builtin function expression based on its type
 		Hop currBuiltinOp = null;
@@ -2953,7 +2953,7 @@ public class DMLTranslator
 			break;	
 		
 		case SEQ:
-			HashMap<String,Hop> randParams = new HashMap<String,Hop>();
+			HashMap<String,Hop> randParams = new HashMap<>();
 			randParams.put(Statement.SEQ_FROM, expr);
 			randParams.put(Statement.SEQ_TO, expr2);
 			randParams.put(Statement.SEQ_INCR, (expr3!=null)?expr3 : new LiteralOp(1)); 
@@ -2967,7 +2967,7 @@ public class DMLTranslator
 			
 			// arguments: range/size/replace/seed; defaults: replace=FALSE
 				
-			HashMap<String,Hop> tmpparams = new HashMap<String, Hop>();
+			HashMap<String,Hop> tmpparams = new HashMap<>();
 			tmpparams.put(DataExpression.RAND_MAX, expr); //range
 			tmpparams.put(DataExpression.RAND_ROWS, expr2);
 			tmpparams.put(DataExpression.RAND_COLS, new LiteralOp(1));
@@ -3041,7 +3041,7 @@ public class DMLTranslator
 		}
 		case BIAS_ADD:
 		{
-			ArrayList<Hop> inHops1 = new ArrayList<Hop>();
+			ArrayList<Hop> inHops1 = new ArrayList<>();
 			inHops1.add(expr);
 			inHops1.add(expr2);
 			currBuiltinOp = new ConvolutionOp(target.getName(), target.getDataType(), target.getValueType(), Hop.ConvOp.BIAS_ADD, inHops1);
@@ -3050,7 +3050,7 @@ public class DMLTranslator
 		}
 		case BIAS_MULTIPLY:
 		{
-			ArrayList<Hop> inHops1 = new ArrayList<Hop>();
+			ArrayList<Hop> inHops1 = new ArrayList<>();
 			inHops1.add(expr);
 			inHops1.add(expr2);
 			currBuiltinOp = new ConvolutionOp(target.getName(), target.getDataType(), target.getValueType(), Hop.ConvOp.BIAS_MULTIPLY, inHops1);
@@ -3115,7 +3115,7 @@ public class DMLTranslator
 	}
 
 	private ArrayList<Hop> getALHopsForConvOpPoolingCOL2IM(Hop first, BuiltinFunctionExpression source, int skip, HashMap<String, Hop> hops) throws ParseException {
-		ArrayList<Hop> ret = new ArrayList<Hop>();
+		ArrayList<Hop> ret = new ArrayList<>();
 		ret.add(first);
 		Expression[] allExpr = source.getAllExpr();
 
@@ -3130,7 +3130,7 @@ public class DMLTranslator
 	}
 
 	private ArrayList<Hop> getALHopsForPoolingForwardIM2COL(Hop first, BuiltinFunctionExpression source, int skip, HashMap<String, Hop> hops) throws ParseException {
-		ArrayList<Hop> ret = new ArrayList<Hop>();
+		ArrayList<Hop> ret = new ArrayList<>();
 		ret.add(first);
 		Expression[] allExpr = source.getAllExpr();
 		if(skip != 1) {
@@ -3182,7 +3182,7 @@ public class DMLTranslator
 	}
 
 	private ArrayList<Hop> getALHopsForConvOp(Hop first, BuiltinFunctionExpression source, int skip, HashMap<String, Hop> hops) throws ParseException {
-		ArrayList<Hop> ret = new ArrayList<Hop>();
+		ArrayList<Hop> ret = new ArrayList<>();
 		ret.add(first);
 		Expression[] allExpr = source.getAllExpr();
 		for(int i = skip; i < allExpr.length; i++) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/DataExpression.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/DataExpression.java b/src/main/java/org/apache/sysml/parser/DataExpression.java
index d1d896c..a24bc53 100644
--- a/src/main/java/org/apache/sysml/parser/DataExpression.java
+++ b/src/main/java/org/apache/sysml/parser/DataExpression.java
@@ -382,7 +382,7 @@ public class DataExpression extends DataIdentifier
 
 	public Expression rewriteExpression(String prefix) throws LanguageException {
 		
-		HashMap<String,Expression> newVarParams = new HashMap<String,Expression>();
+		HashMap<String,Expression> newVarParams = new HashMap<>();
 		for( Entry<String, Expression> e : _varParams.entrySet() ){
 			String key = e.getKey();
 			Expression newExpr = e.getValue().rewriteExpression(prefix);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/Expression.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/Expression.java b/src/main/java/org/apache/sysml/parser/Expression.java
index 084850a..1d7303e 100644
--- a/src/main/java/org/apache/sysml/parser/Expression.java
+++ b/src/main/java/org/apache/sysml/parser/Expression.java
@@ -38,21 +38,21 @@ public abstract class Expression implements ParseInfo
 	 */
 	public enum BinaryOp {
 		PLUS, MINUS, MULT, DIV, MODULUS, INTDIV, MATMULT, POW, INVALID
-	};
+	}
 
 	/**
 	 * Relational operators.
 	 */
 	public enum RelationalOp {
 		LESSEQUAL, LESS, GREATEREQUAL, GREATER, EQUAL, NOTEQUAL, INVALID
-	};
+	}
 
 	/**
 	 * Boolean operators.
 	 */
 	public enum BooleanOp {
 		CONDITIONALAND, CONDITIONALOR, LOGICALAND, LOGICALOR, NOT, INVALID
-	};
+	}
 
 	/**
 	 * Built-in function operators.
@@ -136,7 +136,7 @@ public abstract class Expression implements ParseInfo
 		TRACE, 
 		TRANS,
 		VAR
-	};
+	}
 
 	/**
 	 * Parameterized built-in function operators.
@@ -148,7 +148,7 @@ public abstract class Expression implements ParseInfo
 		TRANSFORMAPPLY, TRANSFORMDECODE, TRANSFORMENCODE, TRANSFORMCOLMAP, TRANSFORMMETA,
 		TOSTRING,	// The "toString" method for DML; named arguments accepted to format output
 		INVALID
-	};
+	}
 	
 	/**
 	 * Data operators.
@@ -162,7 +162,7 @@ public abstract class Expression implements ParseInfo
 	 */
 	public enum FunctCallOp {
 		INTERNAL, EXTERNAL
-	};
+	}
 
 	/**
 	 * Data types (matrix, scalar, frame, object, unknown).
@@ -176,21 +176,21 @@ public abstract class Expression implements ParseInfo
 		public boolean isScalar() {
 			return (this == SCALAR);
 		}
-	};
+	}
 
 	/**
 	 * Value types (int, double, string, boolean, object, unknown).
 	 */
 	public enum ValueType {
 		INT, DOUBLE, STRING, BOOLEAN, OBJECT, UNKNOWN
-	};
+	}
 
 	/**
 	 * Format types (text, binary, matrix market, csv, unknown).
 	 */
 	public enum FormatType {
 		TEXT, BINARY, MM, CSV
-	};
+	}
 	
 	protected static final Log LOG = LogFactory.getLog(Expression.class.getName());
 	
@@ -594,7 +594,7 @@ public abstract class Expression implements ParseInfo
 	private int _beginLine, _beginColumn;
 	private int _endLine, _endColumn;
 	private String _text;
-	private ArrayList<String> _parseExceptionList = new ArrayList<String>();
+	private ArrayList<String> _parseExceptionList = new ArrayList<>();
 	
 	public void setFilename(String passed)  { _filename = passed;   }
 	public void setBeginLine(int passed)    { _beginLine = passed;   }

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/ForStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/ForStatement.java b/src/main/java/org/apache/sysml/parser/ForStatement.java
index 23b406b..f1404e1 100644
--- a/src/main/java/org/apache/sysml/parser/ForStatement.java
+++ b/src/main/java/org/apache/sysml/parser/ForStatement.java
@@ -24,10 +24,8 @@ import java.util.ArrayList;
 
 
 public class ForStatement extends Statement
-{	
-
-	
-	protected IterablePredicate 		_predicate;
+{
+	protected IterablePredicate _predicate;
 	protected ArrayList<StatementBlock> _body;
 	
 	public Statement rewriteStatement(String prefix) throws LanguageException{
@@ -37,7 +35,7 @@ public class ForStatement extends Statement
 	
 	public ForStatement(){
 		 _predicate = null;
-		 _body = new ArrayList<StatementBlock>();
+		 _body = new ArrayList<>();
 	}
 	
 	public void setPredicate(IterablePredicate pred){

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/FunctionCallIdentifier.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/FunctionCallIdentifier.java b/src/main/java/org/apache/sysml/parser/FunctionCallIdentifier.java
index 5993091..091d8cb 100644
--- a/src/main/java/org/apache/sysml/parser/FunctionCallIdentifier.java
+++ b/src/main/java/org/apache/sysml/parser/FunctionCallIdentifier.java
@@ -54,7 +54,7 @@ public class FunctionCallIdentifier extends DataIdentifier
 	
 	public Expression rewriteExpression(String prefix) throws LanguageException {
 			
-		ArrayList<ParameterExpression> newParameterExpressions = new ArrayList<ParameterExpression>();
+		ArrayList<ParameterExpression> newParameterExpressions = new ArrayList<>();
 		for (ParameterExpression paramExpr : _paramExprs)
 			newParameterExpressions.add(new ParameterExpression(paramExpr.getName(), paramExpr.getExpr().rewriteExpression(prefix)));
 		

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/FunctionStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/FunctionStatement.java b/src/main/java/org/apache/sysml/parser/FunctionStatement.java
index 07a2284..fdddc92 100644
--- a/src/main/java/org/apache/sysml/parser/FunctionStatement.java
+++ b/src/main/java/org/apache/sysml/parser/FunctionStatement.java
@@ -36,10 +36,10 @@ public class FunctionStatement extends Statement
 	}
 	
 	public FunctionStatement(){
-		 _body = new ArrayList<StatementBlock>();
+		 _body = new ArrayList<>();
 		 _name = null;
-		 _inputParams = new ArrayList<DataIdentifier>();
-		 _outputParams = new ArrayList<DataIdentifier>();
+		 _inputParams = new ArrayList<>();
+		 _outputParams = new ArrayList<>();
 	}
 	
 	public ArrayList<DataIdentifier> getInputParams(){

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/IfStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/IfStatement.java b/src/main/java/org/apache/sysml/parser/IfStatement.java
index 3c890af..cbb0c7b 100644
--- a/src/main/java/org/apache/sysml/parser/IfStatement.java
+++ b/src/main/java/org/apache/sysml/parser/IfStatement.java
@@ -36,8 +36,8 @@ public class IfStatement extends Statement
 	
 	public IfStatement(){
 		 _predicate = null;
-		 _ifBody = new ArrayList<StatementBlock>();
-		 _elseBody = new ArrayList<StatementBlock>();
+		 _ifBody = new ArrayList<>();
+		 _elseBody = new ArrayList<>();
 	}
 	
 	public void setConditionalPredicate(ConditionalPredicate pred){

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/IfStatementBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/IfStatementBlock.java b/src/main/java/org/apache/sysml/parser/IfStatementBlock.java
index 5410aca..1b42e08 100644
--- a/src/main/java/org/apache/sysml/parser/IfStatementBlock.java
+++ b/src/main/java/org/apache/sysml/parser/IfStatementBlock.java
@@ -55,8 +55,8 @@ public class IfStatementBlock extends StatementBlock
 			ifstmt.getConditionalPredicate().setPredicate(constVars.get(((DataIdentifier)pred).getName()));
 		}
 		
-		HashMap<String,ConstIdentifier> constVarsIfCopy = new HashMap<String,ConstIdentifier>(constVars);
-		HashMap<String,ConstIdentifier> constVarsElseCopy = new HashMap<String,ConstIdentifier> (constVars);
+		HashMap<String,ConstIdentifier> constVarsIfCopy = new HashMap<>(constVars);
+		HashMap<String,ConstIdentifier> constVarsElseCopy = new HashMap<> (constVars);
 		
 		VariableSet idsIfCopy 	= new VariableSet(ids);
 		VariableSet idsElseCopy = new VariableSet(ids);
@@ -118,7 +118,7 @@ public class IfStatementBlock extends StatementBlock
 		//		b) ELSE leave out of reconciled set
 		/////////////////////////////////////////////////////////////////////////////////
 		
-		HashMap<String,ConstIdentifier> recConstVars = new HashMap<String,ConstIdentifier>();
+		HashMap<String,ConstIdentifier> recConstVars = new HashMap<>();
 		
 		// STEP 1:  (IF UNION ELSE) MINUS updated vars
 		for (Entry<String,ConstIdentifier> e : constVarsIfCopy.entrySet() ){

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/MultiAssignmentStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/MultiAssignmentStatement.java b/src/main/java/org/apache/sysml/parser/MultiAssignmentStatement.java
index 1174e27..3db1e56 100644
--- a/src/main/java/org/apache/sysml/parser/MultiAssignmentStatement.java
+++ b/src/main/java/org/apache/sysml/parser/MultiAssignmentStatement.java
@@ -28,14 +28,13 @@ import org.apache.sysml.debug.DMLBreakpointManager;
 
 public class MultiAssignmentStatement extends Statement
 {
-		
 	private ArrayList<DataIdentifier> _targetList;
 	private Expression _source;
 		
 	// rewrites statement to support function inlining (creates deep copy) 
 	public Statement rewriteStatement(String prefix) throws LanguageException{
 				
-		ArrayList<DataIdentifier> newTargetList = new ArrayList<DataIdentifier>();
+		ArrayList<DataIdentifier> newTargetList = new ArrayList<>();
 		
 		// rewrite targetList (deep copy)
 		for (DataIdentifier target : _targetList){

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/OutputStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/OutputStatement.java b/src/main/java/org/apache/sysml/parser/OutputStatement.java
index a93f508..a636519 100644
--- a/src/main/java/org/apache/sysml/parser/OutputStatement.java
+++ b/src/main/java/org/apache/sysml/parser/OutputStatement.java
@@ -90,7 +90,7 @@ public class OutputStatement extends Statement
 		
 		// rewrite parameter expressions (creates deep copy)
 		DataOp op = _paramsExpr.getOpCode();
-		HashMap<String,Expression> newExprParams = new HashMap<String,Expression>();
+		HashMap<String,Expression> newExprParams = new HashMap<>();
 		for (String key : _paramsExpr.getVarParams().keySet()){
 			Expression newExpr = _paramsExpr.getVarParam(key).rewriteExpression(prefix);
 			newExprParams.put(key, newExpr);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java b/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java
index 8efbc9f..1e9cc15 100644
--- a/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java
+++ b/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java
@@ -97,15 +97,15 @@ public class ParForStatementBlock extends ForStatementBlock
 	private static HashMap<String, LinearFunction> _fncache; //slower for most (small cases) cases
 	
 	//instance members
-	private long 		      _ID         = -1;
-	private VariableSet       _vsParent   = null;  
+	private final long _ID;
+	private VariableSet       _vsParent   = null;
 	private ArrayList<String> _resultVars = null;
 	private Bounds            _bounds     = null;
 	
 	static
 	{
 		// populate parameter name lookup-table
-		_paramNames = new HashSet<String>();
+		_paramNames = new HashSet<>();
 		_paramNames.add( CHECK ); 
 		_paramNames.add( PAR ); 
 		_paramNames.add( TASK_PARTITIONER ); 
@@ -118,7 +118,7 @@ public class ParForStatementBlock extends ForStatementBlock
 		_paramNames.add( OPT_LOG ); 
 		
 		// populate defaults lookup-table
-		_paramDefaults = new HashMap<String, String>();
+		_paramDefaults = new HashMap<>();
 		_paramDefaults.put( CHECK,             "1" );
 		_paramDefaults.put( PAR,               String.valueOf(InfrastructureAnalyzer.getLocalParallelism()) );
 		_paramDefaults.put( TASK_PARTITIONER,  String.valueOf(PTaskPartitioner.FIXED) );
@@ -130,7 +130,7 @@ public class ParForStatementBlock extends ForStatementBlock
 		_paramDefaults.put( PROFILE,           "0" );
 		_paramDefaults.put( OPT_LOG,           OptimizerUtils.getDefaultLogLevel().toString() );
 		
-		_paramDefaults2 = new HashMap<String, String>(); //OPT_MODE always specified
+		_paramDefaults2 = new HashMap<>(); //OPT_MODE always specified
 		_paramDefaults2.put( CHECK,            "1" );
 		_paramDefaults2.put( PAR,              "-1" );
 		_paramDefaults2.put( TASK_PARTITIONER, String.valueOf(PTaskPartitioner.UNSPECIFIED) );
@@ -146,7 +146,7 @@ public class ParForStatementBlock extends ForStatementBlock
 
 		//initialize function cache
 		if( USE_FN_CACHE ) {
-			_fncache = new HashMap<String, LinearFunction>();
+			_fncache = new HashMap<>();
 		}
 		
 		// for internal debugging only
@@ -156,10 +156,9 @@ public class ParForStatementBlock extends ForStatementBlock
 		}
 	}
 	
-	public ParForStatementBlock()
-	{
-		_ID         = _idSeq.getNextID();
-		_resultVars = new ArrayList<String>();
+	public ParForStatementBlock() {
+		_ID = _idSeq.getNextID();
+		_resultVars = new ArrayList<>();
 		
 		LOG.trace("PARFOR("+_ID+"): ParForStatementBlock instance created");
 	}
@@ -248,7 +247,7 @@ public class ParForStatementBlock extends ForStatementBlock
 		else
 		{
 			//set all defaults
-			params = new HashMap<String, String>();
+			params = new HashMap<>();
 			params.putAll( _paramDefaults );
 			predicate.setParForParams(params);
 		}	
@@ -285,8 +284,8 @@ public class ParForStatementBlock extends ForStatementBlock
 		LOG.trace("PARFOR: running loop dependency analysis ...");
 
 		//### Step 1 ###: determine candidate set C
-		HashSet<Candidate> C = new HashSet<Candidate>(); 
-		HashSet<Candidate> C2 = new HashSet<Candidate>(); 
+		HashSet<Candidate> C = new HashSet<>(); 
+		HashSet<Candidate> C2 = new HashSet<>(); 
 		Integer sCount = 0; //object for call by ref 
 		rDetermineCandidates(pfs.getBody(), C, sCount);
 
@@ -364,14 +363,14 @@ public class ParForStatementBlock extends ForStatementBlock
 			if( check || var._dat.getDataType()!=DataType.SCALAR )
 				addToResultVariablesNoDup( var._var );
 		//b) get and add child result vars (if required)
-		ArrayList<String> tmp = new ArrayList<String>();
+		ArrayList<String> tmp = new ArrayList<>();
 		rConsolidateResultVars(pfs.getBody(), tmp);
 		for( String var : tmp )
 			if(_vsParent.containsVariable(var))
-				addToResultVariablesNoDup( var );			
+				addToResultVariablesNoDup( var );
 		if( LDEBUG )
 			for( String rvar : _resultVars )
-				LOG.debug("INFO: PARFOR final result variable: "+rvar);		
+				LOG.debug("INFO: PARFOR final result variable: "+rvar);
 		
 		//cleanup function cache in order to prevent side effects between parfor statements
 		if( USE_FN_CACHE )
@@ -382,17 +381,14 @@ public class ParForStatementBlock extends ForStatementBlock
 		return vs;
 	}
 	
-	public ArrayList<String> getReadOnlyParentVars() 
-	{
-		ArrayList<String> ret = new ArrayList<String>();
-
+	public ArrayList<String> getReadOnlyParentVars() {
+		ArrayList<String> ret = new ArrayList<>();
 		VariableSet read = variablesRead();
 		VariableSet updated = variablesUpdated();
 		VariableSet livein = liveIn();	
 		for( String var : livein.getVariableNames() ) //for all parent variables
 			if( read.containsVariable(var) && !updated.containsVariable(var) ) //read-only
 				ret.add( var );
-		
 		return ret;
 	}
 
@@ -408,7 +404,7 @@ public class ParForStatementBlock extends ForStatementBlock
 	public PartitionFormat determineDataPartitionFormat(String var) 
 	{
 		PartitionFormat dpf = null;
-		List<PartitionFormat> dpfc = new LinkedList<PartitionFormat>();
+		List<PartitionFormat> dpfc = new LinkedList<>();
 		
 		try 
 		{
@@ -865,7 +861,7 @@ public class ParForStatementBlock extends ForStatementBlock
 		else if (s instanceof PrintStatement)
 		{
 			PrintStatement s2 = (PrintStatement)s;
-			ret = new ArrayList<DataIdentifier>();
+			ret = new ArrayList<>();
 			for (Expression expression : s2.getExpressions()) {
 				List<DataIdentifier> dataIdentifiers = rGetDataIdentifiers(expression);
 				ret.addAll(dataIdentifiers);
@@ -918,7 +914,7 @@ public class ParForStatementBlock extends ForStatementBlock
 	
 	private List<DataIdentifier> rGetDataIdentifiers(Expression e)
 	{
-		List<DataIdentifier> ret = new ArrayList<DataIdentifier>();
+		List<DataIdentifier> ret = new ArrayList<>();
 		
 		if( e instanceof DataIdentifier && 
 			!(e instanceof FunctionCallIdentifier || e instanceof BuiltinFunctionExpression || e instanceof ParameterizedBuiltinFunctionExpression) )
@@ -2016,14 +2012,12 @@ public class ParForStatementBlock extends ForStatementBlock
 	 * loop constructs. 
 	 *
 	 */
-	private static class Bounds
-	{
-		HashMap<String, Long> _lower     = new HashMap<String, Long>();
-		HashMap<String, Long> _upper     = new HashMap<String, Long>();
-		HashMap<String, Long> _increment = new HashMap<String, Long>();
-		
+	private static class Bounds {
+		HashMap<String, Long> _lower     = new HashMap<>();
+		HashMap<String, Long> _upper     = new HashMap<>();
+		HashMap<String, Long> _increment = new HashMap<>();
 		//contains all local variable names (subset of lower/upper/incr sets)
-		HashSet<String> _local = new HashSet<String>();
+		HashSet<String> _local = new HashSet<>();
 	}
 	
 	/**

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java b/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java
index e2cd5a2..3286049 100644
--- a/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java
+++ b/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java
@@ -43,7 +43,7 @@ public class ParameterizedBuiltinFunctionExpression extends DataIdentifier
 	
 	private static HashMap<String, Expression.ParameterizedBuiltinFunctionOp> opcodeMap;
 	static {
-		opcodeMap = new HashMap<String, Expression.ParameterizedBuiltinFunctionOp>();
+		opcodeMap = new HashMap<>();
 		opcodeMap.put("aggregate", Expression.ParameterizedBuiltinFunctionOp.GROUPEDAGG);
 		opcodeMap.put("groupedAggregate", Expression.ParameterizedBuiltinFunctionOp.GROUPEDAGG);
 		opcodeMap.put("removeEmpty",Expression.ParameterizedBuiltinFunctionOp.RMEMPTY);
@@ -78,7 +78,7 @@ public class ParameterizedBuiltinFunctionExpression extends DataIdentifier
 	
 	public static HashMap<Expression.ParameterizedBuiltinFunctionOp, ParamBuiltinOp> pbHopMap;
 	static {
-		pbHopMap = new HashMap<Expression.ParameterizedBuiltinFunctionOp, ParamBuiltinOp>();
+		pbHopMap = new HashMap<>();
 		
 		pbHopMap.put(Expression.ParameterizedBuiltinFunctionOp.GROUPEDAGG, ParamBuiltinOp.GROUPEDAGG);
 		pbHopMap.put(Expression.ParameterizedBuiltinFunctionOp.RMEMPTY, ParamBuiltinOp.RMEMPTY);
@@ -116,7 +116,7 @@ public class ParameterizedBuiltinFunctionExpression extends DataIdentifier
 		if ( pbifop == null ) 
 			return null;
 		
-		HashMap<String,Expression> varParams = new HashMap<String,Expression>();
+		HashMap<String,Expression> varParams = new HashMap<>();
 		for (ParameterExpression pexpr : paramExprsPassed)
 			varParams.put(pexpr.getName(), pexpr.getExpr());
 		
@@ -141,15 +141,13 @@ public class ParameterizedBuiltinFunctionExpression extends DataIdentifier
 	}
 
 	public Expression rewriteExpression(String prefix) throws LanguageException {
-		
-		HashMap<String,Expression> newVarParams = new HashMap<String,Expression>();
+		HashMap<String,Expression> newVarParams = new HashMap<>();
 		for (String key : _varParams.keySet()){
 			Expression newExpr = _varParams.get(key).rewriteExpression(prefix);
 			newVarParams.put(key, newExpr);
-		}	
-		ParameterizedBuiltinFunctionExpression retVal = new ParameterizedBuiltinFunctionExpression(_opcode,
-				newVarParams, this);
-
+		}
+		ParameterizedBuiltinFunctionExpression retVal = 
+			new ParameterizedBuiltinFunctionExpression(_opcode, newVarParams, this);
 		return retVal;
 	}
 
@@ -704,7 +702,7 @@ public class ParameterizedBuiltinFunctionExpression extends DataIdentifier
 		
 		// check validate parameter names
 		String[] validArgsArr = {"target", "rows", "cols", "decimal", "sparse", "sep", "linesep"};
-		HashSet<String> validArgs = new HashSet<String>(Arrays.asList(validArgsArr));
+		HashSet<String> validArgs = new HashSet<>(Arrays.asList(validArgsArr));
 		for( String k : varParams.keySet() ) {
 			if( !validArgs.contains(k) ) {
 				raiseValidateError("Invalid parameter " + k + " for toString, valid parameters are " + 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/PrintStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/PrintStatement.java b/src/main/java/org/apache/sysml/parser/PrintStatement.java
index 16e9e4a..27a5f0a 100644
--- a/src/main/java/org/apache/sysml/parser/PrintStatement.java
+++ b/src/main/java/org/apache/sysml/parser/PrintStatement.java
@@ -37,7 +37,7 @@ public class PrintStatement extends Statement
 	 */
 	public enum PRINTTYPE {
 		PRINT, PRINTF, STOP
-	};
+	}
 
 	protected PRINTTYPE _type; // print, printf, or stop
 	protected List<Expression> expressions;
@@ -75,14 +75,14 @@ public class PrintStatement extends Statement
 			throws LanguageException {
 		_type = type;
 		if (expressions == null) {
-			this.expressions = new ArrayList<Expression>();
+			this.expressions = new ArrayList<>();
 		} else {
 			this.expressions = expressions;
 		}
 	}
 
 	public Statement rewriteStatement(String prefix) throws LanguageException{
-		List<Expression> newExpressions = new ArrayList<Expression>();
+		List<Expression> newExpressions = new ArrayList<>();
 		for (Expression oldExpression : expressions) {
 			Expression newExpression = oldExpression.rewriteExpression(prefix);
 			newExpressions.add(newExpression);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/StatementBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/StatementBlock.java b/src/main/java/org/apache/sysml/parser/StatementBlock.java
index d901119..71c1894 100644
--- a/src/main/java/org/apache/sysml/parser/StatementBlock.java
+++ b/src/main/java/org/apache/sysml/parser/StatementBlock.java
@@ -60,16 +60,16 @@ public class StatementBlock extends LiveVariableAnalysis implements ParseInfo
 
 	public StatementBlock() {
 		_dmlProg = null;
-		_statements = new ArrayList<Statement>();
+		_statements = new ArrayList<>();
 		_read = new VariableSet();
 		_updated = new VariableSet();
 		_gen = new VariableSet();
 		_kill = new VariableSet();
 		_warnSet = new VariableSet();
 		_initialized = true;
-		_constVarsIn = new HashMap<String,ConstIdentifier>();
-		_constVarsOut = new HashMap<String,ConstIdentifier>();
-		_updateInPlaceVars = new ArrayList<String>();
+		_constVarsIn = new HashMap<>();
+		_constVarsOut = new HashMap<>();
+		_updateInPlaceVars = new ArrayList<>();
 	}
 
 	public void setDMLProg(DMLProgram dmlProg){
@@ -322,8 +322,7 @@ public class StatementBlock extends LiveVariableAnalysis implements ParseInfo
 			}
 		}
 
-		ArrayList<StatementBlock> result = new ArrayList<StatementBlock>();
-
+		ArrayList<StatementBlock> result = new ArrayList<>();
 		StatementBlock currentBlock = null;
 
 		for (int i = 0; i < body.size(); i++){
@@ -367,13 +366,10 @@ public class StatementBlock extends LiveVariableAnalysis implements ParseInfo
 	}
 
 	public static ArrayList<StatementBlock> mergeStatementBlocks(ArrayList<StatementBlock> sb){
+		if (sb == null || sb.isEmpty())
+			return new ArrayList<>();
 
-		ArrayList<StatementBlock> result = new ArrayList<StatementBlock>();
-
-		if (sb == null || sb.isEmpty()) {
-			return new ArrayList<StatementBlock>();
-		}
-
+		ArrayList<StatementBlock> result = new ArrayList<>();
 		StatementBlock currentBlock = null;
 
 		for (int i = 0; i < sb.size(); i++){
@@ -404,7 +400,7 @@ public class StatementBlock extends LiveVariableAnalysis implements ParseInfo
 
 	public ArrayList<Statement> rewriteFunctionCallStatements (DMLProgram dmlProg, ArrayList<Statement> statements) throws LanguageException {
 
-		ArrayList<Statement> newStatements = new ArrayList<Statement>();
+		ArrayList<Statement> newStatements = new ArrayList<>();
 		for (Statement current : statements){
 			if (isRewritableFunctionCall(current, dmlProg)){
 
@@ -548,7 +544,7 @@ public class StatementBlock extends LiveVariableAnalysis implements ParseInfo
 		_statements = rewriteFunctionCallStatements(dmlProg, _statements);
 		_dmlProg = dmlProg;
 		
-		HashMap<String, ConstIdentifier> currConstVars = new HashMap<String,ConstIdentifier>(constVars);
+		HashMap<String, ConstIdentifier> currConstVars = new HashMap<>(constVars);
 		for (Statement current : _statements) {
 			if (current instanceof OutputStatement) {
 				OutputStatement os = (OutputStatement)current;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/VariableSet.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/VariableSet.java b/src/main/java/org/apache/sysml/parser/VariableSet.java
index c2a1151..29c4ae3 100644
--- a/src/main/java/org/apache/sysml/parser/VariableSet.java
+++ b/src/main/java/org/apache/sysml/parser/VariableSet.java
@@ -28,11 +28,11 @@ public class VariableSet
 	private HashMap<String,DataIdentifier> _variables;
 	
 	public VariableSet() {
-		_variables = new HashMap<String,DataIdentifier>();
+		_variables = new HashMap<>();
 	}
 	
 	public VariableSet( VariableSet vs ) {
-		_variables = new HashMap<String,DataIdentifier>();
+		_variables = new HashMap<>();
 		if (vs != null)
 			_variables.putAll(vs.getVariables());
 	}

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/WhileStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/WhileStatement.java b/src/main/java/org/apache/sysml/parser/WhileStatement.java
index 7e347d0..e210818 100644
--- a/src/main/java/org/apache/sysml/parser/WhileStatement.java
+++ b/src/main/java/org/apache/sysml/parser/WhileStatement.java
@@ -25,8 +25,6 @@ import java.util.ArrayList;
 
 public class WhileStatement extends Statement
 {
-		
-	
 	private ConditionalPredicate _predicate;
 	private ArrayList<StatementBlock> _body;
 	
@@ -35,16 +33,15 @@ public class WhileStatement extends Statement
 		throw new LanguageException(this.printErrorLocation() + "should not call rewriteStatement for WhileStatement");
 	}
 	
-	public WhileStatement(){
-		 _predicate = null;
-		 _body = new ArrayList<StatementBlock>();
+	public WhileStatement() {
+		_predicate = null;
+		_body = new ArrayList<>();
 	}
 	
 	public void setPredicate(ConditionalPredicate pred){
 		_predicate = pred;
 	}
-	
-	
+		
 	public void addStatementBlock(StatementBlock sb){
 		_body.add(sb);
 	}
@@ -66,7 +63,6 @@ public class WhileStatement extends Statement
 		return true;
 	}
 	
-
 	public void mergeStatementBlocks(){
 		_body = StatementBlock.mergeStatementBlocks(_body);
 	}

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java b/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java
index bab9cd0..890bad2 100644
--- a/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java
+++ b/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java
@@ -68,7 +68,7 @@ public abstract class CommonSyntacticValidator {
 	protected String sourceNamespace = null;
 	// Track imported scripts to prevent infinite recursion
 	protected static ThreadLocal<HashMap<String, String>> _scripts = new ThreadLocal<HashMap<String, String>>() {
-		@Override protected HashMap<String, String> initialValue() { return new HashMap<String, String>(); }
+		@Override protected HashMap<String, String> initialValue() { return new HashMap<>(); }
 	};
 	// Map namespaces to full paths as defined only from source statements in this script (i.e., currentFile)
 	protected HashMap<String, String> sources;
@@ -84,8 +84,8 @@ public abstract class CommonSyntacticValidator {
 		currentFile = errorListener.getCurrentFileName();
 		this.argVals = argVals;
 		this.sourceNamespace = sourceNamespace;
-		sources = new HashMap<String, String>();
-		functions = (null != prepFunctions) ? prepFunctions : new HashSet<String>();
+		sources = new HashMap<>();
+		functions = (null != prepFunctions) ? prepFunctions : new HashSet<>();
 	}
 
 	protected void notifyErrorListeners(String message, Token op) {
@@ -466,7 +466,7 @@ public abstract class CommonSyntacticValidator {
 				return;
 			}
 			try {
-				List<Expression> expList = new ArrayList<Expression>();
+				List<Expression> expList = new ArrayList<>();
 				expList.add(expr);
 				thisinfo.stmt = new PrintStatement(ctx, functionName, expList, currentFile);
 			} catch (LanguageException e) {
@@ -489,7 +489,7 @@ public abstract class CommonSyntacticValidator {
 				return;
 			}
 			try {
-				List<Expression> expressions = new ArrayList<Expression>();
+				List<Expression> expressions = new ArrayList<>();
 				for (ParameterExpression pe : paramExpression) {
 					Expression expression = pe.getExpr();
 					expressions.add(expression);
@@ -509,7 +509,7 @@ public abstract class CommonSyntacticValidator {
 			return;
 		}
 		if(paramExpression.get(0).getExpr() instanceof DataIdentifier) {
-			HashMap<String, Expression> varParams = new HashMap<String, Expression>();
+			HashMap<String, Expression> varParams = new HashMap<>();
 			varParams.put(DataExpression.IO_FILENAME, paramExpression.get(1).getExpr());
 			for(int i = 2; i < paramExpression.size(); i++) {
 				// DataExpression.FORMAT_TYPE, DataExpression.DELIM_DELIMITER, DataExpression.DELIM_HAS_HEADER_ROW,  DataExpression.DELIM_SPARSE
@@ -550,7 +550,7 @@ public abstract class CommonSyntacticValidator {
 			this.functionName = functionName;
 			this.paramExpression = paramExpression;
 		}
-	};
+	}
 
 	/**
 	 * Converts PyDML/DML built in functions to a common format for the runtime.

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/common/CustomErrorListener.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/common/CustomErrorListener.java b/src/main/java/org/apache/sysml/parser/common/CustomErrorListener.java
index 6a27acf..2af5f69 100644
--- a/src/main/java/org/apache/sysml/parser/common/CustomErrorListener.java
+++ b/src/main/java/org/apache/sysml/parser/common/CustomErrorListener.java
@@ -42,7 +42,7 @@ public class CustomErrorListener extends BaseErrorListener {
 	/**
 	 * List of parse issues.
 	 */
-	private List<ParseIssue> parseIssues = new ArrayList<ParseIssue>();
+	private List<ParseIssue> parseIssues = new ArrayList<>();
 
 	public void setCurrentFileName(String currentFilePath) {
 		currentFileName = currentFilePath;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/dml/DmlPreprocessor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/dml/DmlPreprocessor.java b/src/main/java/org/apache/sysml/parser/dml/DmlPreprocessor.java
index 823aef0..11d6c7f 100644
--- a/src/main/java/org/apache/sysml/parser/dml/DmlPreprocessor.java
+++ b/src/main/java/org/apache/sysml/parser/dml/DmlPreprocessor.java
@@ -87,7 +87,7 @@ public class DmlPreprocessor implements DmlListener {
 
 	public DmlPreprocessor(CustomErrorListener errorListener) {
 		this.errorListener = errorListener;
-		functions = new HashSet<String>();
+		functions = new HashSet<>();
 	}
 
 	public Set<String> getFunctionDefs() {


[7/7] systemml git commit: [MINOR] Cleanup various issues raised by static code analysis, part 1

Posted by mb...@apache.org.
[MINOR] Cleanup various issues raised by static code analysis, part 1

Project: http://git-wip-us.apache.org/repos/asf/systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/40dd894e
Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/40dd894e
Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/40dd894e

Branch: refs/heads/master
Commit: 40dd894ed09173b498b9dda3009f852d3cf962e9
Parents: b3d09d5
Author: Matthias Boehm <mb...@gmail.com>
Authored: Tue Oct 10 22:53:14 2017 -0700
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Tue Oct 10 22:53:14 2017 -0700

----------------------------------------------------------------------
 .../java/org/apache/sysml/api/DMLScript.java    |   2 +-
 .../org/apache/sysml/api/jmlc/JMLCProxy.java    |   2 +-
 .../org/apache/sysml/api/jmlc/JMLCUtils.java    |   8 +-
 .../apache/sysml/api/jmlc/PreparedScript.java   |   6 +-
 .../apache/sysml/api/jmlc/ResultVariables.java  |   2 +-
 .../apache/sysml/api/mlcontext/FrameSchema.java |   2 +-
 .../apache/sysml/api/mlcontext/MLContext.java   |   2 +-
 .../api/mlcontext/MLContextConversionUtil.java  |  10 +-
 .../sysml/api/mlcontext/MLContextUtil.java      |   4 +-
 .../apache/sysml/api/mlcontext/MLResults.java   |  44 ++++----
 .../apache/sysml/api/mlcontext/ProjectInfo.java |   2 +-
 .../org/apache/sysml/api/mlcontext/Script.java  |  14 +--
 .../org/apache/sysml/conf/CompilerConfig.java   |   4 +-
 .../apache/sysml/conf/ConfigurationManager.java |  14 +--
 .../java/org/apache/sysml/conf/DMLConfig.java   |   4 +-
 .../sysml/debug/DMLBreakpointManager.java       |   2 +-
 .../sysml/debug/DMLDebuggerProgramInfo.java     |   4 +-
 .../java/org/apache/sysml/debug/DebugState.java |   2 +-
 .../java/org/apache/sysml/hops/AggBinaryOp.java |   2 +-
 .../java/org/apache/sysml/hops/BinaryOp.java    |   4 +-
 .../org/apache/sysml/hops/ConvolutionOp.java    |   4 +-
 .../java/org/apache/sysml/hops/DataGenOp.java   |   4 +-
 src/main/java/org/apache/sysml/hops/DataOp.java |   4 +-
 .../java/org/apache/sysml/hops/FunctionOp.java  |   2 +-
 src/main/java/org/apache/sysml/hops/Hop.java    |  70 ++++++------
 .../java/org/apache/sysml/hops/IndexingOp.java  |   2 +-
 .../java/org/apache/sysml/hops/MemoTable.java   |   2 +-
 .../org/apache/sysml/hops/OptimizerUtils.java   |  10 +-
 .../sysml/hops/ParameterizedBuiltinOp.java      |   8 +-
 .../java/org/apache/sysml/hops/ReorgOp.java     |   4 +-
 .../java/org/apache/sysml/hops/UnaryOp.java     |   4 +-
 .../sysml/hops/codegen/SpoofCompiler.java       |  15 ++-
 .../apache/sysml/hops/codegen/SpoofFusedOp.java |   2 +-
 .../apache/sysml/hops/codegen/cplan/CNode.java  |   2 +-
 .../sysml/hops/codegen/cplan/CNodeTpl.java      |   6 +-
 .../sysml/hops/codegen/opt/PlanAnalyzer.java    |  14 +--
 .../sysml/hops/codegen/opt/PlanSelection.java   |   7 +-
 .../codegen/opt/PlanSelectionFuseCostBased.java |  28 ++---
 .../opt/PlanSelectionFuseCostBasedV2.java       |  28 ++---
 .../opt/PlanSelectionFuseNoRedundancy.java      |   4 +-
 .../hops/codegen/opt/ReachabilityGraph.java     |   9 ++
 .../hops/codegen/template/CPlanCSERewriter.java |   2 +-
 .../hops/codegen/template/CPlanMemoTable.java   |  14 +--
 .../hops/codegen/template/TemplateCell.java     |   8 +-
 .../hops/codegen/template/TemplateMultiAgg.java |  14 +--
 .../codegen/template/TemplateOuterProduct.java  |  13 +--
 .../hops/codegen/template/TemplateRow.java      |  10 +-
 .../sysml/hops/cost/CostEstimationWrapper.java  |   6 +-
 .../apache/sysml/hops/cost/CostEstimator.java   |   2 +-
 .../hops/cost/CostEstimatorStaticRuntime.java   |   6 +-
 .../sysml/hops/globalopt/GDFEnumOptimizer.java  |  14 +--
 .../sysml/hops/globalopt/MemoStructure.java     |   4 +-
 .../org/apache/sysml/hops/globalopt/Plan.java   |   6 +-
 .../apache/sysml/hops/globalopt/PlanSet.java    |  12 +-
 .../globalopt/gdfgraph/GDFCrossBlockNode.java   |   4 +-
 .../hops/globalopt/gdfgraph/GDFLoopNode.java    |   2 +-
 .../hops/globalopt/gdfgraph/GraphBuilder.java   |  18 +--
 .../sysml/hops/ipa/FunctionCallGraph.java       |  22 ++--
 .../sysml/hops/ipa/FunctionCallSizeInfo.java    |  23 +++-
 .../ipa/IPAPassRemoveConstantBinaryOps.java     |   4 +-
 .../IPAPassRemoveUnnecessaryCheckpoints.java    |  16 +--
 .../sysml/hops/ipa/InterProceduralAnalysis.java |   6 +-
 .../hops/recompile/LiteralReplacement.java      |   2 +-
 .../sysml/hops/recompile/RecompileStatus.java   |   2 +-
 .../apache/sysml/hops/recompile/Recompiler.java |  32 +++---
 .../sysml/hops/rewrite/HopRewriteUtils.java     |  14 +--
 .../sysml/hops/rewrite/ProgramRewriter.java     |  24 ++--
 .../RewriteAlgebraicSimplificationDynamic.java  |   6 +-
 .../RewriteAlgebraicSimplificationStatic.java   |  14 +--
 .../RewriteCommonSubexpressionElimination.java  |   8 +-
 .../hops/rewrite/RewriteConstantFolding.java    |   2 +-
 .../rewrite/RewriteIndexingVectorization.java   |   8 +-
 .../RewriteInjectSparkLoopCheckpointing.java    |   4 +-
 .../RewriteMarkLoopVariablesUpdateInPlace.java  |   2 +-
 .../RewriteMatrixMultChainOptimization.java     |   4 +-
 .../hops/rewrite/RewriteMergeBlockSequence.java |   2 +-
 .../RewriteRemovePersistentReadWrite.java       |   6 +-
 .../rewrite/RewriteRemoveReadAfterWrite.java    |   4 +-
 .../RewriteRemoveUnnecessaryBranches.java       |   2 +-
 .../RewriteSplitDagDataDependentOperators.java  |  24 ++--
 .../rewrite/RewriteSplitDagUnknownCSVRead.java  |  10 +-
 src/main/java/org/apache/sysml/lops/Binary.java |   3 +-
 .../org/apache/sysml/lops/CombineBinary.java    |   4 +-
 .../org/apache/sysml/lops/CombineTernary.java   |   4 +-
 .../org/apache/sysml/lops/CombineUnary.java     |   2 +-
 .../apache/sysml/lops/ConvolutionTransform.java |   2 +-
 src/main/java/org/apache/sysml/lops/Data.java   |   2 +-
 .../org/apache/sysml/lops/FunctionCallCP.java   |   2 +-
 src/main/java/org/apache/sysml/lops/Group.java  |   2 +-
 src/main/java/org/apache/sysml/lops/Lop.java    |   8 +-
 .../org/apache/sysml/lops/LopProperties.java    |   4 +-
 .../java/org/apache/sysml/lops/MultipleCP.java  |   2 +-
 .../org/apache/sysml/lops/OutputParameters.java |   3 +-
 .../apache/sysml/lops/ParameterizedBuiltin.java |   2 +-
 .../org/apache/sysml/lops/PartialAggregate.java |   2 +-
 .../java/org/apache/sysml/lops/PickByCount.java |   2 +-
 .../java/org/apache/sysml/lops/SortKeys.java    |   4 +-
 .../java/org/apache/sysml/lops/Ternary.java     |   4 +-
 .../java/org/apache/sysml/lops/Transform.java   |   2 +-
 src/main/java/org/apache/sysml/lops/Unary.java  |   2 +-
 .../java/org/apache/sysml/lops/UnaryCP.java     |   2 +-
 .../java/org/apache/sysml/lops/compile/Dag.java | 112 +++++++++----------
 .../sysml/parser/AssignmentStatement.java       |   4 +-
 .../sysml/parser/BuiltinFunctionExpression.java |  10 +-
 .../org/apache/sysml/parser/DMLProgram.java     |   8 +-
 .../org/apache/sysml/parser/DMLTranslator.java  |  74 ++++++------
 .../org/apache/sysml/parser/DataExpression.java |   2 +-
 .../org/apache/sysml/parser/Expression.java     |  20 ++--
 .../org/apache/sysml/parser/ForStatement.java   |   8 +-
 .../sysml/parser/FunctionCallIdentifier.java    |   2 +-
 .../apache/sysml/parser/FunctionStatement.java  |   6 +-
 .../org/apache/sysml/parser/IfStatement.java    |   4 +-
 .../apache/sysml/parser/IfStatementBlock.java   |   6 +-
 .../sysml/parser/MultiAssignmentStatement.java  |   3 +-
 .../apache/sysml/parser/OutputStatement.java    |   2 +-
 .../sysml/parser/ParForStatementBlock.java      |  56 +++++-----
 .../ParameterizedBuiltinFunctionExpression.java |  18 ++-
 .../org/apache/sysml/parser/PrintStatement.java |   6 +-
 .../org/apache/sysml/parser/StatementBlock.java |  24 ++--
 .../org/apache/sysml/parser/VariableSet.java    |   4 +-
 .../org/apache/sysml/parser/WhileStatement.java |  12 +-
 .../parser/common/CommonSyntacticValidator.java |  14 +--
 .../parser/common/CustomErrorListener.java      |   2 +-
 .../sysml/parser/dml/DmlPreprocessor.java       |   2 +-
 .../sysml/parser/dml/DmlSyntacticValidator.java |  30 ++---
 .../sysml/parser/pydml/PydmlPreprocessor.java   |   2 +-
 .../parser/pydml/PydmlSyntacticValidator.java   |  40 +++----
 .../sysml/runtime/codegen/CodegenUtils.java     |   6 +-
 .../sysml/runtime/codegen/SpoofCellwise.java    |   4 +-
 .../runtime/codegen/SpoofMultiAggregate.java    |   4 +-
 .../runtime/codegen/SpoofOuterProduct.java      |   4 +-
 .../sysml/runtime/codegen/SpoofRowwise.java     |   4 +-
 .../sysml/runtime/compress/BitmapEncoder.java   |   2 +-
 .../sysml/runtime/compress/ColGroupOffset.java  |   3 +-
 .../sysml/runtime/compress/ColGroupRLE.java     |   3 +-
 .../sysml/runtime/compress/ColGroupValue.java   |   4 +-
 .../runtime/compress/CompressedMatrixBlock.java |  46 ++++----
 .../compress/ReaderColumnSelectionDense.java    |   2 +-
 .../ReaderColumnSelectionDenseSample.java       |   2 +-
 .../compress/ReaderColumnSelectionSparse.java   |   2 +-
 .../ColumnGroupPartitionerBinPacking.java       |   6 +-
 .../cocode/ColumnGroupPartitionerStatic.java    |   4 +-
 .../compress/cocode/PlanningCoCoder.java        |  16 +--
 .../compress/cocode/PlanningMemoTable.java      |   2 +-
 .../estim/CompressedSizeEstimatorSample.java    |   4 +-
 .../runtime/compress/utils/ConverterUtils.java  |   2 +-
 .../compress/utils/DblArrayIntListHashMap.java  |   2 +-
 .../compress/utils/DoubleIntListHashMap.java    |   2 +-
 .../ExternalFunctionProgramBlock.java           |  71 ++++++------
 .../controlprogram/FunctionProgramBlock.java    |   6 +-
 .../controlprogram/ParForProgramBlock.java      |   4 +
 .../controlprogram/caching/CacheableData.java   |   2 +-
 .../controlprogram/caching/PageCache.java       |  10 +-
 .../context/SparkExecutionContext.java          |   2 +-
 .../parfor/DataPartitionerLocal.java            |  10 +-
 .../parfor/RemoteParForSparkWorker.java         |   3 +-
 .../parfor/ResultMergeLocalFile.java            |   8 +-
 .../parfor/ResultMergeRemoteGrouping.java       |  10 +-
 .../parfor/ResultMergeRemoteSorting.java        |  16 +--
 .../parfor/opt/OptTreeConverter.java            |   6 +-
 .../parfor/util/StagingFileUtils.java           |   2 +-
 .../sysml/runtime/functionobjects/Builtin.java  |   2 +-
 .../functionobjects/ParameterizedBuiltin.java   |   4 +-
 .../sysml/runtime/instructions/Instruction.java |   2 +-
 .../runtime/instructions/MRJobInstruction.java  |   8 +-
 .../instructions/cp/BreakPointInstruction.java  |   2 +-
 .../runtime/instructions/cp/CPInstruction.java  |   2 +-
 .../cp/ConvolutionCPInstruction.java            |  28 ++---
 .../cp/FunctionCallCPInstruction.java           |  10 +-
 .../cp/MultiReturnBuiltinCPInstruction.java     |   2 +-
 ...ReturnParameterizedBuiltinCPInstruction.java |   2 +-
 .../instructions/cp/SpoofCPInstruction.java     |   6 +-
 .../instructions/cp/VariableCPInstruction.java  |   2 +-
 .../ParameterizedBuiltinCPFileInstruction.java  |  28 ++---
 .../gpu/ConvolutionGPUInstruction.java          |  28 ++---
 .../instructions/gpu/GPUInstruction.java        |   2 +-
 .../runtime/instructions/mr/MRInstruction.java  |   2 +-
 .../spark/ConvolutionSPInstruction.java         |  33 +++---
 ...ReturnParameterizedBuiltinSPInstruction.java |  20 ++--
 .../instructions/spark/SPInstruction.java       |   2 +-
 .../instructions/spark/SpoofSPInstruction.java  |  24 ++--
 .../spark/data/BlockPartitioner.java            |   8 ++
 .../sysml/runtime/io/IOUtilFunctions.java       |   2 +-
 .../apache/sysml/runtime/matrix/CombineMR.java  |   4 +-
 .../org/apache/sysml/runtime/matrix/GMR.java    |   6 +-
 .../apache/sysml/runtime/matrix/WriteCSVMR.java |   2 +-
 .../matrix/data/AddDummyWeightConverter.java    |   8 +-
 .../matrix/data/FileFormatProperties.java       |   3 +-
 .../runtime/matrix/data/LibMatrixDNNHelper.java |  14 +--
 .../runtime/matrix/data/LibMatrixOuterAgg.java  |   2 +-
 .../sysml/runtime/matrix/data/OutputInfo.java   |  13 ++-
 .../matrix/data/TaggedFirstSecondIndexes.java   |   5 +-
 .../data/hadoopfix/DelegatingInputFormat.java   |   8 +-
 .../runtime/matrix/mapred/CMCOVMRMapper.java    |   6 +-
 .../runtime/matrix/mapred/CMCOVMRReducer.java   |  10 +-
 .../matrix/mapred/CSVAssignRowIDReducer.java    |   2 +-
 .../runtime/matrix/mapred/CSVWriteMapper.java   |  10 +-
 .../runtime/matrix/mapred/CSVWriteReducer.java  |   4 +-
 .../runtime/matrix/mapred/CachedValueMap.java   |   6 +-
 .../mapred/CollectMultipleConvertedOutputs.java |  11 +-
 .../runtime/matrix/mapred/GMRCtableBuffer.java  |   4 +-
 .../sysml/runtime/matrix/mapred/GMRMapper.java  |   2 +-
 .../matrix/mapred/GroupedAggMRCombiner.java     |   4 +-
 .../matrix/mapred/GroupedAggMRMapper.java       |   2 +-
 .../matrix/mapred/GroupedAggMRReducer.java      |   6 +-
 .../runtime/matrix/mapred/MMRJMRMapper.java     |   6 +-
 .../mapred/MRBaseForCommonInstructions.java     |   4 +-
 .../matrix/mapred/MRJobConfiguration.java       |  26 ++---
 .../sysml/runtime/matrix/mapred/MapperBase.java |  24 ++--
 .../runtime/matrix/mapred/ReblockMapper.java    |   8 +-
 .../runtime/matrix/mapred/ReblockReducer.java   |   2 +-
 .../sysml/runtime/matrix/mapred/ReduceBase.java |  16 ++-
 .../runtime/matrix/operators/CMOperator.java    |   2 +-
 .../runtime/matrix/sort/ValueSortMapper.java    |  11 +-
 .../transform/decode/DecoderFactory.java        |   2 -
 .../transform/encode/EncoderFactory.java        |   3 +-
 .../transform/encode/EncoderMVImpute.java       |   2 +-
 .../runtime/transform/meta/TfMetaUtils.java     |   1 -
 .../sysml/runtime/util/DataConverter.java       |   2 +-
 .../sysml/runtime/util/UtilFunctions.java       |   2 +-
 src/main/java/org/apache/sysml/udf/Matrix.java  |   2 +-
 .../org/apache/sysml/udf/PackageFunction.java   |   2 +-
 src/main/java/org/apache/sysml/udf/Scalar.java  |   4 +-
 .../apache/sysml/udf/lib/RemoveEmptyRows.java   |   2 +-
 .../org/apache/sysml/udf/lib/RowClassMeet.java  |   2 +-
 .../java/org/apache/sysml/utils/Explain.java    |   8 +-
 .../org/apache/sysml/utils/GPUStatistics.java   |  10 +-
 .../utils/GenerateClassesForMLContext.java      |   2 +-
 .../org/apache/sysml/utils/NativeHelper.java    |   2 +-
 .../java/org/apache/sysml/utils/Statistics.java |   5 +-
 .../org/apache/sysml/utils/lite/BuildLite.java  |  26 ++---
 .../sysml/utils/lite/BuildLiteExecution.java    |  11 +-
 .../apache/sysml/yarn/DMLAppMasterUtils.java    |  11 +-
 .../org/apache/sysml/yarn/DMLYarnClient.java    |   4 +-
 .../sysml/yarn/ropt/GridEnumerationEqui.java    |   6 +-
 .../sysml/yarn/ropt/GridEnumerationExp.java     |   6 +-
 .../sysml/yarn/ropt/GridEnumerationHybrid.java  |   5 +-
 .../sysml/yarn/ropt/GridEnumerationMemory.java  |  10 +-
 .../apache/sysml/yarn/ropt/ResourceConfig.java  |   4 +-
 .../sysml/yarn/ropt/ResourceOptimizer.java      |  12 +-
 .../sysml/yarn/ropt/YarnClusterAnalyzer.java    |  11 +-
 .../test/integration/AutomatedTestBase.java     |   2 +-
 .../descriptivestats/UnivariateStatsBase.java   |   6 +-
 .../integration/functions/data/SampleTest.java  |   2 +-
 .../functions/data/SequenceTest.java            |   2 +-
 .../functions/frame/FrameConverterTest.java     |   2 -
 .../functions/unary/matrix/IQMTest.java         |   2 +-
 .../functions/unary/matrix/RoundTest.java       |   2 +-
 .../unary/scalar/FullDistributionTest.java      |   2 +-
 .../mlcontext/MLContextFrameTest.java           |   4 +-
 250 files changed, 1061 insertions(+), 1112 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/api/DMLScript.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/DMLScript.java b/src/main/java/org/apache/sysml/api/DMLScript.java
index fa4b4a1..ba447cf 100644
--- a/src/main/java/org/apache/sysml/api/DMLScript.java
+++ b/src/main/java/org/apache/sysml/api/DMLScript.java
@@ -842,7 +842,7 @@ public class DMLScript
 	{
 		//analyze local configuration
 		String userName = System.getProperty( "user.name" );
-		HashSet<String> groupNames = new HashSet<String>();
+		HashSet<String> groupNames = new HashSet<>();
 		try{
 			//check existence, for backwards compatibility to < hadoop 0.21
 			if( UserGroupInformation.class.getMethod("getCurrentUser") != null ){

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/api/jmlc/JMLCProxy.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/jmlc/JMLCProxy.java b/src/main/java/org/apache/sysml/api/jmlc/JMLCProxy.java
index b17857b..400380c 100644
--- a/src/main/java/org/apache/sysml/api/jmlc/JMLCProxy.java
+++ b/src/main/java/org/apache/sysml/api/jmlc/JMLCProxy.java
@@ -40,7 +40,7 @@ public class JMLCProxy
 	
 	public static void setActive(String[] output) {
 		if( output != null )
-			_outputs.set(new HashSet<String>(Arrays.asList(output)));
+			_outputs.set(new HashSet<>(Arrays.asList(output)));
 		else
 			_outputs.remove();
 	}

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/api/jmlc/JMLCUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/jmlc/JMLCUtils.java b/src/main/java/org/apache/sysml/api/jmlc/JMLCUtils.java
index c09be9b..eb888ba 100644
--- a/src/main/java/org/apache/sysml/api/jmlc/JMLCUtils.java
+++ b/src/main/java/org/apache/sysml/api/jmlc/JMLCUtils.java
@@ -51,7 +51,7 @@ public class JMLCUtils
 	public static void cleanupRuntimeProgram( Program prog, String[] outputs)
 	{
 		Map<String, FunctionProgramBlock> funcMap = prog.getFunctionProgramBlocks();
-		HashSet<String> blacklist = new HashSet<String>(Arrays.asList(outputs));
+		HashSet<String> blacklist = new HashSet<>(Arrays.asList(outputs));
 		
 		if( funcMap != null && !funcMap.isEmpty() )
 		{
@@ -110,7 +110,7 @@ public class JMLCUtils
 	 * @return list of instructions
 	 */
 	public static ArrayList<Instruction> cleanupRuntimeInstructions( ArrayList<Instruction> insts, String... outputs ) {
-		return cleanupRuntimeInstructions(insts, new HashSet<String>(Arrays.asList(outputs)));
+		return cleanupRuntimeInstructions(insts, new HashSet<>(Arrays.asList(outputs)));
 	}
 	
 	/**
@@ -123,12 +123,12 @@ public class JMLCUtils
 	 */
 	public static ArrayList<Instruction> cleanupRuntimeInstructions( ArrayList<Instruction> insts, HashSet<String> outputs )
 	{
-		ArrayList<Instruction> ret = new ArrayList<Instruction>();
+		ArrayList<Instruction> ret = new ArrayList<>();
 		
 		for( Instruction inst : insts ) {
 			if( inst instanceof VariableCPInstruction && ((VariableCPInstruction)inst).isRemoveVariable() )
 			{
-				ArrayList<String> currRmVar = new ArrayList<String>();
+				ArrayList<String> currRmVar = new ArrayList<>();
 				for( CPOperand input : ((VariableCPInstruction)inst).getInputs() )
 					if( !outputs.contains(input.getName()) )
 						currRmVar.add(input.getName());

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/api/jmlc/PreparedScript.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/jmlc/PreparedScript.java b/src/main/java/org/apache/sysml/api/jmlc/PreparedScript.java
index 71f5e1b..6cd041c 100644
--- a/src/main/java/org/apache/sysml/api/jmlc/PreparedScript.java
+++ b/src/main/java/org/apache/sysml/api/jmlc/PreparedScript.java
@@ -85,11 +85,11 @@ public class PreparedScript
 		_vars = new LocalVariableMap();
 		
 		//populate input/output vars
-		_inVarnames = new HashSet<String>();
+		_inVarnames = new HashSet<>();
 		Collections.addAll(_inVarnames, inputs);
-		_outVarnames = new HashSet<String>();
+		_outVarnames = new HashSet<>();
 		Collections.addAll(_outVarnames, outputs);
-		_inVarReuse = new HashMap<String, Data>();
+		_inVarReuse = new HashMap<>();
 	}
 	
 	/**

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/api/jmlc/ResultVariables.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/jmlc/ResultVariables.java b/src/main/java/org/apache/sysml/api/jmlc/ResultVariables.java
index 3b31c5d..289355b 100644
--- a/src/main/java/org/apache/sysml/api/jmlc/ResultVariables.java
+++ b/src/main/java/org/apache/sysml/api/jmlc/ResultVariables.java
@@ -42,7 +42,7 @@ public class ResultVariables
 	private HashMap<String, Data> _out = null;
 	
 	public ResultVariables() {
-		_out = new HashMap<String, Data>();
+		_out = new HashMap<>();
 	}
 	
 	/**

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/api/mlcontext/FrameSchema.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/mlcontext/FrameSchema.java b/src/main/java/org/apache/sysml/api/mlcontext/FrameSchema.java
index c1f7466..9c6137b 100644
--- a/src/main/java/org/apache/sysml/api/mlcontext/FrameSchema.java
+++ b/src/main/java/org/apache/sysml/api/mlcontext/FrameSchema.java
@@ -99,7 +99,7 @@ public class FrameSchema {
 			return null;
 		}
 		String[] cols = schemaString.split(",");
-		List<ValueType> list = new ArrayList<ValueType>();
+		List<ValueType> list = new ArrayList<>();
 		for (String col : cols) {
 			list.add(ValueType.valueOf(col.toUpperCase()));
 		}

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/api/mlcontext/MLContext.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/mlcontext/MLContext.java b/src/main/java/org/apache/sysml/api/mlcontext/MLContext.java
index b6b7eb0..762db8f 100644
--- a/src/main/java/org/apache/sysml/api/mlcontext/MLContext.java
+++ b/src/main/java/org/apache/sysml/api/mlcontext/MLContext.java
@@ -161,7 +161,7 @@ public class MLContext {
 				return ExplainType.HOPS;
 			}
 		}
-	};
+	}
 
 	/**
 	 * The different types of execution environments supported by SystemML. The

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/api/mlcontext/MLContextConversionUtil.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/mlcontext/MLContextConversionUtil.java b/src/main/java/org/apache/sysml/api/mlcontext/MLContextConversionUtil.java
index 2512abb..6112a8a 100644
--- a/src/main/java/org/apache/sysml/api/mlcontext/MLContextConversionUtil.java
+++ b/src/main/java/org/apache/sysml/api/mlcontext/MLContextConversionUtil.java
@@ -398,7 +398,7 @@ public class MLContextConversionUtil {
 
 			// convert data frame and obtain column names / schema
 			// TODO extend frame schema by column names (right now dropped)
-			Pair<String[], ValueType[]> ret = new Pair<String[], ValueType[]>();
+			Pair<String[], ValueType[]> ret = new Pair<>();
 			JavaPairRDD<Long, FrameBlock> binaryBlock = FrameRDDConverterUtils.dataFrameToBinaryBlock(jsc(), dataFrame,
 					mc, containsID, ret);
 			frameMetadata.setFrameSchema(new FrameSchema(Arrays.asList(ret.getValue())));
@@ -1003,7 +1003,7 @@ public class MLContextConversionUtil {
 
 			int rows = mb.getNumRows();
 			int cols = mb.getNumColumns();
-			List<String> list = new ArrayList<String>();
+			List<String> list = new ArrayList<>();
 
 			if (mb.getNonZeros() > 0) {
 				if (mb.isInSparseFormat()) {
@@ -1068,7 +1068,7 @@ public class MLContextConversionUtil {
 
 			int rows = fb.getNumRows();
 			int cols = fb.getNumColumns();
-			List<String> list = new ArrayList<String>();
+			List<String> list = new ArrayList<>();
 
 			for (int i = 0; i < rows; i++) {
 				StringBuilder sb = new StringBuilder();
@@ -1103,7 +1103,7 @@ public class MLContextConversionUtil {
 
 			int rows = mb.getNumRows();
 			int cols = mb.getNumColumns();
-			List<String> list = new ArrayList<String>();
+			List<String> list = new ArrayList<>();
 
 			if (mb.getNonZeros() > 0) {
 				if (mb.isInSparseFormat()) {
@@ -1157,7 +1157,7 @@ public class MLContextConversionUtil {
 
 			int rows = fb.getNumRows();
 			int cols = fb.getNumColumns();
-			List<String> list = new ArrayList<String>();
+			List<String> list = new ArrayList<>();
 
 			StringBuilder sb = null;
 			for (int i = 0; i < rows; i++) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/api/mlcontext/MLContextUtil.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/mlcontext/MLContextUtil.java b/src/main/java/org/apache/sysml/api/mlcontext/MLContextUtil.java
index 03184e3..6c1788a 100644
--- a/src/main/java/org/apache/sysml/api/mlcontext/MLContextUtil.java
+++ b/src/main/java/org/apache/sysml/api/mlcontext/MLContextUtil.java
@@ -467,7 +467,7 @@ public final class MLContextUtil {
 		if (scriptType == null) {
 			throw new MLContextException("ScriptType needs to be specified");
 		}
-		Map<String, String> convertedMap = new HashMap<String, String>();
+		Map<String, String> convertedMap = new HashMap<>();
 		for (Entry<String, Object> entry : basicInputParameterMap.entrySet()) {
 			String key = entry.getKey();
 			Object value = entry.getValue();
@@ -1250,7 +1250,7 @@ public final class MLContextUtil {
 			scriptExecutor.compile(script, performHOPRewrites);
 			Explain.reset();
 			// To deal with potential Py4J issues
-			lines = lines.size() == 1 && lines.get(0) == -1 ? new ArrayList<Integer>() : lines;
+			lines = lines.size() == 1 && lines.get(0) == -1 ? new ArrayList<>() : lines;
 			return Explain.getHopDAG(scriptExecutor.dmlProgram, lines, withSubgraph);
 		} catch (RuntimeException e) {
 			throw new MLContextException("Exception when compiling script", e);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/api/mlcontext/MLResults.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/mlcontext/MLResults.java b/src/main/java/org/apache/sysml/api/mlcontext/MLResults.java
index 6c4cfc5..1226b0d 100644
--- a/src/main/java/org/apache/sysml/api/mlcontext/MLResults.java
+++ b/src/main/java/org/apache/sysml/api/mlcontext/MLResults.java
@@ -605,7 +605,7 @@ public class MLResults {
 	 */
 	@SuppressWarnings("unchecked")
 	public <T> Tuple1<T> getTuple(String outputName1) {
-		return new Tuple1<T>((T) outputValue(outputName1));
+		return new Tuple1<>((T) outputValue(outputName1));
 	}
 
 	/**
@@ -623,7 +623,7 @@ public class MLResults {
 	 */
 	@SuppressWarnings("unchecked")
 	public <T1, T2> Tuple2<T1, T2> getTuple(String outputName1, String outputName2) {
-		return new Tuple2<T1, T2>((T1) outputValue(outputName1), (T2) outputValue(outputName2));
+		return new Tuple2<>((T1) outputValue(outputName1), (T2) outputValue(outputName2));
 	}
 
 	/**
@@ -645,7 +645,7 @@ public class MLResults {
 	 */
 	@SuppressWarnings("unchecked")
 	public <T1, T2, T3> Tuple3<T1, T2, T3> getTuple(String outputName1, String outputName2, String outputName3) {
-		return new Tuple3<T1, T2, T3>((T1) outputValue(outputName1), (T2) outputValue(outputName2),
+		return new Tuple3<>((T1) outputValue(outputName1), (T2) outputValue(outputName2),
 				(T3) outputValue(outputName3));
 	}
 
@@ -673,7 +673,7 @@ public class MLResults {
 	@SuppressWarnings("unchecked")
 	public <T1, T2, T3, T4> Tuple4<T1, T2, T3, T4> getTuple(String outputName1, String outputName2, String outputName3,
 			String outputName4) {
-		return new Tuple4<T1, T2, T3, T4>((T1) outputValue(outputName1), (T2) outputValue(outputName2),
+		return new Tuple4<>((T1) outputValue(outputName1), (T2) outputValue(outputName2),
 				(T3) outputValue(outputName3), (T4) outputValue(outputName4));
 	}
 
@@ -705,7 +705,7 @@ public class MLResults {
 	@SuppressWarnings("unchecked")
 	public <T1, T2, T3, T4, T5> Tuple5<T1, T2, T3, T4, T5> getTuple(String outputName1, String outputName2,
 			String outputName3, String outputName4, String outputName5) {
-		return new Tuple5<T1, T2, T3, T4, T5>((T1) outputValue(outputName1), (T2) outputValue(outputName2),
+		return new Tuple5<>((T1) outputValue(outputName1), (T2) outputValue(outputName2),
 				(T3) outputValue(outputName3), (T4) outputValue(outputName4), (T5) outputValue(outputName5));
 	}
 
@@ -741,7 +741,7 @@ public class MLResults {
 	@SuppressWarnings("unchecked")
 	public <T1, T2, T3, T4, T5, T6> Tuple6<T1, T2, T3, T4, T5, T6> getTuple(String outputName1, String outputName2,
 			String outputName3, String outputName4, String outputName5, String outputName6) {
-		return new Tuple6<T1, T2, T3, T4, T5, T6>((T1) outputValue(outputName1), (T2) outputValue(outputName2),
+		return new Tuple6<>((T1) outputValue(outputName1), (T2) outputValue(outputName2),
 				(T3) outputValue(outputName3), (T4) outputValue(outputName4), (T5) outputValue(outputName5),
 				(T6) outputValue(outputName6));
 	}
@@ -783,7 +783,7 @@ public class MLResults {
 	public <T1, T2, T3, T4, T5, T6, T7> Tuple7<T1, T2, T3, T4, T5, T6, T7> getTuple(String outputName1,
 			String outputName2, String outputName3, String outputName4, String outputName5, String outputName6,
 			String outputName7) {
-		return new Tuple7<T1, T2, T3, T4, T5, T6, T7>((T1) outputValue(outputName1), (T2) outputValue(outputName2),
+		return new Tuple7<>((T1) outputValue(outputName1), (T2) outputValue(outputName2),
 				(T3) outputValue(outputName3), (T4) outputValue(outputName4), (T5) outputValue(outputName5),
 				(T6) outputValue(outputName6), (T7) outputValue(outputName7));
 	}
@@ -829,7 +829,7 @@ public class MLResults {
 	public <T1, T2, T3, T4, T5, T6, T7, T8> Tuple8<T1, T2, T3, T4, T5, T6, T7, T8> getTuple(String outputName1,
 			String outputName2, String outputName3, String outputName4, String outputName5, String outputName6,
 			String outputName7, String outputName8) {
-		return new Tuple8<T1, T2, T3, T4, T5, T6, T7, T8>((T1) outputValue(outputName1), (T2) outputValue(outputName2),
+		return new Tuple8<>((T1) outputValue(outputName1), (T2) outputValue(outputName2),
 				(T3) outputValue(outputName3), (T4) outputValue(outputName4), (T5) outputValue(outputName5),
 				(T6) outputValue(outputName6), (T7) outputValue(outputName7), (T8) outputValue(outputName8));
 	}
@@ -879,7 +879,7 @@ public class MLResults {
 	public <T1, T2, T3, T4, T5, T6, T7, T8, T9> Tuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9> getTuple(String outputName1,
 			String outputName2, String outputName3, String outputName4, String outputName5, String outputName6,
 			String outputName7, String outputName8, String outputName9) {
-		return new Tuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9>((T1) outputValue(outputName1),
+		return new Tuple9<>((T1) outputValue(outputName1),
 				(T2) outputValue(outputName2), (T3) outputValue(outputName3), (T4) outputValue(outputName4),
 				(T5) outputValue(outputName5), (T6) outputValue(outputName6), (T7) outputValue(outputName7),
 				(T8) outputValue(outputName8), (T9) outputValue(outputName9));
@@ -934,7 +934,7 @@ public class MLResults {
 	public <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Tuple10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> getTuple(
 			String outputName1, String outputName2, String outputName3, String outputName4, String outputName5,
 			String outputName6, String outputName7, String outputName8, String outputName9, String outputName10) {
-		return new Tuple10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>((T1) outputValue(outputName1),
+		return new Tuple10<>((T1) outputValue(outputName1),
 				(T2) outputValue(outputName2), (T3) outputValue(outputName3), (T4) outputValue(outputName4),
 				(T5) outputValue(outputName5), (T6) outputValue(outputName6), (T7) outputValue(outputName7),
 				(T8) outputValue(outputName8), (T9) outputValue(outputName9), (T10) outputValue(outputName10));
@@ -994,7 +994,7 @@ public class MLResults {
 			String outputName1, String outputName2, String outputName3, String outputName4, String outputName5,
 			String outputName6, String outputName7, String outputName8, String outputName9, String outputName10,
 			String outputName11) {
-		return new Tuple11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>((T1) outputValue(outputName1),
+		return new Tuple11<>((T1) outputValue(outputName1),
 				(T2) outputValue(outputName2), (T3) outputValue(outputName3), (T4) outputValue(outputName4),
 				(T5) outputValue(outputName5), (T6) outputValue(outputName6), (T7) outputValue(outputName7),
 				(T8) outputValue(outputName8), (T9) outputValue(outputName9), (T10) outputValue(outputName10),
@@ -1059,7 +1059,7 @@ public class MLResults {
 			String outputName1, String outputName2, String outputName3, String outputName4, String outputName5,
 			String outputName6, String outputName7, String outputName8, String outputName9, String outputName10,
 			String outputName11, String outputName12) {
-		return new Tuple12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>((T1) outputValue(outputName1),
+		return new Tuple12<>((T1) outputValue(outputName1),
 				(T2) outputValue(outputName2), (T3) outputValue(outputName3), (T4) outputValue(outputName4),
 				(T5) outputValue(outputName5), (T6) outputValue(outputName6), (T7) outputValue(outputName7),
 				(T8) outputValue(outputName8), (T9) outputValue(outputName9), (T10) outputValue(outputName10),
@@ -1128,7 +1128,7 @@ public class MLResults {
 			String outputName1, String outputName2, String outputName3, String outputName4, String outputName5,
 			String outputName6, String outputName7, String outputName8, String outputName9, String outputName10,
 			String outputName11, String outputName12, String outputName13) {
-		return new Tuple13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>((T1) outputValue(outputName1),
+		return new Tuple13<>((T1) outputValue(outputName1),
 				(T2) outputValue(outputName2), (T3) outputValue(outputName3), (T4) outputValue(outputName4),
 				(T5) outputValue(outputName5), (T6) outputValue(outputName6), (T7) outputValue(outputName7),
 				(T8) outputValue(outputName8), (T9) outputValue(outputName9), (T10) outputValue(outputName10),
@@ -1201,7 +1201,7 @@ public class MLResults {
 			String outputName1, String outputName2, String outputName3, String outputName4, String outputName5,
 			String outputName6, String outputName7, String outputName8, String outputName9, String outputName10,
 			String outputName11, String outputName12, String outputName13, String outputName14) {
-		return new Tuple14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>((T1) outputValue(outputName1),
+		return new Tuple14<>((T1) outputValue(outputName1),
 				(T2) outputValue(outputName2), (T3) outputValue(outputName3), (T4) outputValue(outputName4),
 				(T5) outputValue(outputName5), (T6) outputValue(outputName6), (T7) outputValue(outputName7),
 				(T8) outputValue(outputName8), (T9) outputValue(outputName9), (T10) outputValue(outputName10),
@@ -1279,7 +1279,7 @@ public class MLResults {
 			String outputName1, String outputName2, String outputName3, String outputName4, String outputName5,
 			String outputName6, String outputName7, String outputName8, String outputName9, String outputName10,
 			String outputName11, String outputName12, String outputName13, String outputName14, String outputName15) {
-		return new Tuple15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(
+		return new Tuple15<>(
 				(T1) outputValue(outputName1), (T2) outputValue(outputName2), (T3) outputValue(outputName3),
 				(T4) outputValue(outputName4), (T5) outputValue(outputName5), (T6) outputValue(outputName6),
 				(T7) outputValue(outputName7), (T8) outputValue(outputName8), (T9) outputValue(outputName9),
@@ -1362,7 +1362,7 @@ public class MLResults {
 			String outputName6, String outputName7, String outputName8, String outputName9, String outputName10,
 			String outputName11, String outputName12, String outputName13, String outputName14, String outputName15,
 			String outputName16) {
-		return new Tuple16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(
+		return new Tuple16<>(
 				(T1) outputValue(outputName1), (T2) outputValue(outputName2), (T3) outputValue(outputName3),
 				(T4) outputValue(outputName4), (T5) outputValue(outputName5), (T6) outputValue(outputName6),
 				(T7) outputValue(outputName7), (T8) outputValue(outputName8), (T9) outputValue(outputName9),
@@ -1450,7 +1450,7 @@ public class MLResults {
 			String outputName6, String outputName7, String outputName8, String outputName9, String outputName10,
 			String outputName11, String outputName12, String outputName13, String outputName14, String outputName15,
 			String outputName16, String outputName17) {
-		return new Tuple17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(
+		return new Tuple17<>(
 				(T1) outputValue(outputName1), (T2) outputValue(outputName2), (T3) outputValue(outputName3),
 				(T4) outputValue(outputName4), (T5) outputValue(outputName5), (T6) outputValue(outputName6),
 				(T7) outputValue(outputName7), (T8) outputValue(outputName8), (T9) outputValue(outputName9),
@@ -1542,7 +1542,7 @@ public class MLResults {
 			String outputName6, String outputName7, String outputName8, String outputName9, String outputName10,
 			String outputName11, String outputName12, String outputName13, String outputName14, String outputName15,
 			String outputName16, String outputName17, String outputName18) {
-		return new Tuple18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>(
+		return new Tuple18<>(
 				(T1) outputValue(outputName1), (T2) outputValue(outputName2), (T3) outputValue(outputName3),
 				(T4) outputValue(outputName4), (T5) outputValue(outputName5), (T6) outputValue(outputName6),
 				(T7) outputValue(outputName7), (T8) outputValue(outputName8), (T9) outputValue(outputName9),
@@ -1638,7 +1638,7 @@ public class MLResults {
 			String outputName6, String outputName7, String outputName8, String outputName9, String outputName10,
 			String outputName11, String outputName12, String outputName13, String outputName14, String outputName15,
 			String outputName16, String outputName17, String outputName18, String outputName19) {
-		return new Tuple19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>(
+		return new Tuple19<>(
 				(T1) outputValue(outputName1), (T2) outputValue(outputName2), (T3) outputValue(outputName3),
 				(T4) outputValue(outputName4), (T5) outputValue(outputName5), (T6) outputValue(outputName6),
 				(T7) outputValue(outputName7), (T8) outputValue(outputName8), (T9) outputValue(outputName9),
@@ -1739,7 +1739,7 @@ public class MLResults {
 			String outputName6, String outputName7, String outputName8, String outputName9, String outputName10,
 			String outputName11, String outputName12, String outputName13, String outputName14, String outputName15,
 			String outputName16, String outputName17, String outputName18, String outputName19, String outputName20) {
-		return new Tuple20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>(
+		return new Tuple20<>(
 				(T1) outputValue(outputName1), (T2) outputValue(outputName2), (T3) outputValue(outputName3),
 				(T4) outputValue(outputName4), (T5) outputValue(outputName5), (T6) outputValue(outputName6),
 				(T7) outputValue(outputName7), (T8) outputValue(outputName8), (T9) outputValue(outputName9),
@@ -1845,7 +1845,7 @@ public class MLResults {
 			String outputName11, String outputName12, String outputName13, String outputName14, String outputName15,
 			String outputName16, String outputName17, String outputName18, String outputName19, String outputName20,
 			String outputName21) {
-		return new Tuple21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(
+		return new Tuple21<>(
 				(T1) outputValue(outputName1), (T2) outputValue(outputName2), (T3) outputValue(outputName3),
 				(T4) outputValue(outputName4), (T5) outputValue(outputName5), (T6) outputValue(outputName6),
 				(T7) outputValue(outputName7), (T8) outputValue(outputName8), (T9) outputValue(outputName9),
@@ -1955,7 +1955,7 @@ public class MLResults {
 			String outputName11, String outputName12, String outputName13, String outputName14, String outputName15,
 			String outputName16, String outputName17, String outputName18, String outputName19, String outputName20,
 			String outputName21, String outputName22) {
-		return new Tuple22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(
+		return new Tuple22<>(
 				(T1) outputValue(outputName1), (T2) outputValue(outputName2), (T3) outputValue(outputName3),
 				(T4) outputValue(outputName4), (T5) outputValue(outputName5), (T6) outputValue(outputName6),
 				(T7) outputValue(outputName7), (T8) outputValue(outputName8), (T9) outputValue(outputName9),

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/api/mlcontext/ProjectInfo.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/mlcontext/ProjectInfo.java b/src/main/java/org/apache/sysml/api/mlcontext/ProjectInfo.java
index 9af6696..917fc7a 100644
--- a/src/main/java/org/apache/sysml/api/mlcontext/ProjectInfo.java
+++ b/src/main/java/org/apache/sysml/api/mlcontext/ProjectInfo.java
@@ -57,7 +57,7 @@ public class ProjectInfo {
 			systemMlJar = new JarFile(path);
 			Manifest manifest = systemMlJar.getManifest();
 			Attributes mainAttributes = manifest.getMainAttributes();
-			properties = new TreeMap<String, String>();
+			properties = new TreeMap<>();
 			for (Object key : mainAttributes.keySet()) {
 				String value = mainAttributes.getValue((Name) key);
 				properties.put(key.toString(), value);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/api/mlcontext/Script.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/mlcontext/Script.java b/src/main/java/org/apache/sysml/api/mlcontext/Script.java
index fb7fc41..0f08cbe 100644
--- a/src/main/java/org/apache/sysml/api/mlcontext/Script.java
+++ b/src/main/java/org/apache/sysml/api/mlcontext/Script.java
@@ -57,23 +57,23 @@ public class Script {
 	/**
 	 * All inputs (input parameters ($) and input variables).
 	 */
-	private Map<String, Object> inputs = new LinkedHashMap<String, Object>();
+	private Map<String, Object> inputs = new LinkedHashMap<>();
 	/**
 	 * The input parameters ($).
 	 */
-	private Map<String, Object> inputParameters = new LinkedHashMap<String, Object>();
+	private Map<String, Object> inputParameters = new LinkedHashMap<>();
 	/**
 	 * The input variables.
 	 */
-	private Set<String> inputVariables = new LinkedHashSet<String>();
+	private Set<String> inputVariables = new LinkedHashSet<>();
 	/**
 	 * The input matrix or frame metadata if present.
 	 */
-	private Map<String, Metadata> inputMetadata = new LinkedHashMap<String, Metadata>();
+	private Map<String, Metadata> inputMetadata = new LinkedHashMap<>();
 	/**
 	 * The output variables.
 	 */
-	private Set<String> outputVariables = new LinkedHashSet<String>();
+	private Set<String> outputVariables = new LinkedHashSet<>();
 	/**
 	 * The symbol table containing the data associated with variables.
 	 */
@@ -332,14 +332,14 @@ public class Script {
 
 		MLContextUtil.checkInputValueType(name, value);
 		if (inputs == null) {
-			inputs = new LinkedHashMap<String, Object>();
+			inputs = new LinkedHashMap<>();
 		}
 		inputs.put(name, value);
 
 		if (name.startsWith("$")) {
 			MLContextUtil.checkInputParameterType(name, value);
 			if (inputParameters == null) {
-				inputParameters = new LinkedHashMap<String, Object>();
+				inputParameters = new LinkedHashMap<>();
 			}
 			inputParameters.put(name, value);
 		} else {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/conf/CompilerConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/conf/CompilerConfig.java b/src/main/java/org/apache/sysml/conf/CompilerConfig.java
index 4fc7765..9dba923 100644
--- a/src/main/java/org/apache/sysml/conf/CompilerConfig.java
+++ b/src/main/java/org/apache/sysml/conf/CompilerConfig.java
@@ -86,7 +86,7 @@ public class CompilerConfig
 	private HashMap<ConfigType, Integer> _imap = null;
 	
 	public CompilerConfig() {
-		_bmap = new HashMap<ConfigType, Boolean>();
+		_bmap = new HashMap<>();
 		_bmap.put(ConfigType.PARALLEL_CP_READ_TEXTFORMATS, FLAG_PARREADWRITE_TEXT);
 		_bmap.put(ConfigType.PARALLEL_CP_WRITE_TEXTFORMATS, FLAG_PARREADWRITE_TEXT);
 		_bmap.put(ConfigType.PARALLEL_CP_READ_BINARYFORMATS, FLAG_PARREADWRITE_BINARY);
@@ -103,7 +103,7 @@ public class CompilerConfig
 		_bmap.put(ConfigType.MLCONTEXT, false);
 		_bmap.put(ConfigType.CODEGEN_ENABLED, false);
 		
-		_imap = new HashMap<CompilerConfig.ConfigType, Integer>();
+		_imap = new HashMap<>();
 		_imap.put(ConfigType.BLOCK_SIZE, OptimizerUtils.DEFAULT_BLOCKSIZE);
 		_imap.put(ConfigType.OPT_LEVEL, OptimizerUtils.DEFAULT_OPTLEVEL.ordinal());
 	}

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/conf/ConfigurationManager.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/conf/ConfigurationManager.java b/src/main/java/org/apache/sysml/conf/ConfigurationManager.java
index 27ab8b4..0ddc78a 100644
--- a/src/main/java/org/apache/sysml/conf/ConfigurationManager.java
+++ b/src/main/java/org/apache/sysml/conf/ConfigurationManager.java
@@ -200,13 +200,13 @@ public class ConfigurationManager
 	
 	private static class ThreadLocalDMLConfig extends ThreadLocal<DMLConfig> {
 		@Override 
-        protected DMLConfig initialValue() { 
+		protected DMLConfig initialValue() { 
 			//currently initialize by reference to avoid unnecessary deep copy via clone.
-	        if( _dmlconf != null )
-	        	return _dmlconf; 
-	        return null;
-        }
-    }
+			if( _dmlconf != null )
+				return _dmlconf; 
+			return null;
+		}
+	}
 	
 	private static class ThreadLocalCompilerConfig extends ThreadLocal<CompilerConfig> {
 		@Override 
@@ -215,5 +215,5 @@ public class ConfigurationManager
 				return _cconf.clone();
 			return null;
 		}
-    };
+	}
 }

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/conf/DMLConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/conf/DMLConfig.java b/src/main/java/org/apache/sysml/conf/DMLConfig.java
index 9835b4d..6eaa52e 100644
--- a/src/main/java/org/apache/sysml/conf/DMLConfig.java
+++ b/src/main/java/org/apache/sysml/conf/DMLConfig.java
@@ -111,7 +111,7 @@ public class DMLConfig
 	
 	static
 	{
-		_defaultVals = new HashMap<String, String>();
+		_defaultVals = new HashMap<>();
 		_defaultVals.put(LOCAL_TMP_DIR,          "/tmp/systemml" );
 		_defaultVals.put(SCRATCH_SPACE,          "scratch_space" );
 		_defaultVals.put(OPTIMIZATION_LEVEL,     String.valueOf(OptimizerUtils.DEFAULT_OPTLEVEL.ordinal()) );
@@ -303,7 +303,7 @@ public class DMLConfig
 	 */
 	public Map<String, String> getCustomMRConfig()
 	{
-		HashMap<String, String> ret = new HashMap<String, String>();
+		HashMap<String, String> ret = new HashMap<>();
 	
 		//check for non-existing config xml tree
 		if( _xmlRoot == null )

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/debug/DMLBreakpointManager.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/debug/DMLBreakpointManager.java b/src/main/java/org/apache/sysml/debug/DMLBreakpointManager.java
index 2ec3744..5f32620 100644
--- a/src/main/java/org/apache/sysml/debug/DMLBreakpointManager.java
+++ b/src/main/java/org/apache/sysml/debug/DMLBreakpointManager.java
@@ -31,7 +31,7 @@ import org.apache.sysml.runtime.instructions.cp.BreakPointInstruction.BPINSTRUCT
 public class DMLBreakpointManager {
 	
 	/** Map between DML script line numbers and breakpoint instructions */
-	private static TreeMap<Integer, BreakPointInstruction> breakpoints = new TreeMap<Integer, BreakPointInstruction>();
+	private static TreeMap<Integer, BreakPointInstruction> breakpoints = new TreeMap<>();
 	
 	
 	/**

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/debug/DMLDebuggerProgramInfo.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/debug/DMLDebuggerProgramInfo.java b/src/main/java/org/apache/sysml/debug/DMLDebuggerProgramInfo.java
index 92a9495..cf9ca44 100644
--- a/src/main/java/org/apache/sysml/debug/DMLDebuggerProgramInfo.java
+++ b/src/main/java/org/apache/sysml/debug/DMLDebuggerProgramInfo.java
@@ -56,7 +56,7 @@ public class DMLDebuggerProgramInfo
 	 * Constructor for DMLDebuggerProgramInfo class.
 	 */
 	public DMLDebuggerProgramInfo() {
-		disassembler = new TreeMap<Integer, ArrayList<Instruction>>();
+		disassembler = new TreeMap<>();
 	}
 	
 	/** 
@@ -236,7 +236,7 @@ public class DMLDebuggerProgramInfo
 	 */
 	public void setDMLInstMap() 
 	{
-		disassembler = new TreeMap<Integer, ArrayList<Instruction>>();		
+		disassembler = new TreeMap<>();
 		if (this.rtprog != null)  
 		{
 			//Functions: For each function program block (if any), get instructions corresponding to each line number

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/debug/DebugState.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/debug/DebugState.java b/src/main/java/org/apache/sysml/debug/DebugState.java
index 0294d7f..ed1bea3 100644
--- a/src/main/java/org/apache/sysml/debug/DebugState.java
+++ b/src/main/java/org/apache/sysml/debug/DebugState.java
@@ -29,7 +29,7 @@ public class DebugState
 {
 	
 	public String [] dmlScript;
-	public Stack<DMLFrame> callStack = new Stack<DMLFrame>();
+	public Stack<DMLFrame> callStack = new Stack<>();
 	public DMLProgramCounter pc = null, prevPC = null;
 	public LocalVariableMap frameVariables=null;
 	public String dbCommand=null;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/AggBinaryOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/AggBinaryOp.java b/src/main/java/org/apache/sysml/hops/AggBinaryOp.java
index 11a2399..cfa99a4 100644
--- a/src/main/java/org/apache/sysml/hops/AggBinaryOp.java
+++ b/src/main/java/org/apache/sysml/hops/AggBinaryOp.java
@@ -80,7 +80,7 @@ public class AggBinaryOp extends Hop implements MultiThreadedHop
 		TSMM2,    //transpose-self matrix multiplication, 2-pass w/o shuffle (sp)
 		ZIPMM,    //zip matrix multiplication (sp)
 		MM        //in-memory matrix multiplication (cp)
-	};
+	}
 	
 	public enum SparkAggType{
 		NONE,

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/BinaryOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/BinaryOp.java b/src/main/java/org/apache/sysml/hops/BinaryOp.java
index cd1f715..97ec655 100644
--- a/src/main/java/org/apache/sysml/hops/BinaryOp.java
+++ b/src/main/java/org/apache/sysml/hops/BinaryOp.java
@@ -82,7 +82,7 @@ public class BinaryOp extends Hop
 		MR_RAPPEND, //reduce-only append (output must have at most one column block)
 		MR_GAPPEND, //map-reduce general case append (map-extend, aggregate)
 		SP_GAlignedAppend // special case for general case in Spark where left.getCols() % left.getColsPerBlock() == 0
-	};
+	}
 	
 	private enum MMBinaryMethod {
 		CP_BINARY, //(implicitly selected for CP) 
@@ -91,7 +91,7 @@ public class BinaryOp extends Hop
 		MR_BINARY_OUTER_M,
 		MR_BINARY_OUTER_R, //only vv 
 		MR_BINARY_UAGG_CHAIN, //(mr/spark)
-	};
+	}
 	
 	private BinaryOp() {
 		//default constructor for clone

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/ConvolutionOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/ConvolutionOp.java b/src/main/java/org/apache/sysml/hops/ConvolutionOp.java
index c5cf667..849b694 100644
--- a/src/main/java/org/apache/sysml/hops/ConvolutionOp.java
+++ b/src/main/java/org/apache/sysml/hops/ConvolutionOp.java
@@ -343,8 +343,8 @@ public class ConvolutionOp extends Hop  implements MultiThreadedHop
 	@Override
 	protected double computeIntermediateMemEstimate( long ignoreDim1, long ignoreDim2, long ignoreNnz )
 	{	
-		ArrayList<IntermediateDimensions> gpuIntermediates = new ArrayList<IntermediateDimensions>();
-		ArrayList<IntermediateDimensions> cpIntermediates = new ArrayList<IntermediateDimensions>();
+		ArrayList<IntermediateDimensions> gpuIntermediates = new ArrayList<>();
+		ArrayList<IntermediateDimensions> cpIntermediates = new ArrayList<>();
 		if(getOp() == ConvOp.DIRECT_CONV2D) {
 			// Assumption: To compile a GPU conv2d operator, following should fit on the GPU:
 			// 1. output in dense format (i.e. computeOutputMemEstimate) 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/DataGenOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/DataGenOp.java b/src/main/java/org/apache/sysml/hops/DataGenOp.java
index eb04ed3..69f35ed 100644
--- a/src/main/java/org/apache/sysml/hops/DataGenOp.java
+++ b/src/main/java/org/apache/sysml/hops/DataGenOp.java
@@ -60,7 +60,7 @@ public class DataGenOp extends Hop implements MultiThreadedHop
 	 * i.e., getInput().get(_paramIndexMap.get(parameterName)) refers to the Hop
 	 * that is associated with parameterName.
 	 */
-	private HashMap<String, Integer> _paramIndexMap = new HashMap<String, Integer>();
+	private HashMap<String, Integer> _paramIndexMap = new HashMap<>();
 		
 
 	/** target identifier which will hold the random object */
@@ -160,7 +160,7 @@ public class DataGenOp extends Hop implements MultiThreadedHop
 
 		ExecType et = optFindExecType();
 		
-		HashMap<String, Lop> inputLops = new HashMap<String, Lop>();
+		HashMap<String, Lop> inputLops = new HashMap<>();
 		for (Entry<String, Integer> cur : _paramIndexMap.entrySet()) {
 			if( cur.getKey().equals(DataExpression.RAND_ROWS) && _dim1>0 )
 				inputLops.put(cur.getKey(), new LiteralOp(_dim1).constructLops());

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/DataOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/DataOp.java b/src/main/java/org/apache/sysml/hops/DataOp.java
index f410210..01e4878 100644
--- a/src/main/java/org/apache/sysml/hops/DataOp.java
+++ b/src/main/java/org/apache/sysml/hops/DataOp.java
@@ -58,7 +58,7 @@ public class DataOp extends Hop
 	 * i.e., getInput().get(_paramIndexMap.get(parameterName)) refers to the Hop
 	 * that is associated with parameterName.
 	 */
-	private HashMap<String, Integer> _paramIndexMap = new HashMap<String, Integer>();
+	private HashMap<String, Integer> _paramIndexMap = new HashMap<>();
 
 	private DataOp() {
 		//default constructor for clone
@@ -257,7 +257,7 @@ public class DataOp extends Hop
 		Lop l = null;
 		
 		// construct lops for all input parameters
-		HashMap<String, Lop> inputLops = new HashMap<String, Lop>();
+		HashMap<String, Lop> inputLops = new HashMap<>();
 		for (Entry<String, Integer> cur : _paramIndexMap.entrySet()) {
 			inputLops.put(cur.getKey(), getInput().get(cur.getValue())
 					.constructLops());

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/FunctionOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/FunctionOp.java b/src/main/java/org/apache/sysml/hops/FunctionOp.java
index 62872ea..570030f 100644
--- a/src/main/java/org/apache/sysml/hops/FunctionOp.java
+++ b/src/main/java/org/apache/sysml/hops/FunctionOp.java
@@ -236,7 +236,7 @@ public class FunctionOp extends Hop
 		ExecType et = optFindExecType();
 		
 		//construct input lops (recursive)
-		ArrayList<Lop> tmp = new ArrayList<Lop>();
+		ArrayList<Lop> tmp = new ArrayList<>();
 		for( Hop in : getInput() )
 			tmp.add( in.constructLops() );
 		 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/Hop.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/Hop.java b/src/main/java/org/apache/sysml/hops/Hop.java
index 165a831..6547e2f 100644
--- a/src/main/java/org/apache/sysml/hops/Hop.java
+++ b/src/main/java/org/apache/sysml/hops/Hop.java
@@ -915,7 +915,7 @@ public abstract class Hop implements ParseInfo
 		if( !force )
 			resetVisitStatus(hops);
 		else {
-			HashSet<Long> memo = new HashSet<Long>();
+			HashSet<Long> memo = new HashSet<>();
 			if( hops != null )
 				for( Hop hopRoot : hops )
 					hopRoot.resetVisitStatusForced(memo);
@@ -1075,12 +1075,12 @@ public abstract class Hop implements ParseInfo
 		MINUS_NZ, //sparse-safe minus: X-(mean*ppred(X,0,!=))
 		LOG_NZ, //sparse-safe log; ppred(X,0,"!=")*log(X,0.5)
 		MINUS1_MULT, //1-X*Y
-	};
+	}
 
 	// Operations that require 3 operands
 	public enum OpOp3 {
 		QUANTILE, INTERQUANTILE, CTABLE, CENTRALMOMENT, COVARIANCE, PLUS_MULT, MINUS_MULT
-	};
+	}
 	
 	// Operations that require 4 operands
 	public enum OpOp4 {
@@ -1089,7 +1089,7 @@ public abstract class Hop implements ParseInfo
 		WDIVMM, //weighted divide mm
 		WCEMM, //weighted cross entropy mm
 		WUMM //weighted unary mm
-	};
+	}
 	
 	// Operations that require a variable number of operands
 	public enum MultiInputOp {
@@ -1098,7 +1098,7 @@ public abstract class Hop implements ParseInfo
 	
 	public enum AggOp {
 		SUM, SUM_SQ, MIN, MAX, TRACE, PROD, MEAN, VAR, MAXINDEX, MININDEX
-	};
+	}
 
 	public enum ReOrgOp {
 		TRANSPOSE, DIAG, RESHAPE, SORT, REV
@@ -1106,39 +1106,39 @@ public abstract class Hop implements ParseInfo
 		//create incorrect plans (now we try to infer it for memory estimates
 		//and rewrites but the final choice is made during runtime)
 		//DIAG_V2M, DIAG_M2V, 
-	};
+	}
 	
 	public enum ConvOp {
 		MAX_POOLING, MAX_POOLING_BACKWARD,
 		DIRECT_CONV2D, DIRECT_CONV2D_BACKWARD_FILTER, DIRECT_CONV2D_BACKWARD_DATA,
 		BIAS_ADD, BIAS_MULTIPLY
-	};
+	}
 	
 	public enum DataGenMethod {
 		RAND, SEQ, SINIT, SAMPLE, INVALID
-	};
+	}
 
 	public enum ParamBuiltinOp {
 		INVALID, CDF, INVCDF, GROUPEDAGG, RMEMPTY, REPLACE, REXPAND, 
 		TRANSFORMAPPLY, TRANSFORMDECODE, TRANSFORMCOLMAP, TRANSFORMMETA,
 		TOSTRING
-	};
+	}
 
 	public enum FileFormatTypes {
 		TEXT, BINARY, MM, CSV
-	};
+	}
 
 	public enum DataOpTypes {
 		PERSISTENTREAD, PERSISTENTWRITE, TRANSIENTREAD, TRANSIENTWRITE, FUNCTIONOUTPUT
-	};
+	}
 
 	public enum Direction {
 		RowCol, Row, Col
-	};
+	}
 
 	protected static final HashMap<DataOpTypes, org.apache.sysml.lops.Data.OperationTypes> HopsData2Lops;
 	static {
-		HopsData2Lops = new HashMap<Hop.DataOpTypes, org.apache.sysml.lops.Data.OperationTypes>();
+		HopsData2Lops = new HashMap<>();
 		HopsData2Lops.put(DataOpTypes.PERSISTENTREAD, org.apache.sysml.lops.Data.OperationTypes.READ);
 		HopsData2Lops.put(DataOpTypes.PERSISTENTWRITE, org.apache.sysml.lops.Data.OperationTypes.WRITE);
 		HopsData2Lops.put(DataOpTypes.TRANSIENTWRITE, org.apache.sysml.lops.Data.OperationTypes.WRITE);
@@ -1147,7 +1147,7 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<Hop.AggOp, org.apache.sysml.lops.Aggregate.OperationTypes> HopsAgg2Lops;
 	static {
-		HopsAgg2Lops = new HashMap<Hop.AggOp, org.apache.sysml.lops.Aggregate.OperationTypes>();
+		HopsAgg2Lops = new HashMap<>();
 		HopsAgg2Lops.put(AggOp.SUM, org.apache.sysml.lops.Aggregate.OperationTypes.KahanSum);
 		HopsAgg2Lops.put(AggOp.SUM_SQ, org.apache.sysml.lops.Aggregate.OperationTypes.KahanSumSq);
 		HopsAgg2Lops.put(AggOp.TRACE, org.apache.sysml.lops.Aggregate.OperationTypes.KahanTrace);
@@ -1162,7 +1162,7 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<ReOrgOp, org.apache.sysml.lops.Transform.OperationTypes> HopsTransf2Lops;
 	static {
-		HopsTransf2Lops = new HashMap<ReOrgOp, org.apache.sysml.lops.Transform.OperationTypes>();
+		HopsTransf2Lops = new HashMap<>();
 		HopsTransf2Lops.put(ReOrgOp.TRANSPOSE, org.apache.sysml.lops.Transform.OperationTypes.Transpose);
 		HopsTransf2Lops.put(ReOrgOp.REV, org.apache.sysml.lops.Transform.OperationTypes.Rev);
 		HopsTransf2Lops.put(ReOrgOp.DIAG, org.apache.sysml.lops.Transform.OperationTypes.Diag);
@@ -1173,7 +1173,7 @@ public abstract class Hop implements ParseInfo
 	
 	protected static final HashMap<ConvOp, org.apache.sysml.lops.ConvolutionTransform.OperationTypes> HopsConv2Lops;
 	static {
-		HopsConv2Lops = new HashMap<ConvOp, org.apache.sysml.lops.ConvolutionTransform.OperationTypes>();
+		HopsConv2Lops = new HashMap<>();
 		HopsConv2Lops.put(ConvOp.MAX_POOLING, org.apache.sysml.lops.ConvolutionTransform.OperationTypes.MAX_POOLING);
 		HopsConv2Lops.put(ConvOp.MAX_POOLING_BACKWARD, org.apache.sysml.lops.ConvolutionTransform.OperationTypes.MAX_POOLING_BACKWARD);
 		HopsConv2Lops.put(ConvOp.DIRECT_CONV2D, org.apache.sysml.lops.ConvolutionTransform.OperationTypes.DIRECT_CONV2D);
@@ -1185,7 +1185,7 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<Hop.Direction, org.apache.sysml.lops.PartialAggregate.DirectionTypes> HopsDirection2Lops;
 	static {
-		HopsDirection2Lops = new HashMap<Hop.Direction, org.apache.sysml.lops.PartialAggregate.DirectionTypes>();
+		HopsDirection2Lops = new HashMap<>();
 		HopsDirection2Lops.put(Direction.RowCol, org.apache.sysml.lops.PartialAggregate.DirectionTypes.RowCol);
 		HopsDirection2Lops.put(Direction.Col, org.apache.sysml.lops.PartialAggregate.DirectionTypes.Col);
 		HopsDirection2Lops.put(Direction.Row, org.apache.sysml.lops.PartialAggregate.DirectionTypes.Row);
@@ -1194,7 +1194,7 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<Hop.OpOp2, Binary.OperationTypes> HopsOpOp2LopsB;
 	static {
-		HopsOpOp2LopsB = new HashMap<Hop.OpOp2, Binary.OperationTypes>();
+		HopsOpOp2LopsB = new HashMap<>();
 		HopsOpOp2LopsB.put(OpOp2.PLUS, Binary.OperationTypes.ADD);
 		HopsOpOp2LopsB.put(OpOp2.MINUS, Binary.OperationTypes.SUBTRACT);
 		HopsOpOp2LopsB.put(OpOp2.MULT, Binary.OperationTypes.MULTIPLY);
@@ -1219,8 +1219,8 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<Hop.OpOp2, BinaryScalar.OperationTypes> HopsOpOp2LopsBS;
 	static {
-		HopsOpOp2LopsBS = new HashMap<Hop.OpOp2, BinaryScalar.OperationTypes>();
-		HopsOpOp2LopsBS.put(OpOp2.PLUS, BinaryScalar.OperationTypes.ADD);	
+		HopsOpOp2LopsBS = new HashMap<>();
+		HopsOpOp2LopsBS.put(OpOp2.PLUS, BinaryScalar.OperationTypes.ADD);
 		HopsOpOp2LopsBS.put(OpOp2.MINUS, BinaryScalar.OperationTypes.SUBTRACT);
 		HopsOpOp2LopsBS.put(OpOp2.MULT, BinaryScalar.OperationTypes.MULTIPLY);
 		HopsOpOp2LopsBS.put(OpOp2.DIV, BinaryScalar.OperationTypes.DIVIDE);
@@ -1243,7 +1243,7 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<Hop.OpOp2, org.apache.sysml.lops.Unary.OperationTypes> HopsOpOp2LopsU;
 	static {
-		HopsOpOp2LopsU = new HashMap<Hop.OpOp2, org.apache.sysml.lops.Unary.OperationTypes>();
+		HopsOpOp2LopsU = new HashMap<>();
 		HopsOpOp2LopsU.put(OpOp2.PLUS, org.apache.sysml.lops.Unary.OperationTypes.ADD);
 		HopsOpOp2LopsU.put(OpOp2.MINUS, org.apache.sysml.lops.Unary.OperationTypes.SUBTRACT);
 		HopsOpOp2LopsU.put(OpOp2.MULT, org.apache.sysml.lops.Unary.OperationTypes.MULTIPLY);
@@ -1269,7 +1269,7 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<Hop.OpOp1, org.apache.sysml.lops.Unary.OperationTypes> HopsOpOp1LopsU;
 	static {
-		HopsOpOp1LopsU = new HashMap<Hop.OpOp1, org.apache.sysml.lops.Unary.OperationTypes>();
+		HopsOpOp1LopsU = new HashMap<>();
 		HopsOpOp1LopsU.put(OpOp1.NOT, org.apache.sysml.lops.Unary.OperationTypes.NOT);
 		HopsOpOp1LopsU.put(OpOp1.ABS, org.apache.sysml.lops.Unary.OperationTypes.ABS);
 		HopsOpOp1LopsU.put(OpOp1.SIN, org.apache.sysml.lops.Unary.OperationTypes.SIN);
@@ -1306,7 +1306,7 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<Hop.OpOp1, org.apache.sysml.lops.UnaryCP.OperationTypes> HopsOpOp1LopsUS;
 	static {
-		HopsOpOp1LopsUS = new HashMap<Hop.OpOp1, org.apache.sysml.lops.UnaryCP.OperationTypes>();
+		HopsOpOp1LopsUS = new HashMap<>();
 		HopsOpOp1LopsUS.put(OpOp1.NOT, org.apache.sysml.lops.UnaryCP.OperationTypes.NOT);
 		HopsOpOp1LopsUS.put(OpOp1.ABS, org.apache.sysml.lops.UnaryCP.OperationTypes.ABS);
 		HopsOpOp1LopsUS.put(OpOp1.SIN, org.apache.sysml.lops.UnaryCP.OperationTypes.SIN);
@@ -1345,13 +1345,13 @@ public abstract class Hop implements ParseInfo
 	 */
 	protected static final HashMap<MultiInputOp, MultipleCP.OperationType> MultipleOperandOperationHopTypeToLopType;
 	static {
-		MultipleOperandOperationHopTypeToLopType = new HashMap<MultiInputOp, MultipleCP.OperationType>();
+		MultipleOperandOperationHopTypeToLopType = new HashMap<>();
 		MultipleOperandOperationHopTypeToLopType.put(MultiInputOp.PRINTF, MultipleCP.OperationType.PRINTF);
 	}
 
 	protected static final HashMap<Hop.OpOp1, String> HopsOpOp12String;
 	static {
-		HopsOpOp12String = new HashMap<OpOp1, String>();	
+		HopsOpOp12String = new HashMap<>();
 		HopsOpOp12String.put(OpOp1.ABS, "abs");
 		HopsOpOp12String.put(OpOp1.CAST_AS_SCALAR, "castAsScalar");
 		HopsOpOp12String.put(OpOp1.COS, "cos");
@@ -1384,7 +1384,7 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<Hop.ParamBuiltinOp, org.apache.sysml.lops.ParameterizedBuiltin.OperationTypes> HopsParameterizedBuiltinLops;
 	static {
-		HopsParameterizedBuiltinLops = new HashMap<Hop.ParamBuiltinOp, org.apache.sysml.lops.ParameterizedBuiltin.OperationTypes>();
+		HopsParameterizedBuiltinLops = new HashMap<>();
 		HopsParameterizedBuiltinLops.put(ParamBuiltinOp.CDF, org.apache.sysml.lops.ParameterizedBuiltin.OperationTypes.CDF);
 		HopsParameterizedBuiltinLops.put(ParamBuiltinOp.INVCDF, org.apache.sysml.lops.ParameterizedBuiltin.OperationTypes.INVCDF);
 		HopsParameterizedBuiltinLops.put(ParamBuiltinOp.RMEMPTY, org.apache.sysml.lops.ParameterizedBuiltin.OperationTypes.RMEMPTY);
@@ -1399,7 +1399,7 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<Hop.OpOp2, String> HopsOpOp2String;
 	static {
-		HopsOpOp2String = new HashMap<Hop.OpOp2, String>();
+		HopsOpOp2String = new HashMap<>();
 		HopsOpOp2String.put(OpOp2.PLUS, "+");
 		HopsOpOp2String.put(OpOp2.MINUS, "-");
 		HopsOpOp2String.put(OpOp2.MINUS_NZ, "-nz");
@@ -1440,7 +1440,7 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<Hop.OpOp3, String> HopsOpOp3String;
 	static {
-		HopsOpOp3String = new HashMap<Hop.OpOp3, String>();
+		HopsOpOp3String = new HashMap<>();
 		HopsOpOp3String.put(OpOp3.QUANTILE, "quantile");
 		HopsOpOp3String.put(OpOp3.INTERQUANTILE, "interquantile");
 		HopsOpOp3String.put(OpOp3.CTABLE, "ctable");
@@ -1452,7 +1452,7 @@ public abstract class Hop implements ParseInfo
 	
 	protected static final HashMap<Hop.OpOp4, String> HopsOpOp4String;
 	static {
-		HopsOpOp4String = new HashMap<Hop.OpOp4, String>();
+		HopsOpOp4String = new HashMap<>();
 		HopsOpOp4String.put(OpOp4.WSLOSS,   "wsloss");
 		HopsOpOp4String.put(OpOp4.WSIGMOID, "wsigmoid");
 		HopsOpOp4String.put(OpOp4.WCEMM,    "wcemm");
@@ -1462,7 +1462,7 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<Hop.Direction, String> HopsDirection2String;
 	static {
-		HopsDirection2String = new HashMap<Hop.Direction, String>();
+		HopsDirection2String = new HashMap<>();
 		HopsDirection2String.put(Direction.RowCol, "RC");
 		HopsDirection2String.put(Direction.Col, "C");
 		HopsDirection2String.put(Direction.Row, "R");
@@ -1470,7 +1470,7 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<Hop.AggOp, String> HopsAgg2String;
 	static {
-		HopsAgg2String = new HashMap<Hop.AggOp, String>();
+		HopsAgg2String = new HashMap<>();
 		HopsAgg2String.put(AggOp.SUM, "+");
 		HopsAgg2String.put(AggOp.SUM_SQ, "sq+");
 		HopsAgg2String.put(AggOp.PROD, "*");
@@ -1485,7 +1485,7 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<Hop.ReOrgOp, String> HopsTransf2String;
 	static {
-		HopsTransf2String = new HashMap<ReOrgOp, String>();
+		HopsTransf2String = new HashMap<>();
 		HopsTransf2String.put(ReOrgOp.TRANSPOSE, "t");
 		HopsTransf2String.put(ReOrgOp.DIAG, "diag");
 		HopsTransf2String.put(ReOrgOp.RESHAPE, "rshape");
@@ -1494,7 +1494,7 @@ public abstract class Hop implements ParseInfo
 
 	protected static final HashMap<DataOpTypes, String> HopsData2String;
 	static {
-		HopsData2String = new HashMap<Hop.DataOpTypes, String>();
+		HopsData2String = new HashMap<>();
 		HopsData2String.put(DataOpTypes.PERSISTENTREAD, "PRead");
 		HopsData2String.put(DataOpTypes.PERSISTENTWRITE, "PWrite");
 		HopsData2String.put(DataOpTypes.TRANSIENTWRITE, "TWrite");
@@ -1834,8 +1834,8 @@ public abstract class Hop implements ParseInfo
 		_updateType = that._updateType;
 
 		//no copy of lops (regenerated)
-		_parent = new ArrayList<Hop>();
-		_input = new ArrayList<Hop>();
+		_parent = new ArrayList<>();
+		_input = new ArrayList<>();
 		_lops = null;
 		
 		_etype = that._etype;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/IndexingOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/IndexingOp.java b/src/main/java/org/apache/sysml/hops/IndexingOp.java
index fa67618..0aa6d03 100644
--- a/src/main/java/org/apache/sysml/hops/IndexingOp.java
+++ b/src/main/java/org/apache/sysml/hops/IndexingOp.java
@@ -45,7 +45,7 @@ public class IndexingOp extends Hop
 		CP_RIX, //in-memory range index
 		MR_RIX, //general case range reindex
 		MR_VRIX, //vector (row/col) range index
-	};
+	}
 	
 	
 	private IndexingOp() {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/MemoTable.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/MemoTable.java b/src/main/java/org/apache/sysml/hops/MemoTable.java
index 94368ee..48ecf66 100644
--- a/src/main/java/org/apache/sysml/hops/MemoTable.java
+++ b/src/main/java/org/apache/sysml/hops/MemoTable.java
@@ -38,7 +38,7 @@ public class MemoTable
 	
 	public MemoTable()
 	{
-		_memo = new HashMap<Long, MatrixCharacteristics>();
+		_memo = new HashMap<>();
 	}
 
 	public void init( ArrayList<Hop> hops, RecompileStatus status)

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/OptimizerUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/OptimizerUtils.java b/src/main/java/org/apache/sysml/hops/OptimizerUtils.java
index 0215100..e44e439 100644
--- a/src/main/java/org/apache/sysml/hops/OptimizerUtils.java
+++ b/src/main/java/org/apache/sysml/hops/OptimizerUtils.java
@@ -248,7 +248,7 @@ public class OptimizerUtils
 		O3_LOCAL_RESOURCE_TIME_MEMORY,
 		O4_GLOBAL_TIME_MEMORY,
 		O5_DEBUG_MODE,
-	};
+	}
 		
 	public static OptimizationLevel getOptLevel() {
 		int optlevel = ConfigurationManager.getCompilerConfig().getInt(ConfigType.OPT_LEVEL);
@@ -1131,7 +1131,7 @@ public class OptimizerUtils
 			return defaultValue;
 		ForStatementBlock fsb = (ForStatementBlock) fpb.getStatementBlock();
 		try {
-			HashMap<Long,Long> memo = new HashMap<Long,Long>();
+			HashMap<Long,Long> memo = new HashMap<>();
 			long from = rEvalSimpleLongExpression(fsb.getFromHops().getInput().get(0), memo);
 			long to = rEvalSimpleLongExpression(fsb.getToHops().getInput().get(0), memo);
 			long increment = (fsb.getIncrementHops()==null) ? (from < to) ? 1 : -1 : 
@@ -1148,7 +1148,7 @@ public class OptimizerUtils
 			return defaultValue;
 		ForStatementBlock fsb = (ForStatementBlock) fpb.getStatementBlock();
 		try {
-			HashMap<Long,Long> memo = new HashMap<Long,Long>();
+			HashMap<Long,Long> memo = new HashMap<>();
 			long from = rEvalSimpleLongExpression(fsb.getFromHops().getInput().get(0), memo, vars);
 			long to = rEvalSimpleLongExpression(fsb.getToHops().getInput().get(0), memo, vars);
 			long increment = (fsb.getIncrementHops()==null) ? (from < to) ? 1 : -1 : 
@@ -1177,7 +1177,7 @@ public class OptimizerUtils
 		long ret = Long.MAX_VALUE;
 		
 		//for simplicity and robustness call double and cast.
-		HashMap<Long, Double> dvalMemo = new HashMap<Long, Double>();
+		HashMap<Long, Double> dvalMemo = new HashMap<>();
 		double tmp = rEvalSimpleDoubleExpression(root, dvalMemo);
 		if( tmp!=Double.MAX_VALUE )
 			ret = UtilFunctions.toLong( tmp );
@@ -1191,7 +1191,7 @@ public class OptimizerUtils
 		long ret = Long.MAX_VALUE;
 		
 		//for simplicity and robustness call double and cast.
-		HashMap<Long, Double> dvalMemo = new HashMap<Long, Double>();
+		HashMap<Long, Double> dvalMemo = new HashMap<>();
 		double tmp = rEvalSimpleDoubleExpression(root, dvalMemo, vars);
 		if( tmp!=Double.MAX_VALUE )
 			ret = UtilFunctions.toLong( tmp );

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/ParameterizedBuiltinOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/ParameterizedBuiltinOp.java b/src/main/java/org/apache/sysml/hops/ParameterizedBuiltinOp.java
index 2d3e256..b9b8649 100644
--- a/src/main/java/org/apache/sysml/hops/ParameterizedBuiltinOp.java
+++ b/src/main/java/org/apache/sysml/hops/ParameterizedBuiltinOp.java
@@ -74,7 +74,7 @@ public class ParameterizedBuiltinOp extends Hop implements MultiThreadedHop
 	 * i.e., getInput().get(_paramIndexMap.get(parameterName)) refers to the Hop
 	 * that is associated with parameterName.
 	 */
-	private HashMap<String, Integer> _paramIndexMap = new HashMap<String, Integer>();
+	private HashMap<String, Integer> _paramIndexMap = new HashMap<>();
 
 	private ParameterizedBuiltinOp() {
 		//default constructor for clone
@@ -170,7 +170,7 @@ public class ParameterizedBuiltinOp extends Hop implements MultiThreadedHop
 			return getLops();
 		
 		// construct lops for all input parameters
-		HashMap<String, Lop> inputlops = new HashMap<String, Lop>();
+		HashMap<String, Lop> inputlops = new HashMap<>();
 		for (Entry<String, Integer> cur : _paramIndexMap.entrySet())
 			inputlops.put(cur.getKey(), getInput().get(cur.getValue()).constructLops());
 
@@ -641,7 +641,7 @@ public class ParameterizedBuiltinOp extends Hop implements MultiThreadedHop
 					setLineNumbers(group2);
 					group2.getOutputParameters().setDimensions(rlen, clen, brlen, bclen, nnz);
 				
-					HashMap<String, Lop> inMap = new HashMap<String, Lop>();
+					HashMap<String, Lop> inMap = new HashMap<>();
 					inMap.put("target", group1);
 					inMap.put("offset", group2);
 					inMap.put("maxdim", lmaxdim);
@@ -726,7 +726,7 @@ public class ParameterizedBuiltinOp extends Hop implements MultiThreadedHop
 			Lop loffset = offsets.constructLops();
 			Lop lmaxdim = maxDim.constructLops();
 			
-			HashMap<String, Lop> inMap = new HashMap<String, Lop>();
+			HashMap<String, Lop> inMap = new HashMap<>();
 			inMap.put("target", linput);
 			inMap.put("offset", loffset);
 			inMap.put("maxdim", lmaxdim);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/ReorgOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/ReorgOp.java b/src/main/java/org/apache/sysml/hops/ReorgOp.java
index f0560d3..ef83253 100644
--- a/src/main/java/org/apache/sysml/hops/ReorgOp.java
+++ b/src/main/java/org/apache/sysml/hops/ReorgOp.java
@@ -331,7 +331,7 @@ public class ReorgOp extends Hop implements MultiThreadedHop
 					else
 					{
 						//small vector, use in-memory sort
-						ArrayList<Hop> sinputs = new ArrayList<Hop>();
+						ArrayList<Hop> sinputs = new ArrayList<>();
 						sinputs.add(vinput);
 						sinputs.add(new LiteralOp(1)); //by (always vector)
 						sinputs.add(desc);
@@ -341,7 +341,7 @@ public class ReorgOp extends Hop implements MultiThreadedHop
 						//explicitly construct CP lop; otherwise there is danger of infinite recursion if forced runtime platform.
 						voutput.setLops( constructCPOrSparkSortLop(vinput, sinputs.get(1), sinputs.get(2), sinputs.get(3), ExecType.CP, false) );
 						voutput.getLops().getOutputParameters().setDimensions(vinput.getDim1(), vinput.getDim2(), vinput.getRowsInBlock(), vinput.getColsInBlock(), vinput.getNnz());
-						setLops( voutput.constructLops() );								
+						setLops( voutput.constructLops() );
 					}
 					
 					//Step 3: Data permutation (only required for sorting data) 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/UnaryOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/UnaryOp.java b/src/main/java/org/apache/sysml/hops/UnaryOp.java
index 46cabcc..94b33f8 100644
--- a/src/main/java/org/apache/sysml/hops/UnaryOp.java
+++ b/src/main/java/org/apache/sysml/hops/UnaryOp.java
@@ -403,7 +403,7 @@ public class UnaryOp extends Hop implements MultiThreadedHop
 		
 		Lop X = input.constructLops();
 		Lop TEMP = X;
-		ArrayList<Lop> DATA = new ArrayList<Lop>();
+		ArrayList<Lop> DATA = new ArrayList<>();
 		int level = 0;
 		
 		//recursive preaggregation until aggregates fit into CP memory budget
@@ -479,7 +479,7 @@ public class UnaryOp extends Hop implements MultiThreadedHop
 		
 		Lop X = input.constructLops();
 		Lop TEMP = X;
-		ArrayList<Lop> DATA = new ArrayList<Lop>();
+		ArrayList<Lop> DATA = new ArrayList<>();
 		int level = 0;
 		
 		//recursive preaggregation until aggregates fit into CP memory budget

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java b/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java
index a521918..0e5e194 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java
@@ -331,8 +331,7 @@ public class SpoofCompiler
 	public static Hop optimize( Hop root, boolean recompile ) throws DMLRuntimeException {
 		if( root == null )
 			return root;
-		
-		return optimize(new ArrayList<Hop>(
+		return optimize(new ArrayList<>(
 			Collections.singleton(root)), recompile).get(0);
 	}
 	
@@ -370,7 +369,7 @@ public class SpoofCompiler
 			//note: we do not use the hop visit status due to jumps over fused operators which would
 			//corrupt subsequent resets, leaving partial hops dags in visited status
 			HashMap<Long, Pair<Hop[],CNodeTpl>> cplans = new LinkedHashMap<>();
-			HashSet<Long> visited = new HashSet<Long>();
+			HashSet<Long> visited = new HashSet<>();
 			for( Hop hop : roots )
 				rConstructCPlans(hop, memo, cplans, compileLiterals, visited);
 			
@@ -385,7 +384,7 @@ public class SpoofCompiler
 			}
 			
 			//source code generation for all cplans
-			HashMap<Long, Pair<Hop[],Class<?>>> clas = new HashMap<Long, Pair<Hop[],Class<?>>>();
+			HashMap<Long, Pair<Hop[],Class<?>>> clas = new HashMap<>();
 			for( Entry<Long, Pair<Hop[],CNodeTpl>> cplan : cplans.entrySet() ) 
 			{
 				Pair<Hop[],CNodeTpl> tmp = cplan.getValue();
@@ -597,7 +596,7 @@ public class SpoofCompiler
 	private static ArrayList<Hop> constructModifiedHopDag(ArrayList<Hop> orig, 
 			HashMap<Long, Pair<Hop[],CNodeTpl>> cplans, HashMap<Long, Pair<Hop[],Class<?>>> cla)
 	{
-		HashSet<Long> memo = new HashSet<Long>();
+		HashSet<Long> memo = new HashSet<>();
 		for( int i=0; i<orig.size(); i++ ) {
 			Hop hop = orig.get(i); //w/o iterator because modified
 			rConstructModifiedHopDag(hop, cplans, cla, memo);
@@ -678,7 +677,7 @@ public class SpoofCompiler
 	 */
 	private static HashMap<Long, Pair<Hop[],CNodeTpl>> cleanupCPlans(CPlanMemoTable memo, HashMap<Long, Pair<Hop[],CNodeTpl>> cplans) 
 	{
-		HashMap<Long, Pair<Hop[],CNodeTpl>> cplans2 = new HashMap<Long, Pair<Hop[],CNodeTpl>>();
+		HashMap<Long, Pair<Hop[],CNodeTpl>> cplans2 = new HashMap<>();
 		CPlanCSERewriter cse = new CPlanCSERewriter();
 		
 		for( Entry<Long, Pair<Hop[],CNodeTpl>> e : cplans.entrySet() ) {
@@ -693,7 +692,7 @@ public class SpoofCompiler
 			inHops = Arrays.stream(inHops)
 				.filter(p -> inputHopIDs.contains(p.getHopID()))
 				.toArray(Hop[]::new);
-			cplans2.put(e.getKey(), new Pair<Hop[],CNodeTpl>(inHops, tpl));
+			cplans2.put(e.getKey(), new Pair<>(inHops, tpl));
 			
 			//remove invalid plans with column indexing on main input
 			if( tpl instanceof CNodeCell || tpl instanceof CNodeRow ) {
@@ -836,7 +835,7 @@ public class SpoofCompiler
 		private final int _maxSize;
 		
 		public PlanCache(int maxSize) {
-			 _plans = new LinkedHashMap<CNode, Class<?>>();	
+			 _plans = new LinkedHashMap<>();
 			 _maxSize = maxSize;
 		}
 		

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/SpoofFusedOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/SpoofFusedOp.java b/src/main/java/org/apache/sysml/hops/codegen/SpoofFusedOp.java
index 56bfb61..c6176cc 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/SpoofFusedOp.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/SpoofFusedOp.java
@@ -106,7 +106,7 @@ public class SpoofFusedOp extends Hop implements MultiThreadedHop
 		
 		ExecType et = optFindExecType();
 		
-		ArrayList<Lop> inputs = new ArrayList<Lop>();
+		ArrayList<Lop> inputs = new ArrayList<>();
 		for( Hop c : getInput() )
 			inputs.add(c.constructLops());
 		

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/cplan/CNode.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNode.java b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNode.java
index ff9103e..b0efb42 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNode.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNode.java
@@ -47,7 +47,7 @@ public abstract class CNode
 	
 	public CNode() {
 		_ID = _seqID.getNextID();
-		_inputs = new ArrayList<CNode>();
+		_inputs = new ArrayList<>();
 		_generated = false;
 	}
 	

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTpl.java b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTpl.java
index db7ea31..ab5853c 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTpl.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTpl.java
@@ -56,7 +56,7 @@ public abstract class CNodeTpl extends CNode implements Cloneable
 	}
 	
 	public HashSet<Long> getInputHopIDs(boolean inclLiterals) {
-		HashSet<Long> ret = new HashSet<Long>();
+		HashSet<Long> ret = new HashSet<>();
 		for( CNode input : _inputs )
 			if( !input.isLiteral() || inclLiterals )
 				ret.add(((CNodeData)input).getHopID());
@@ -90,7 +90,7 @@ public abstract class CNodeTpl extends CNode implements Cloneable
 	
 	protected void renameInputs(List<CNode> outputs, ArrayList<CNode> inputs, int startIndex) {
 		//create map of hopID to new names used for code generation
-		HashMap<Long, String> newNames = new HashMap<Long, String>();
+		HashMap<Long, String> newNames = new HashMap<>();
 		for(int i=startIndex, sPos=0, mPos=0; i < inputs.size(); i++) {
 			CNode cnode = inputs.get(i);
 			if( cnode instanceof CNodeData && ((CNodeData)cnode).isLiteral() )
@@ -114,7 +114,7 @@ public abstract class CNodeTpl extends CNode implements Cloneable
 			return;
 		
 		//create temporary name mapping
-		HashMap<Long, String> newNames = new HashMap<Long, String>();
+		HashMap<Long, String> newNames = new HashMap<>();
 		newNames.put(((CNodeData)input).getHopID(), newName);
 		
 		//single pass to replace all names

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/opt/PlanAnalyzer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanAnalyzer.java b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanAnalyzer.java
index 9ff6986..db1ee4d 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanAnalyzer.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanAnalyzer.java
@@ -68,7 +68,7 @@ public class PlanAnalyzer
 	private static Collection<HashSet<Long>> getConnectedSubGraphs(CPlanMemoTable memo, ArrayList<Hop> roots) 
 	{
 		//build inverted index for 'referenced by' relationship 
-		HashMap<Long, HashSet<Long>> refBy = new HashMap<Long, HashSet<Long>>();
+		HashMap<Long, HashSet<Long>> refBy = new HashMap<>();
 		for( Entry<Long, List<MemoTableEntry>> e : memo.getPlans().entrySet() )
 			for( MemoTableEntry me : e.getValue() ) 
 				for( int i=0; i<3; i++ )
@@ -80,8 +80,8 @@ public class PlanAnalyzer
 		
 		//create a single partition per root node, if reachable over refBy of 
 		//other root node the resulting partition is empty and can be discarded
-		ArrayList<HashSet<Long>> parts = new ArrayList<HashSet<Long>>();
-		HashSet<Long> visited = new HashSet<Long>();
+		ArrayList<HashSet<Long>> parts = new ArrayList<>();
+		HashSet<Long> visited = new HashSet<>();
 		for( Entry<Long, List<MemoTableEntry>> e : memo.getPlans().entrySet() )
 			if( !refBy.containsKey(e.getKey()) ) { //root node
 				HashSet<Long> part = rGetConnectedSubGraphs(e.getKey(), 
@@ -99,7 +99,7 @@ public class PlanAnalyzer
 	private static HashSet<Long> getPartitionRootNodes(CPlanMemoTable memo, HashSet<Long> partition) 
 	{
 		//build inverted index of references entries 
-		HashSet<Long> ix = new HashSet<Long>();
+		HashSet<Long> ix = new HashSet<>();
 		for( Long hopID : partition )
 			if( memo.contains(hopID) )
 				for( MemoTableEntry me : memo.get(hopID) ) {
@@ -108,7 +108,7 @@ public class PlanAnalyzer
 					ix.add(me.input3);
 				}
 		
-		HashSet<Long> roots = new HashSet<Long>();
+		HashSet<Long> roots = new HashSet<>();
 		for( Long hopID : partition )
 			if( !ix.contains(hopID) )
 				roots.add(hopID);
@@ -125,8 +125,8 @@ public class PlanAnalyzer
 			HashSet<Long> partition, CPlanMemoTable memo) 
 	{
 		//collect materialization points bottom-up
-		ArrayList<Long> ret = new ArrayList<Long>();
-		HashSet<Long> visited = new HashSet<Long>();
+		ArrayList<Long> ret = new ArrayList<>();
+		HashSet<Long> visited = new HashSet<>();
 		for( Long hopID : roots )
 			rCollectMaterializationPoints(memo.getHopRefs().get(hopID), 
 					visited, partition, roots, ret);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelection.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelection.java b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelection.java
index 4cf56c4..369bf75 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelection.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelection.java
@@ -37,9 +37,8 @@ public abstract class PlanSelection
 	private static final BasicPlanComparator BASE_COMPARE = new BasicPlanComparator();
 	private final TypedPlanComparator _typedCompare = new TypedPlanComparator();
 	
-	private final HashMap<Long, List<MemoTableEntry>> _bestPlans = 
-			new HashMap<Long, List<MemoTableEntry>>();
-	private final HashSet<VisitMark> _visited = new HashSet<VisitMark>();
+	private final HashMap<Long, List<MemoTableEntry>> _bestPlans = new HashMap<>();
+	private final HashSet<VisitMark> _visited = new HashSet<>();
 	
 	/**
 	 * Given a HOP DAG G, and a set of partial fusions plans P, find the set of optimal, 
@@ -95,7 +94,7 @@ public abstract class PlanSelection
 		
 		//step 1: prune subsumed plans of same type
 		if( memo.contains(current.getHopID()) ) {
-			HashSet<MemoTableEntry> rmSet = new HashSet<MemoTableEntry>();
+			HashSet<MemoTableEntry> rmSet = new HashSet<>();
 			List<MemoTableEntry> hopP = memo.get(current.getHopID());
 			for( MemoTableEntry e1 : hopP )
 				for( MemoTableEntry e2 : hopP )


[2/7] systemml git commit: [MINOR] Cleanup various issues raised by static code analysis, part 1

Posted by mb...@apache.org.
http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/matrix/sort/ValueSortMapper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/sort/ValueSortMapper.java b/src/main/java/org/apache/sysml/runtime/matrix/sort/ValueSortMapper.java
index e4477e2..344e4f5 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/sort/ValueSortMapper.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/sort/ValueSortMapper.java
@@ -40,10 +40,9 @@ import org.apache.sysml.runtime.matrix.data.Pair;
 import org.apache.sysml.runtime.matrix.mapred.MRJobConfiguration;
 
 @SuppressWarnings("rawtypes")
-public class ValueSortMapper<KIN extends WritableComparable, VIN extends Writable, KOUT extends WritableComparable, VOUT extends Writable> extends MapReduceBase 
-      implements Mapper<KIN, VIN, KOUT, VOUT>
+public class ValueSortMapper<KIN extends WritableComparable, VIN extends Writable, KOUT extends WritableComparable, VOUT extends Writable> 
+	extends MapReduceBase implements Mapper<KIN, VIN, KOUT, VOUT>
 {
-	
 	private int brlen;
 	private int bclen;
 	private CombineUnaryInstruction combineInstruction=null;
@@ -78,16 +77,14 @@ public class ValueSortMapper<KIN extends WritableComparable, VIN extends Writabl
 	}
 	
 	@Override
-	@SuppressWarnings("unchecked")
 	public void configure(JobConf job)
 	{
-		try 
-		{
+		try  {
 			brlen = MRJobConfiguration.getNumRowsPerBlock(job, (byte) 0);
 			bclen = MRJobConfiguration.getNumColumnsPerBlock(job, (byte) 0);
 			String str=job.get(SortMR.COMBINE_INSTRUCTION, null);
 			if(str!=null && !str.isEmpty() && !"null".equals(str))
-					combineInstruction=(CombineUnaryInstruction) CombineUnaryInstruction.parseInstruction(str);
+				combineInstruction=(CombineUnaryInstruction) CombineUnaryInstruction.parseInstruction(str);
 			inputConverter = MRJobConfiguration.getInputConverter(job, (byte) 0);
 			inputConverter.setBlockSize(brlen, bclen);
 		} 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderFactory.java b/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderFactory.java
index 2e3dc16..dcacd6d 100644
--- a/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderFactory.java
+++ b/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderFactory.java
@@ -36,8 +36,6 @@ import org.apache.wink.json4j.JSONObject;
 
 public class DecoderFactory 
 {
-
-	@SuppressWarnings("unchecked")
 	public static Decoder createDecoder(String spec, String[] colnames, ValueType[] schema, FrameBlock meta) 
 		throws DMLRuntimeException 
 	{	

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/transform/encode/EncoderFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/transform/encode/EncoderFactory.java b/src/main/java/org/apache/sysml/runtime/transform/encode/EncoderFactory.java
index 8cc22a8..b8180f3 100644
--- a/src/main/java/org/apache/sysml/runtime/transform/encode/EncoderFactory.java
+++ b/src/main/java/org/apache/sysml/runtime/transform/encode/EncoderFactory.java
@@ -44,8 +44,7 @@ public class EncoderFactory
 		ValueType[] lschema = (schema==null) ? UtilFunctions.nCopies(clen, ValueType.STRING) : schema;
 		return createEncoder(spec, colnames, lschema, meta);
 	}
-
-	@SuppressWarnings("unchecked")
+	
 	public static Encoder createEncoder(String spec, String[] colnames, ValueType[] schema, FrameBlock meta) 
 		throws DMLRuntimeException 
 	{

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/transform/encode/EncoderMVImpute.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/transform/encode/EncoderMVImpute.java b/src/main/java/org/apache/sysml/runtime/transform/encode/EncoderMVImpute.java
index ae9b809..ad155e9 100644
--- a/src/main/java/org/apache/sysml/runtime/transform/encode/EncoderMVImpute.java
+++ b/src/main/java/org/apache/sysml/runtime/transform/encode/EncoderMVImpute.java
@@ -43,7 +43,7 @@ public class EncoderMVImpute extends Encoder
 {	
 	private static final long serialVersionUID = 9057868620144662194L;
 
-	public enum MVMethod { INVALID, GLOBAL_MEAN, GLOBAL_MODE, CONSTANT };
+	public enum MVMethod { INVALID, GLOBAL_MEAN, GLOBAL_MODE, CONSTANT }
 	
 	private MVMethod[] _mvMethodList = null;
 	private MVMethod[] _mvscMethodList = null;	// scaling methods for attributes that are imputed and also scaled

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/transform/meta/TfMetaUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/transform/meta/TfMetaUtils.java b/src/main/java/org/apache/sysml/runtime/transform/meta/TfMetaUtils.java
index abaad26..14a12b8 100644
--- a/src/main/java/org/apache/sysml/runtime/transform/meta/TfMetaUtils.java
+++ b/src/main/java/org/apache/sysml/runtime/transform/meta/TfMetaUtils.java
@@ -337,7 +337,6 @@ public class TfMetaUtils
 	 * @return list of column ids
 	 * @throws IOException if IOException occurs
 	 */
-	@SuppressWarnings("unchecked")
 	private static List<Integer> parseRecodeColIDs(String spec, String[] colnames) 
 		throws IOException 
 	{	

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/util/DataConverter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/util/DataConverter.java b/src/main/java/org/apache/sysml/runtime/util/DataConverter.java
index a758b4d..5a91564 100644
--- a/src/main/java/org/apache/sysml/runtime/util/DataConverter.java
+++ b/src/main/java/org/apache/sysml/runtime/util/DataConverter.java
@@ -341,7 +341,7 @@ public class DataConverter
 		int rows = mb.getNumRows();
 		int cols = mb.getNumColumns();
 		long nnz = mb.getNonZeros();
-		ArrayList<Double> ret = new ArrayList<Double>();
+		ArrayList<Double> ret = new ArrayList<>();
 		
 		if( mb.isInSparseFormat() )
 		{

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/util/UtilFunctions.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/util/UtilFunctions.java b/src/main/java/org/apache/sysml/runtime/util/UtilFunctions.java
index 891dbc9..5644ac6 100644
--- a/src/main/java/org/apache/sysml/runtime/util/UtilFunctions.java
+++ b/src/main/java/org/apache/sysml/runtime/util/UtilFunctions.java
@@ -330,7 +330,7 @@ public class UtilFunctions
 	 * @return list of integers
 	 */
 	public static List<Integer> getSeqList(int low, int up, int incr) {
-		ArrayList<Integer> ret = new ArrayList<Integer>();
+		ArrayList<Integer> ret = new ArrayList<>();
 		for( int i=low; i<=up; i+=incr )
 			ret.add(i);
 		return ret;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/udf/Matrix.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/udf/Matrix.java b/src/main/java/org/apache/sysml/udf/Matrix.java
index 212678f..1e6dfbd 100644
--- a/src/main/java/org/apache/sysml/udf/Matrix.java
+++ b/src/main/java/org/apache/sysml/udf/Matrix.java
@@ -55,7 +55,7 @@ public class Matrix extends FunctionParameter
 	public enum ValueType {
 		Double,
 		Integer
-	};
+	}
 	
 	/**
 	 * This constructor invokes Matrix(String path, long rows, long cols, ValueType vType)

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/udf/PackageFunction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/udf/PackageFunction.java b/src/main/java/org/apache/sysml/udf/PackageFunction.java
index 9b5fbd5..cf9afe3 100644
--- a/src/main/java/org/apache/sysml/udf/PackageFunction.java
+++ b/src/main/java/org/apache/sysml/udf/PackageFunction.java
@@ -40,7 +40,7 @@ public abstract class PackageFunction implements Serializable
 	private IDSequence _seq = null;
 
 	public PackageFunction() {
-		_function_inputs = new ArrayList<FunctionParameter>();
+		_function_inputs = new ArrayList<>();
 		_seq = new IDSequence();
 	}
 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/udf/Scalar.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/udf/Scalar.java b/src/main/java/org/apache/sysml/udf/Scalar.java
index a738da5..572d6d6 100644
--- a/src/main/java/org/apache/sysml/udf/Scalar.java
+++ b/src/main/java/org/apache/sysml/udf/Scalar.java
@@ -27,13 +27,11 @@ package org.apache.sysml.udf;
  */
 public class Scalar extends FunctionParameter 
 {
-	
-
 	private static final long serialVersionUID = 55239661026793046L;
 
 	public enum ScalarValueType {
 		Integer, Double, Boolean, Text
-	};
+	}
 
 	protected String _value;
 	protected ScalarValueType _sType;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/udf/lib/RemoveEmptyRows.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/udf/lib/RemoveEmptyRows.java b/src/main/java/org/apache/sysml/udf/lib/RemoveEmptyRows.java
index 195a9e0..41df844 100644
--- a/src/main/java/org/apache/sysml/udf/lib/RemoveEmptyRows.java
+++ b/src/main/java/org/apache/sysml/udf/lib/RemoveEmptyRows.java
@@ -71,7 +71,7 @@ public class RemoveEmptyRows extends PackageFunction
 		Matrix mat = (Matrix) this.getFunctionInput(0);
 		String fnameOld = mat.getFilePath(); 
 		
-		HashMap<Long,Long> keyMap = new HashMap<Long,Long>(); //old,new rowID
+		HashMap<Long,Long> keyMap = new HashMap<>(); //old,new rowID
 			
 		try
 		{		

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/udf/lib/RowClassMeet.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/udf/lib/RowClassMeet.java b/src/main/java/org/apache/sysml/udf/lib/RowClassMeet.java
index d24d0e8..5764d1e 100644
--- a/src/main/java/org/apache/sysml/udf/lib/RowClassMeet.java
+++ b/src/main/java/org/apache/sysml/udf/lib/RowClassMeet.java
@@ -163,7 +163,7 @@ public class RowClassMeet extends PackageFunction {
 					getRow(B, bRow, i);
 				
 				// Create class labels
-				TreeMap<ClassLabels, ArrayList<Integer>> classLabelMapping = new TreeMap<ClassLabels, ArrayList<Integer>>(new ClassLabelComparator());
+				TreeMap<ClassLabels, ArrayList<Integer>> classLabelMapping = new TreeMap<>(new ClassLabelComparator());
 				if(A.isInSparseFormat()) {
 					Iterator<IJV> iter = A.getSparseBlockIterator(i, i+1);
 					while(iter.hasNext()) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/utils/Explain.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/utils/Explain.java b/src/main/java/org/apache/sysml/utils/Explain.java
index 01b59f7..6a9d696 100644
--- a/src/main/java/org/apache/sysml/utils/Explain.java
+++ b/src/main/java/org/apache/sysml/utils/Explain.java
@@ -100,7 +100,7 @@ public class Explain
 		public boolean isRuntimeType(boolean recompile) {
 			return (this==RECOMPILE_RUNTIME || (!recompile && this==RUNTIME));
 		}
-	};
+	}
 	
 	public static class ExplainCounts {
 		public int numCPInst = 0;
@@ -484,12 +484,10 @@ public class Explain
 		throws DMLRuntimeException
 	{
 		StringBuilder sb = new StringBuilder();
-		
-		HashSet<Long> memo = new HashSet<Long>();
+		HashSet<Long> memo = new HashSet<>();
 		for( GDFNode gnode : gdfnodes )
 			sb.append(explainGDFNode(gnode, level, memo));
-		
-		return sb.toString();		
+		return sb.toString();
 	}
 	
 	/**

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/utils/GPUStatistics.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/utils/GPUStatistics.java b/src/main/java/org/apache/sysml/utils/GPUStatistics.java
index e6ea4a7..2668ad9 100644
--- a/src/main/java/org/apache/sysml/utils/GPUStatistics.java
+++ b/src/main/java/org/apache/sysml/utils/GPUStatistics.java
@@ -64,8 +64,8 @@ public class GPUStatistics {
 	// Per instruction miscellaneous timers.
 	// Used to record events in a CP Heavy Hitter instruction and
 	// provide a breakdown of how time was spent in that instruction
-	private static HashMap<String, HashMap<String, Long>> _cpInstMiscTime = new HashMap<String, HashMap<String, Long>> ();
-	private static HashMap<String, HashMap<String, Long>> _cpInstMiscCount = new HashMap<String, HashMap<String, Long>> ();
+	private static HashMap<String, HashMap<String, Long>> _cpInstMiscTime = new HashMap<> ();
+	private static HashMap<String, HashMap<String, Long>> _cpInstMiscCount = new HashMap<> ();
 
 	/**
 	 * Resets the miscellaneous timers & counters
@@ -122,7 +122,7 @@ public class GPUStatistics {
 
 		HashMap<String, Long> miscTimesMap = _cpInstMiscTime.get(instructionName);
 		if (miscTimesMap == null) {
-			miscTimesMap = new HashMap<String, Long>();
+			miscTimesMap = new HashMap<>();
 			_cpInstMiscTime.put(instructionName, miscTimesMap);
 		}
 		Long oldVal = miscTimesMap.get(miscTimer);
@@ -131,7 +131,7 @@ public class GPUStatistics {
 
 		HashMap<String, Long> miscCountMap = _cpInstMiscCount.get(instructionName);
 		if (miscCountMap == null){
-			miscCountMap = new HashMap<String, Long>();
+			miscCountMap = new HashMap<>();
 			_cpInstMiscCount.put(instructionName, miscCountMap);
 		}
 		Long oldCnt = miscCountMap.get(miscTimer);
@@ -158,7 +158,7 @@ public class GPUStatistics {
 		StringBuffer sb = new StringBuffer();
 		HashMap<String, Long> miscTimerMap = _cpInstMiscTime.get(instructionName);
 		if (miscTimerMap != null) {
-			List<Map.Entry<String, Long>> sortedList = new ArrayList<Map.Entry<String, Long>>(miscTimerMap.entrySet());
+			List<Map.Entry<String, Long>> sortedList = new ArrayList<>(miscTimerMap.entrySet());
 			// Sort the times to display by the most expensive first
 			Collections.sort(sortedList, new Comparator<Map.Entry<String, Long>>() {
 				@Override

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/utils/GenerateClassesForMLContext.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/utils/GenerateClassesForMLContext.java b/src/main/java/org/apache/sysml/utils/GenerateClassesForMLContext.java
index 2c6b05c..b297bdd 100644
--- a/src/main/java/org/apache/sysml/utils/GenerateClassesForMLContext.java
+++ b/src/main/java/org/apache/sysml/utils/GenerateClassesForMLContext.java
@@ -562,7 +562,7 @@ public class GenerateClassesForMLContext {
 			}
 			Map<String, FunctionStatementBlock> defaultNsFsbsMap = dmlProgram
 					.getFunctionStatementBlocks(DMLProgram.DEFAULT_NAMESPACE);
-			List<FunctionStatementBlock> fsbs = new ArrayList<FunctionStatementBlock>();
+			List<FunctionStatementBlock> fsbs = new ArrayList<>();
 			fsbs.addAll(defaultNsFsbsMap.values());
 			for (FunctionStatementBlock fsb : fsbs) {
 				ArrayList<Statement> sts = fsb.getStatements();

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/utils/NativeHelper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/utils/NativeHelper.java b/src/main/java/org/apache/sysml/utils/NativeHelper.java
index 4b25d60..63eea16 100644
--- a/src/main/java/org/apache/sysml/utils/NativeHelper.java
+++ b/src/main/java/org/apache/sysml/utils/NativeHelper.java
@@ -44,7 +44,7 @@ import org.apache.sysml.hops.OptimizerUtils;
 public class NativeHelper {
 	private static boolean isSystemMLLoaded = false;
 	private static final Log LOG = LogFactory.getLog(NativeHelper.class.getName());
-	private static HashMap<String, String> supportedArchitectures = new HashMap<String, String>();
+	private static HashMap<String, String> supportedArchitectures = new HashMap<>();
 	public static String blasType;
 	private static int maxNumThreads = -1;
 	private static boolean setMaxNumThreads = false;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/utils/Statistics.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/utils/Statistics.java b/src/main/java/org/apache/sysml/utils/Statistics.java
index 109eec2..555493c 100644
--- a/src/main/java/org/apache/sysml/utils/Statistics.java
+++ b/src/main/java/org/apache/sysml/utils/Statistics.java
@@ -105,8 +105,8 @@ public class Statistics
 	private static long parforMergeTime = 0; //in milli sec
 	
 	//heavy hitter counts and times 
-	private static HashMap<String,Long> _cpInstTime = new HashMap<String, Long>();
-	private static HashMap<String,Long> _cpInstCounts = new HashMap<String, Long>();
+	private static HashMap<String,Long> _cpInstTime = new HashMap<>();
+	private static HashMap<String,Long> _cpInstCounts = new HashMap<>();
 
 	private static final LongAdder lTotalUIPVar = new LongAdder();
 	private static final LongAdder lTotalLix = new LongAdder();
@@ -558,7 +558,6 @@ public class Statistics
 	 * @return string representing the heavy hitter instructions in tabular
 	 *         format
 	 */
-	@SuppressWarnings("unchecked")
 	public static String getHeavyHitters(int num) {
 		int len = _cpInstTime.size();
 		if (num <= 0 || len <= 0)

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/utils/lite/BuildLite.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/utils/lite/BuildLite.java b/src/main/java/org/apache/sysml/utils/lite/BuildLite.java
index 9b7af29..9048ce6 100644
--- a/src/main/java/org/apache/sysml/utils/lite/BuildLite.java
+++ b/src/main/java/org/apache/sysml/utils/lite/BuildLite.java
@@ -84,7 +84,7 @@ public class BuildLite {
 	 * include resources such as service files and shutdown hooks that aren't
 	 * detected by query to the classloader.
 	 */
-	public static List<String> additionalResources = new ArrayList<String>();
+	public static List<String> additionalResources = new ArrayList<>();
 	static {
 		// avoid "No FileSystem for scheme: file" error in JMLC
 		additionalResources.add("META-INF/services/org.apache.hadoop.fs.FileSystem");
@@ -92,15 +92,15 @@ public class BuildLite {
 		additionalResources.add("org/apache/hadoop/util/ShutdownHookManager$2.class");
 
 		additionalResources.add("org/apache/hadoop/log/metrics/EventCounter.class");
-	};
+	}
 
 	/**
 	 * Map jars to the additional resources files in order to build the
 	 * dependency sets required by lite.xml.
 	 */
-	public static SortedMap<String, SortedSet<String>> additionalJarToFileMappingsForDependencySets = new TreeMap<String, SortedSet<String>>();
+	public static SortedMap<String, SortedSet<String>> additionalJarToFileMappingsForDependencySets = new TreeMap<>();
 	static {
-		SortedSet<String> hadoopCommonResources = new TreeSet<String>();
+		SortedSet<String> hadoopCommonResources = new TreeSet<>();
 		hadoopCommonResources.add("META-INF/services/org.apache.hadoop.fs.FileSystem");
 		hadoopCommonResources.add("org/apache/hadoop/util/ShutdownHookManager$2.class");
 		hadoopCommonResources.add("org/apache/hadoop/log/metrics/EventCounter.class");
@@ -111,7 +111,7 @@ public class BuildLite {
 	 * Scan project *.java files for these packages/classes that should
 	 * definitely be included in the lite jar.
 	 */
-	public static List<String> additionalPackages = new ArrayList<String>();
+	public static List<String> additionalPackages = new ArrayList<>();
 	static {
 		// math3, lang3, io, etc.
 		additionalPackages.add("org.apache.commons");
@@ -120,7 +120,7 @@ public class BuildLite {
 	/**
 	 * Exclude classes of the following packages from the lite jar.
 	 */
-	public static List<String> packagesToExclude = new ArrayList<String>();
+	public static List<String> packagesToExclude = new ArrayList<>();
 	static {
 		packagesToExclude.add("com.sun.proxy");
 		// these can be added if test suite code is run
@@ -140,12 +140,12 @@ public class BuildLite {
 	 * a sorted map and sorted sets of the class names are the values in the
 	 * sorted map.
 	 */
-	public static SortedMap<String, SortedSet<String>> jarsAndClasses = new TreeMap<String, SortedSet<String>>();
+	public static SortedMap<String, SortedSet<String>> jarsAndClasses = new TreeMap<>();
 
 	/**
 	 * The jar dependencies and their sizes for comparison purposes.
 	 */
-	public static SortedMap<String, Long> jarSizes = new TreeMap<String, Long>();
+	public static SortedMap<String, Long> jarSizes = new TreeMap<>();
 
 	/**
 	 * Dummy logger to fill in log4j info for things such as the jar sizes.
@@ -274,7 +274,7 @@ public class BuildLite {
 	private static Set<String> consolidateClassPathNames(List<Class<?>> loadedClasses, List<String> log4jClassPathNames,
 			List<String> commonsMath3ClassPathNames) {
 
-		SortedSet<String> allClassPathNames = new TreeSet<String>(log4jClassPathNames);
+		SortedSet<String> allClassPathNames = new TreeSet<>(log4jClassPathNames);
 		if (includeAllCommonsMath3) {
 			System.out.println("\nConsolidating loaded class names, log4j class names, and commons-math3 class names");
 			allClassPathNames.addAll(commonsMath3ClassPathNames);
@@ -424,7 +424,7 @@ public class BuildLite {
 	 *             if a ClassNotFoundException occurs
 	 */
 	private static List<String> getAllClassesInJar(Class<?> classInJarFile) throws IOException, ClassNotFoundException {
-		List<String> classPathNames = new ArrayList<String>();
+		List<String> classPathNames = new ArrayList<>();
 		String jarLocation = classInJarFile.getProtectionDomain().getCodeSource().getLocation().getPath();
 		File f = new File(jarLocation);
 		try (FileInputStream fis = new FileInputStream(f);
@@ -519,7 +519,7 @@ public class BuildLite {
 		f.setAccessible(true);
 		@SuppressWarnings("unchecked")
 		Vector<Class<?>> classes = (Vector<Class<?>>) f.get(cl);
-		List<Class<?>> list = new ArrayList<Class<?>>(classes);
+		List<Class<?>> list = new ArrayList<>(classes);
 
 		return list;
 	}
@@ -569,7 +569,7 @@ public class BuildLite {
 			SortedSet<String> classNames = jarsAndClasses.get(jarName);
 			classNames.add(className);
 		} else {
-			SortedSet<String> classNames = new TreeSet<String>();
+			SortedSet<String> classNames = new TreeSet<>();
 			classNames.add(className);
 			jarsAndClasses.put(jarName, classNames);
 		}
@@ -649,7 +649,7 @@ public class BuildLite {
 	private static void scanJavaFilesForClassesToLoad() throws IOException, ClassNotFoundException {
 		System.out.println("\nScanning java files for additional classes to load");
 		int totalMatches = 0;
-		SortedSet<String> uniqueMatches = new TreeSet<String>();
+		SortedSet<String> uniqueMatches = new TreeSet<>();
 		File base = new File(BASE_SRC_DIR);
 		List<File> javaFiles = (List<File>) FileUtils.listFiles(base, new String[] { "java" }, true);
 		for (File javaFile : javaFiles) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/utils/lite/BuildLiteExecution.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/utils/lite/BuildLiteExecution.java b/src/main/java/org/apache/sysml/utils/lite/BuildLiteExecution.java
index 1c858ef..b2b2574 100644
--- a/src/main/java/org/apache/sysml/utils/lite/BuildLiteExecution.java
+++ b/src/main/java/org/apache/sysml/utils/lite/BuildLiteExecution.java
@@ -128,7 +128,7 @@ public class BuildLiteExecution {
 		Connection conn = getConfiguredConnection();
 
 		String dml = conn.readScript("scripts/algorithms/Univar-Stats.dml");
-		Map<String, String> m = new HashMap<String, String>();
+		Map<String, String> m = new HashMap<>();
 		m.put("$CONSOLE_OUTPUT", "TRUE");
 
 		PreparedScript script = conn.prepareScript(dml, m, new String[] { "A", "K" }, new String[] { "baseStats" },
@@ -325,7 +325,7 @@ public class BuildLiteExecution {
 		log.debug(debugString);
 
 		String s = conn.readScript("scripts/algorithms/l2-svm-predict.dml");
-		Map<String, String> m = new HashMap<String, String>();
+		Map<String, String> m = new HashMap<>();
 		m.put("$Y", "temp/1.csv");
 		m.put("$confusion", "temp/2.csv");
 		m.put("$scores", "temp/3.csv");
@@ -443,7 +443,7 @@ public class BuildLiteExecution {
 
 		String dataGen = conn.readScript("scripts/datagen/genRandData4ALS.dml");
 
-		Map<String, String> m = new HashMap<String, String>();
+		Map<String, String> m = new HashMap<>();
 		m.put("$rows", "1000");
 		m.put("$cols", "1000");
 		m.put("$rank", "100");
@@ -456,7 +456,7 @@ public class BuildLiteExecution {
 		double[][] x = dataGenResults.getMatrix("X");
 		log.debug(displayMatrix(x));
 
-		Map<String, String> m2 = new HashMap<String, String>();
+		Map<String, String> m2 = new HashMap<>();
 		m2.put("$rank", "100");
 		String alsCg = conn.readScript("scripts/algorithms/ALS-CG.dml");
 		PreparedScript alsCgScript = conn.prepareScript(alsCg, m2, new String[] { "X" }, new String[] { "U", "V" },
@@ -488,8 +488,7 @@ public class BuildLiteExecution {
 	public static void jmlcKmeans() throws Exception {
 
 		Connection conn = getConfiguredConnection();
-
-		Map<String, String> m = new HashMap<String, String>();
+		Map<String, String> m = new HashMap<>();
 		m.put("$k", "5");
 		m.put("$isY", "TRUE");
 		m.put("$verb", "TRUE");

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/yarn/DMLAppMasterUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/yarn/DMLAppMasterUtils.java b/src/main/java/org/apache/sysml/yarn/DMLAppMasterUtils.java
index 590dc00..bd4a9a4 100644
--- a/src/main/java/org/apache/sysml/yarn/DMLAppMasterUtils.java
+++ b/src/main/java/org/apache/sysml/yarn/DMLAppMasterUtils.java
@@ -45,7 +45,6 @@ import org.apache.sysml.yarn.ropt.YarnClusterConfig;
 
 public class DMLAppMasterUtils 
 {
-	
 	private static ResourceConfig _rc = null;
 	private static HashMap<ProgramBlock, Long> _rcMap = null;
 	
@@ -91,7 +90,7 @@ public class DMLAppMasterUtils
 					//see GMR and parfor EMR and DPEMR for runtime configuration
 					long mem = ((long)conf.getIntValue(DMLConfig.YARN_MAPREDUCEMEM)) * 1024 * 1024;
 					InfrastructureAnalyzer.setRemoteMaxMemoryMap(mem);
-					InfrastructureAnalyzer.setRemoteMaxMemoryReduce(mem);		
+					InfrastructureAnalyzer.setRemoteMaxMemoryReduce(mem);
 				}
 			}
 		}
@@ -105,7 +104,7 @@ public class DMLAppMasterUtils
 			ArrayList<ProgramBlock> pbProg = getRuntimeProgramBlocks( prog ); 
 			ArrayList<ProgramBlock> B = ResourceOptimizer.compileProgram( pbProg, _rc );
 			
-			_rcMap = new HashMap<ProgramBlock, Long>();
+			_rcMap = new HashMap<>();
 			for( int i=0; i<B.size(); i++ ){
 				_rcMap.put(B.get(i), _rc.getMRResources(i));
 			}
@@ -120,7 +119,7 @@ public class DMLAppMasterUtils
 				//set max map and reduce memory (to be used by the compiler)
 				long mem = _rcMap.get(pb);
 				InfrastructureAnalyzer.setRemoteMaxMemoryMap(mem);
-				InfrastructureAnalyzer.setRemoteMaxMemoryReduce(mem);			
+				InfrastructureAnalyzer.setRemoteMaxMemoryReduce(mem);
 				OptimizerUtils.resetDefaultSize();
 			}
 		}	
@@ -161,9 +160,9 @@ public class DMLAppMasterUtils
 
 	protected static ArrayList<ProgramBlock> getRuntimeProgramBlocks(Program prog) 
 		throws DMLRuntimeException
-	{			
+	{
 		//construct single list of all program blocks including functions
-		ArrayList<ProgramBlock> ret = new ArrayList<ProgramBlock>();
+		ArrayList<ProgramBlock> ret = new ArrayList<>();
 		ret.addAll(prog.getProgramBlocks());
 		ret.addAll(prog.getFunctionProgramBlocks().values());
 		

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/yarn/DMLYarnClient.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/yarn/DMLYarnClient.java b/src/main/java/org/apache/sysml/yarn/DMLYarnClient.java
index eb7a492..2547285 100644
--- a/src/main/java/org/apache/sysml/yarn/DMLYarnClient.java
+++ b/src/main/java/org/apache/sysml/yarn/DMLYarnClient.java
@@ -448,7 +448,7 @@ public class DMLYarnClient
 	private Map<String, LocalResource> constructLocalResourceMap(YarnConfiguration yconf) 
 		throws IOException 
 	{
-		Map<String, LocalResource> rMap = new HashMap<String, LocalResource>();
+		Map<String, LocalResource> rMap = new HashMap<>();
 		Path path = new Path(_hdfsJarFile); 
 		
 		LocalResource resource = Records.newRecord(LocalResource.class);
@@ -467,7 +467,7 @@ public class DMLYarnClient
 	private Map<String, String> constructEnvionmentMap(YarnConfiguration yconf) 
 		throws IOException
 	{
-		Map<String, String> eMap = new HashMap<String, String>();
+		Map<String, String> eMap = new HashMap<>();
 		
 		//setup default app master environment
 		StringBuilder classpath = new StringBuilder();

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationEqui.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationEqui.java b/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationEqui.java
index 083f9ce..7e7a09a 100644
--- a/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationEqui.java
+++ b/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationEqui.java
@@ -35,19 +35,17 @@ public class GridEnumerationEqui extends GridEnumeration
 		throws DMLRuntimeException
 	{
 		super(prog, min, max);
-		
 		_nsteps = DEFAULT_NSTEPS;
 	}
 	
-	public void setNumSteps( int steps )
-	{
+	public void setNumSteps( int steps ) {
 		_nsteps = steps;
 	}
 	
 	@Override
 	public ArrayList<Long> enumerateGridPoints() 
 	{
-		ArrayList<Long> ret = new ArrayList<Long>();
+		ArrayList<Long> ret = new ArrayList<>();
 		long gap = (_max - _min) / (_nsteps-1);
 		long v = _min;
 		for (int i = 0; i < _nsteps; i++) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationExp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationExp.java b/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationExp.java
index 06a0d2c..922c60b 100644
--- a/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationExp.java
+++ b/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationExp.java
@@ -35,19 +35,17 @@ public class GridEnumerationExp extends GridEnumeration
 		throws DMLRuntimeException
 	{
 		super(prog, min, max);
-		
 		_factor = DEFAULT_FACTOR;
 	}
 	
-	public void setFactor( double factor )
-	{
+	public void setFactor( double factor ) {
 		_factor = factor;
 	}
 	
 	@Override
 	public ArrayList<Long> enumerateGridPoints() 
 	{
-		ArrayList<Long> ret = new ArrayList<Long>();
+		ArrayList<Long> ret = new ArrayList<>();
 		long v = _min;
 		while( v < _max ) {
 			ret.add( v );

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationHybrid.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationHybrid.java b/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationHybrid.java
index 98e51c5..beabc4e 100644
--- a/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationHybrid.java
+++ b/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationHybrid.java
@@ -33,7 +33,6 @@ import org.apache.sysml.runtime.controlprogram.ProgramBlock;
  */
 public class GridEnumerationHybrid extends GridEnumeration
 {
-	
 	public GridEnumerationHybrid( ArrayList<ProgramBlock> prog, long min, long max ) 
 		throws DMLRuntimeException
 	{
@@ -48,12 +47,12 @@ public class GridEnumerationHybrid extends GridEnumeration
 		GridEnumeration ge2 = new GridEnumerationExp(_prog, _min, _max);
 		
 		//ensure distinct points
-		HashSet<Long> hs = new HashSet<Long>();
+		HashSet<Long> hs = new HashSet<>();
 		hs.addAll( ge1.enumerateGridPoints() );
 		hs.addAll( ge2.enumerateGridPoints() );
 		
 		//create sorted output list
-		ArrayList<Long> ret = new ArrayList<Long>();
+		ArrayList<Long> ret = new ArrayList<>();
 		for( Long val : hs )
 			ret.add(val);
 		Collections.sort(ret); //asc

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java b/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java
index 78402d4..b3e4ae7 100644
--- a/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java
+++ b/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java
@@ -46,12 +46,10 @@ public class GridEnumerationMemory extends GridEnumeration
 		throws DMLRuntimeException
 	{
 		super(prog, min, max);
-		
 		_nsteps = DEFAULT_NSTEPS;
 	}
 	
-	public void setNumSteps( int steps )
-	{
+	public void setNumSteps( int steps ) {
 		_nsteps = steps;
 	}
 	
@@ -59,15 +57,15 @@ public class GridEnumerationMemory extends GridEnumeration
 	public ArrayList<Long> enumerateGridPoints() 
 		throws DMLRuntimeException, HopsException
 	{
-		ArrayList<Long> ret = new ArrayList<Long>();
+		ArrayList<Long> ret = new ArrayList<>();
 		long gap = (long)(_max - _min) / (_nsteps-1);
 		
 		//get memory estimates
-		ArrayList<Long> mem = new ArrayList<Long>();
+		ArrayList<Long> mem = new ArrayList<>();
 		getMemoryEstimates( _prog, mem );
 		
 		//binning memory estimates to equi grid 
-		HashSet<Long> preRet = new HashSet<Long>();
+		HashSet<Long> preRet = new HashSet<>();
 		for( Long val : mem )
 		{
 			if( val < _min ) 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/yarn/ropt/ResourceConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/yarn/ropt/ResourceConfig.java b/src/main/java/org/apache/sysml/yarn/ropt/ResourceConfig.java
index bdbf053..b2d20d1 100644
--- a/src/main/java/org/apache/sysml/yarn/ropt/ResourceConfig.java
+++ b/src/main/java/org/apache/sysml/yarn/ropt/ResourceConfig.java
@@ -52,7 +52,7 @@ public class ResourceConfig
 		_cpres = init;
 		
 		//init mr memory
-		_mrres = new ArrayList<Long>();
+		_mrres = new ArrayList<>();
 		addProgramBlocks(prog, init);
 	}
 	
@@ -132,7 +132,7 @@ public class ResourceConfig
 		long cp = YarnOptimizerUtils.toB(Long.valueOf(parts[0]));
 		
 		//deserialize mr
-		ArrayList<Long> mr = new ArrayList<Long>();
+		ArrayList<Long> mr = new ArrayList<>();
 		for (int i=1; i<parts.length; i++) 
 		{
 			long val = YarnOptimizerUtils.toB(Long.parseLong(parts[i]));

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java b/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java
index 8b6003f..0378924 100644
--- a/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java
+++ b/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java
@@ -178,13 +178,11 @@ public class ResourceOptimizer
 	private static ArrayList<ProgramBlock> compileProgram( ArrayList<ProgramBlock> prog, ArrayList<ProgramBlock> B, double cp, double mr ) 
 		throws DMLRuntimeException, HopsException, LopsException, IOException
 	{
-		if( B == null ) //init 
-		{
-			B = new ArrayList<ProgramBlock>();
-			
+		if( B == null ) { //init 
+			B = new ArrayList<>();
 			InfrastructureAnalyzer.setLocalMaxMemory( (long)cp );
 			InfrastructureAnalyzer.setRemoteMaxMemoryMap( (long)mr );
-			InfrastructureAnalyzer.setRemoteMaxMemoryReduce( (long)mr );	
+			InfrastructureAnalyzer.setRemoteMaxMemoryReduce( (long)mr );
 			OptimizerUtils.resetDefaultSize(); //dependent on cp, mr
 		}
 		
@@ -455,7 +453,7 @@ public class ResourceOptimizer
 	{
 		//prune all program blocks w/o mr instructions (mr budget does not matter)
 		if( PRUNING_SMALL ){
-			ArrayList<ProgramBlock> Bp = new ArrayList<ProgramBlock>();
+			ArrayList<ProgramBlock> Bp = new ArrayList<>();
 			for( ProgramBlock pb : B )
 				if( OptTreeConverter.containsMRJobInstruction(pb.getInstructions(), false, true) )
 					Bp.add( pb );
@@ -464,7 +462,7 @@ public class ResourceOptimizer
 		
 		//prune all program blocks, where all mr hops are due to unknowns
 		if( PRUNING_UNKNOWN ){
-			ArrayList<ProgramBlock> Bp = new ArrayList<ProgramBlock>();
+			ArrayList<ProgramBlock> Bp = new ArrayList<>();
 			for( ProgramBlock pb : B )
 				if( !pruneHasOnlyUnknownMR(pb) )
 					Bp.add( pb );

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/yarn/ropt/YarnClusterAnalyzer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/yarn/ropt/YarnClusterAnalyzer.java b/src/main/java/org/apache/sysml/yarn/ropt/YarnClusterAnalyzer.java
index e05f40b..ce83f85 100644
--- a/src/main/java/org/apache/sysml/yarn/ropt/YarnClusterAnalyzer.java
+++ b/src/main/java/org/apache/sysml/yarn/ropt/YarnClusterAnalyzer.java
@@ -46,7 +46,6 @@ import org.apache.sysml.runtime.matrix.mapred.MRConfigurationNames;
  */
 public class YarnClusterAnalyzer 
 {
-	
 	public static final long DEFAULT_JVM_SIZE = 512 * 1024 * 1024;
 	public static final int CPU_HYPER_FACTOR = 1; 
 	
@@ -65,8 +64,8 @@ public class YarnClusterAnalyzer
 	
 	// Map from StatementBlock.ID to remoteJVMMaxMem (in bytes)
 	// Encodes MR job memory settings in the execution plan, if not found here, use the default MR setting in _remoteJVMMaxMem
-	public static HashMap<Long, Long> remoteJVMMaxMemPlan = new HashMap<Long, Long>();
-	public static HashSet<Long> probedSb = new HashSet<Long>();
+	public static HashMap<Long, Long> remoteJVMMaxMemPlan = new HashMap<>();
+	public static HashSet<Long> probedSb = new HashSet<>();
 	
 	public static List<Long> nodesMaxPhySorted = null;		// Original maximum physical memory per node in Byte, sorted
 	public static List<Double> nodesMaxBudgetSorted = null;	// Converted to maximum budget per node in Byte, sorted
@@ -368,7 +367,7 @@ public class YarnClusterAnalyzer
 	}
 	
 	public static void printProbedSet(String message) {
-		ArrayList<Long> probed = new ArrayList<Long> (probedSb);
+		ArrayList<Long> probed = new ArrayList<> (probedSb);
 		Collections.sort(probed);
 		System.out.print(message);
 		for (Long id : probed)
@@ -614,7 +613,7 @@ public class YarnClusterAnalyzer
 			if( nodesReport.isEmpty() )
 				throw new YarnException("There are zero available nodes in the yarn cluster");
 			
-			nodesMaxPhySorted = new ArrayList<Long> (nodesReport.size());
+			nodesMaxPhySorted = new ArrayList<> (nodesReport.size());
 			clusterTotalMem = 0;
 			clusterTotalCores = 0;
 			clusterTotalNodes = 0;
@@ -644,7 +643,7 @@ public class YarnClusterAnalyzer
 			}
 			Collections.sort(nodesMaxPhySorted, Collections.reverseOrder());
 			
-			nodesMaxBudgetSorted = new ArrayList<Double> (nodesMaxPhySorted.size());
+			nodesMaxBudgetSorted = new ArrayList<> (nodesMaxPhySorted.size());
 			for (int i = 0; i < nodesMaxPhySorted.size(); i++)
 				nodesMaxBudgetSorted.add(ResourceOptimizer.phyToBudget(nodesMaxPhySorted.get(i)));
 			

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/test/java/org/apache/sysml/test/integration/AutomatedTestBase.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/AutomatedTestBase.java b/src/test/java/org/apache/sysml/test/integration/AutomatedTestBase.java
index 5ca800b..2258d13 100644
--- a/src/test/java/org/apache/sysml/test/integration/AutomatedTestBase.java
+++ b/src/test/java/org/apache/sysml/test/integration/AutomatedTestBase.java
@@ -89,7 +89,7 @@ public abstract class AutomatedTestBase
 		public String lowerCase() {
 			return super.toString().toLowerCase();
 		}
-	};
+	}
 
 	public static final boolean EXCEPTION_EXPECTED = true;
 	public static final boolean EXCEPTION_NOT_EXPECTED = false;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/test/java/org/apache/sysml/test/integration/applications/descriptivestats/UnivariateStatsBase.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/applications/descriptivestats/UnivariateStatsBase.java b/src/test/java/org/apache/sysml/test/integration/applications/descriptivestats/UnivariateStatsBase.java
index 385fa2d..5f2b6aa 100644
--- a/src/test/java/org/apache/sysml/test/integration/applications/descriptivestats/UnivariateStatsBase.java
+++ b/src/test/java/org/apache/sysml/test/integration/applications/descriptivestats/UnivariateStatsBase.java
@@ -66,7 +66,7 @@ public abstract class UnivariateStatsBase extends AutomatedTestBase {
 		SIZE(int s) {
 			size = s;
 		}
-	};
+	}
 
 	/** Ranges of values passed to aggregates in different tests. */
 	protected enum RANGE {
@@ -77,7 +77,7 @@ public abstract class UnivariateStatsBase extends AutomatedTestBase {
 			min = mn;
 			max = mx;
 		}
-	};
+	}
 
 	/**
 	 * Actual sparsity values used in the "dense" and "sparse" variants of the
@@ -90,7 +90,7 @@ public abstract class UnivariateStatsBase extends AutomatedTestBase {
 		SPARSITY(double sp) {
 			sparsity = sp;
 		}
-	};
+	}
 	
 	/** Shared setup code for test harness configurations */
 	@Override

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/test/java/org/apache/sysml/test/integration/functions/data/SampleTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/data/SampleTest.java b/src/test/java/org/apache/sysml/test/integration/functions/data/SampleTest.java
index a871be6..bc8a383 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/data/SampleTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/data/SampleTest.java
@@ -45,7 +45,7 @@ public class SampleTest extends AutomatedTestBase
 	private final static String TEST_NAME = "Sample";
 	private final static String TEST_CLASS_DIR = TEST_DIR + SampleTest.class.getSimpleName() + "/";
 	
-	private enum TEST_TYPE { FOUR_INPUTS, THREE_INPUTS1, THREE_INPUTS2, TWO_INPUTS, ERROR };
+	private enum TEST_TYPE { FOUR_INPUTS, THREE_INPUTS1, THREE_INPUTS2, TWO_INPUTS, ERROR }
 	
 	private TEST_TYPE test_type;
 	private final static long RANGE=5000, SIZE=100, SIZE2=RANGE+10;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/test/java/org/apache/sysml/test/integration/functions/data/SequenceTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/data/SequenceTest.java b/src/test/java/org/apache/sysml/test/integration/functions/data/SequenceTest.java
index c703f4a..51a897c 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/data/SequenceTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/data/SequenceTest.java
@@ -47,7 +47,7 @@ public class SequenceTest extends AutomatedTestBase
 	private final static String TEST_NAME = "Sequence";
 	private final static String TEST_CLASS_DIR = TEST_DIR + SequenceTest.class.getSimpleName() + "/";
 	
-	private enum TEST_TYPE { THREE_INPUTS, TWO_INPUTS, ERROR };
+	private enum TEST_TYPE { THREE_INPUTS, TWO_INPUTS, ERROR }
 	
 	private final static double eps = 1e-10;
 	

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/test/java/org/apache/sysml/test/integration/functions/frame/FrameConverterTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/frame/FrameConverterTest.java b/src/test/java/org/apache/sysml/test/integration/functions/frame/FrameConverterTest.java
index 7bb659d..ad309aa 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/frame/FrameConverterTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/frame/FrameConverterTest.java
@@ -87,13 +87,11 @@ public class FrameConverterTest extends AutomatedTestBase
 	private final static List<ValueType> schemaMixedLargeListInt  = Collections.nCopies(200, ValueType.INT);
 	private final static List<ValueType> schemaMixedLargeListBool  = Collections.nCopies(200, ValueType.BOOLEAN);
 	
-	@SuppressWarnings("unchecked")
 	private static final List<ValueType> schemaMixedLargeList = new ArrayList<ValueType>(CollectionUtils.union(
 					CollectionUtils.union(schemaMixedLargeListStr, schemaMixedLargeListDble),
 					CollectionUtils.union(schemaMixedLargeListInt, schemaMixedLargeListBool)));
 	private static final ValueType[] schemaMixedLarge = schemaMixedLargeList.toArray(new ValueType[0]);
 	
-	@SuppressWarnings("unchecked")
 	private static final List<ValueType> schemaMixedLargeListDFrame = new ArrayList<ValueType>(CollectionUtils.union(
 					CollectionUtils.union(schemaMixedLargeListStr.subList(0, 100), schemaMixedLargeListDble.subList(0, 100)),
 					CollectionUtils.union(schemaMixedLargeListInt.subList(0, 100), schemaMixedLargeListBool.subList(0, 100))));

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/IQMTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/IQMTest.java b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/IQMTest.java
index 5d931c2..161e158 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/IQMTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/IQMTest.java
@@ -37,7 +37,7 @@ public class IQMTest extends AutomatedTestBase
 		TEST_TYPE(String name) {
 			this.scriptName = name;
 		}
-	};
+	}
 	
 	private final static String TEST_DIR = "functions/unary/matrix/";
 	private static final String TEST_CLASS_DIR = TEST_DIR + IQMTest.class.getSimpleName() + "/";

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/RoundTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/RoundTest.java b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/RoundTest.java
index 6f140c8..249048e 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/RoundTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/RoundTest.java
@@ -38,7 +38,7 @@ public class RoundTest extends AutomatedTestBase
 		TEST_TYPE(String name) {
 			this.scriptName = name;
 		}
-	};
+	}
 	
 	private final static String TEST_DIR = "functions/unary/matrix/";
 	private static final String TEST_CLASS_DIR = TEST_DIR + RoundTest.class.getSimpleName() + "/";

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/test/java/org/apache/sysml/test/integration/functions/unary/scalar/FullDistributionTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/unary/scalar/FullDistributionTest.java b/src/test/java/org/apache/sysml/test/integration/functions/unary/scalar/FullDistributionTest.java
index a49deee..7122f99 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/unary/scalar/FullDistributionTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/unary/scalar/FullDistributionTest.java
@@ -45,7 +45,7 @@ public class FullDistributionTest extends AutomatedTestBase
 	private enum TEST_TYPE { 
 		NORMAL, NORMAL_NOPARAMS, NORMAL_MEAN, 
 		NORMAL_SD, F, T, CHISQ, EXP, EXP_NOPARAMS 
-	};
+	}
 	
 	
 	@Override

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/test/java/org/apache/sysml/test/integration/mlcontext/MLContextFrameTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/mlcontext/MLContextFrameTest.java b/src/test/java/org/apache/sysml/test/integration/mlcontext/MLContextFrameTest.java
index a7d12a5..abe5de7 100644
--- a/src/test/java/org/apache/sysml/test/integration/mlcontext/MLContextFrameTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/mlcontext/MLContextFrameTest.java
@@ -57,11 +57,11 @@ public class MLContextFrameTest extends MLContextTestBase {
 
 	public static enum SCRIPT_TYPE {
 		DML, PYDML
-	};
+	}
 
 	public static enum IO_TYPE {
 		ANY, FILE, JAVA_RDD_STR_CSV, JAVA_RDD_STR_IJV, RDD_STR_CSV, RDD_STR_IJV, DATAFRAME
-	};
+	}
 
 	private static String CSV_DELIM = ",";
 


[4/7] systemml git commit: [MINOR] Cleanup various issues raised by static code analysis, part 1

Posted by mb...@apache.org.
http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java b/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java
index 62b499f..fbccb44 100644
--- a/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java
+++ b/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java
@@ -123,7 +123,7 @@ public class DmlSyntacticValidator extends CommonSyntacticValidator implements D
 	@Override public String falseStringLiteral() { return "FALSE"; }
 
 	protected ArrayList<ParameterExpression> getParameterExpressionList(List<ParameterizedExpressionContext> paramExprs) {
-		ArrayList<ParameterExpression> retVal = new ArrayList<ParameterExpression>();
+		ArrayList<ParameterExpression> retVal = new ArrayList<>();
 		for(ParameterizedExpressionContext ctx : paramExprs) {
 			String paramName = null;
 			if(ctx.paramName != null && ctx.paramName.getText() != null && !ctx.paramName.getText().isEmpty()) {
@@ -287,10 +287,10 @@ public class DmlSyntacticValidator extends CommonSyntacticValidator implements D
 		setFileLineColumn(ctx.dataInfo.expr, ctx);
 
 		try {
-			ArrayList< ArrayList<Expression> > exprList = new ArrayList< ArrayList<Expression> >();
+			ArrayList< ArrayList<Expression> > exprList = new ArrayList<>();
 
-			ArrayList<Expression> rowIndices = new ArrayList<Expression>();
-			ArrayList<Expression> colIndices = new ArrayList<Expression>();
+			ArrayList<Expression> rowIndices = new ArrayList<>();
+			ArrayList<Expression> colIndices = new ArrayList<>();
 
 
 			if(!isRowLower && !isRowUpper) {
@@ -417,7 +417,7 @@ public class DmlSyntacticValidator extends CommonSyntacticValidator implements D
 				return;
 			}
 			else {
-				ctx.info.namespaces = new HashMap<String, DMLProgram>();
+				ctx.info.namespaces = new HashMap<>();
 				ctx.info.namespaces.put(getQualifiedNamespace(namespace), prog);
 				ctx.info.stmt = new ImportStatement();
 				((ImportStatement) ctx.info.stmt).setCompletePath(filePath);
@@ -430,7 +430,7 @@ public class DmlSyntacticValidator extends CommonSyntacticValidator implements D
 			// Skip redundant parsing (to prevent potential infinite recursion) and
 			// create empty program for this context to allow processing to continue.
 			prog = new DMLProgram();
-			ctx.info.namespaces = new HashMap<String, DMLProgram>();
+			ctx.info.namespaces = new HashMap<>();
 			ctx.info.namespaces.put(getQualifiedNamespace(namespace), prog);
 			ctx.info.stmt = new ImportStatement();
 			((ImportStatement) ctx.info.stmt).setCompletePath(filePath);
@@ -473,11 +473,11 @@ public class DmlSyntacticValidator extends CommonSyntacticValidator implements D
 	@Override
 	public void exitFunctionCallAssignmentStatement(FunctionCallAssignmentStatementContext ctx) {
 
-		Set<String> printStatements = new  HashSet<String>();
+		Set<String> printStatements = new  HashSet<>();
 		printStatements.add("print");
 		printStatements.add("stop");
 
-		Set<String> outputStatements = new HashSet<String>();
+		Set<String> outputStatements = new HashSet<>();
 		outputStatements.add("write");
 
 		String [] fnNames = getQualifiedNames (ctx.name.getText());
@@ -565,7 +565,7 @@ public class DmlSyntacticValidator extends CommonSyntacticValidator implements D
 		functCall.setFunctionName(functionName);
 		functCall.setFunctionNamespace(namespace);
 
-		final ArrayList<DataIdentifier> targetList = new ArrayList<DataIdentifier>();
+		final ArrayList<DataIdentifier> targetList = new ArrayList<>();
 		for(DataIdentifierContext dataCtx : ctx.targetList) {
 			if(dataCtx.dataInfo.expr instanceof DataIdentifier) {
 				targetList.add((DataIdentifier) dataCtx.dataInfo.expr);
@@ -599,7 +599,7 @@ public class DmlSyntacticValidator extends CommonSyntacticValidator implements D
 	// -----------------------------------------------------------------
 
 	private StatementBlock getStatementBlock(Statement current) {
-		return DMLParserWrapper.getStatementBlock(current);
+		return getStatementBlock(current);
 	}
 
 	@Override
@@ -673,7 +673,7 @@ public class DmlSyntacticValidator extends CommonSyntacticValidator implements D
 		ParForStatement parForStmt = new ParForStatement();
 
 		DataIdentifier iterVar = new DataIdentifier(ctx.iterVar.getText());
-		HashMap<String, String> parForParamValues = new HashMap<String, String>();
+		HashMap<String, String> parForParamValues = new HashMap<>();
 		if(ctx.parForParams != null && ctx.parForParams.size() > 0) {
 			for(StrictParameterizedExpressionContext parForParamCtx : ctx.parForParams) {
 				String paramVal = parForParamCtx.paramVal.getText();
@@ -700,7 +700,7 @@ public class DmlSyntacticValidator extends CommonSyntacticValidator implements D
 	}
 
 	private ArrayList<DataIdentifier> getFunctionParameters(List<TypedArgNoAssignContext> ctx) {
-		ArrayList<DataIdentifier> retVal = new ArrayList<DataIdentifier>();
+		ArrayList<DataIdentifier> retVal = new ArrayList<>();
 		for(TypedArgNoAssignContext paramCtx : ctx) {
 			DataIdentifier dataId = new DataIdentifier(paramCtx.paramName.getText());
 			String dataType = null;
@@ -792,7 +792,7 @@ public class DmlSyntacticValidator extends CommonSyntacticValidator implements D
 		if(ctx.body.size() > 0) {
 			// handle function body
 			// Create arraylist of one statement block
-			ArrayList<StatementBlock> body = new ArrayList<StatementBlock>();
+			ArrayList<StatementBlock> body = new ArrayList<>();
 			for(StatementContext stmtCtx : ctx.body) {
 				body.add(getStatementBlock(stmtCtx.info.stmt));
 			}
@@ -824,7 +824,7 @@ public class DmlSyntacticValidator extends CommonSyntacticValidator implements D
 		functionStmt.setName(ctx.name.getText());
 
 		// set other parameters
-		HashMap<String, String> otherParams = new HashMap<String,String>();
+		HashMap<String, String> otherParams = new HashMap<>();
 		boolean atleastOneClassName = false;
 		for(StrictParameterizedKeyValueStringContext otherParamCtx : ctx.otherParams){
 			String paramName = otherParamCtx.paramName.getText();
@@ -1042,7 +1042,7 @@ public class DmlSyntacticValidator extends CommonSyntacticValidator implements D
 
 	@Override
 	public void exitMultiIdExpression(MultiIdExpressionContext ctx) {
-		ArrayList<Expression> values = new ArrayList<Expression>();
+		ArrayList<Expression> values = new ArrayList<>();
 		for(ExpressionContext elem : ctx.targetList) {
 			values.add(elem.info.expr);
 		}

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/pydml/PydmlPreprocessor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/pydml/PydmlPreprocessor.java b/src/main/java/org/apache/sysml/parser/pydml/PydmlPreprocessor.java
index d72f544..0f6f640 100644
--- a/src/main/java/org/apache/sysml/parser/pydml/PydmlPreprocessor.java
+++ b/src/main/java/org/apache/sysml/parser/pydml/PydmlPreprocessor.java
@@ -87,7 +87,7 @@ public class PydmlPreprocessor implements PydmlListener {
 
 	public PydmlPreprocessor(CustomErrorListener errorListener) {
 		this.errorListener = errorListener;
-		functions = new HashSet<String>();
+		functions = new HashSet<>();
 	}
 
 	public Set<String> getFunctionDefs() {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java b/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java
index 8b75309..7385613 100644
--- a/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java
+++ b/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java
@@ -131,7 +131,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 	@Override public String falseStringLiteral() { return "False"; }
 
 	protected ArrayList<ParameterExpression> getParameterExpressionList(List<ParameterizedExpressionContext> paramExprs) {
-		ArrayList<ParameterExpression> retVal = new ArrayList<ParameterExpression>();
+		ArrayList<ParameterExpression> retVal = new ArrayList<>();
 		for(ParameterizedExpressionContext ctx : paramExprs) {
 			String paramName = null;
 			if(ctx.paramName != null && ctx.paramName.getText() != null && !ctx.paramName.getText().isEmpty()) {
@@ -336,10 +336,10 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 		setFileLineColumn(ctx.dataInfo.expr, ctx);
 
 		try {
-			ArrayList< ArrayList<Expression> > exprList = new ArrayList< ArrayList<Expression> >();
+			ArrayList< ArrayList<Expression> > exprList = new ArrayList<>();
 
-			ArrayList<Expression> rowIndices = new ArrayList<Expression>();
-			ArrayList<Expression> colIndices = new ArrayList<Expression>();
+			ArrayList<Expression> rowIndices = new ArrayList<>();
+			ArrayList<Expression> colIndices = new ArrayList<>();
 
 
 			if(!isRowLower && !isRowUpper) {
@@ -515,7 +515,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 				return;
 			}
 			else {
-				ctx.info.namespaces = new HashMap<String, DMLProgram>();
+				ctx.info.namespaces = new HashMap<>();
 				ctx.info.namespaces.put(getQualifiedNamespace(namespace), prog);
 				ctx.info.stmt = new ImportStatement();
 				((ImportStatement) ctx.info.stmt).setCompletePath(filePath);
@@ -528,7 +528,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 			// Skip redundant parsing (to prevent potential infinite recursion) and
 			// create empty program for this context to allow processing to continue.
 			prog = new DMLProgram();
-			ctx.info.namespaces = new HashMap<String, DMLProgram>();
+			ctx.info.namespaces = new HashMap<>();
 			ctx.info.namespaces.put(getQualifiedNamespace(namespace), prog);
 			ctx.info.stmt = new ImportStatement();
 			((ImportStatement) ctx.info.stmt).setCompletePath(filePath);
@@ -679,7 +679,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 			}
 			else if(!(namespace.equals(DMLProgram.DEFAULT_NAMESPACE)) && paramExpression.size() == 0) {
 				// x.sum() => sum(x)
-				paramExpression = new ArrayList<ParameterExpression>();
+				paramExpression = new ArrayList<>();
 				paramExpression.add(new ParameterExpression(null, new DataIdentifier(namespace)));
 				// otherwise same function name
 				if(functionName.equals("avg")) {
@@ -705,7 +705,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 					return null;
 				}
 				else {
-					ArrayList<ParameterExpression> temp = new ArrayList<ParameterExpression>();
+					ArrayList<ParameterExpression> temp = new ArrayList<>();
 					temp.add(paramExpression.get(0));
 					paramExpression = temp;
 					functionName = getPythonAggFunctionNames(functionName, axis);
@@ -723,7 +723,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 					 return null;
 				 }
 				 else {
-					 paramExpression = new ArrayList<ParameterExpression>();
+					 paramExpression = new ArrayList<>();
 					 paramExpression.add(new ParameterExpression(null, new DataIdentifier(namespace)));
 					 functionName = getPythonAggFunctionNames(functionName, axis);
 					 if(functionName.equals("Not Supported")) {
@@ -773,7 +773,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 				notifyErrorListeners("The builtin function \'" + functionName + "\' accepts only 1 argument (0 or 1)", fnName);
 				return null;
 			}
-			paramExpression = new ArrayList<ParameterExpression>();
+			paramExpression = new ArrayList<>();
 			paramExpression.add(new ParameterExpression(null, new DataIdentifier(namespace)));
 			namespace = DMLProgram.DEFAULT_NAMESPACE;
 			if(axis == 0) {
@@ -864,7 +864,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 				initializerString = initializerString.replaceAll(";", " ");
 				initializerString = initializerString.replaceAll("\\[", "");
 				initializerString = initializerString.replaceAll("\\]", "");
-				paramExpression = new ArrayList<ParameterExpression>();
+				paramExpression = new ArrayList<>();
 				paramExpression.add(new ParameterExpression(null, new StringIdentifier(ctx, initializerString, currentFile)));
 				paramExpression.add(new ParameterExpression("rows", new IntIdentifier(ctx, rows, currentFile)));
 				paramExpression.add(new ParameterExpression("cols", new IntIdentifier(ctx, cols, currentFile)));
@@ -914,7 +914,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 			paramExpression.get(0).setName("rows");
 			paramExpression.get(1).setName("cols");
 
-			ArrayList<ParameterExpression> temp = new ArrayList<ParameterExpression>();
+			ArrayList<ParameterExpression> temp = new ArrayList<>();
 			temp.add(new ParameterExpression(null, new DataIdentifier(namespace)));
 			temp.add(paramExpression.get(0));
 			temp.add(paramExpression.get(1));
@@ -1089,11 +1089,11 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 	@Override
 	public void exitFunctionCallAssignmentStatement(FunctionCallAssignmentStatementContext ctx) {
 
-		Set<String> printStatements = new  HashSet<String>();
+		Set<String> printStatements = new  HashSet<>();
 		printStatements.add("print");
 		printStatements.add("stop");
 
-		Set<String> outputStatements = new HashSet<String>();
+		Set<String> outputStatements = new HashSet<>();
 		outputStatements.add("save");
 
 		String[] fnNames = getQualifiedNames(ctx.name.getText());
@@ -1183,7 +1183,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 		functCall.setFunctionName(functionName);
 		functCall.setFunctionNamespace(namespace);
 
-		final ArrayList<DataIdentifier> targetList = new ArrayList<DataIdentifier>();
+		final ArrayList<DataIdentifier> targetList = new ArrayList<>();
 		for(DataIdentifierContext dataCtx : ctx.targetList) {
 			if(dataCtx.dataInfo.expr instanceof DataIdentifier) {
 				targetList.add((DataIdentifier) dataCtx.dataInfo.expr);
@@ -1217,7 +1217,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 	// -----------------------------------------------------------------
 
 	private StatementBlock getStatementBlock(Statement current) {
-		return PyDMLParserWrapper.getStatementBlock(current);
+		return getStatementBlock(current);
 	}
 
 	@Override
@@ -1319,7 +1319,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 		ParForStatement parForStmt = new ParForStatement();
 
 		DataIdentifier iterVar = new DataIdentifier(ctx.iterVar.getText());
-		HashMap<String, String> parForParamValues = new HashMap<String, String>();
+		HashMap<String, String> parForParamValues = new HashMap<>();
 		if(ctx.parForParams != null && ctx.parForParams.size() > 0) {
 			for(StrictParameterizedExpressionContext parForParamCtx : ctx.parForParams) {
 				String paramVal = parForParamCtx.paramVal.getText();
@@ -1371,7 +1371,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 	// -----------------------------------------------------------------
 
 	private ArrayList<DataIdentifier> getFunctionParameters(List<TypedArgNoAssignContext> ctx) {
-		ArrayList<DataIdentifier> retVal = new ArrayList<DataIdentifier>();
+		ArrayList<DataIdentifier> retVal = new ArrayList<>();
 		for(TypedArgNoAssignContext paramCtx : ctx) {
 			DataIdentifier dataId = new DataIdentifier(paramCtx.paramName.getText());
 			String dataType = null;
@@ -1433,7 +1433,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 		if(ctx.body.size() > 0) {
 			// handle function body
 			// Create arraylist of one statement block
-			ArrayList<StatementBlock> body = new ArrayList<StatementBlock>();
+			ArrayList<StatementBlock> body = new ArrayList<>();
 			for(StatementContext stmtCtx : ctx.body) {
 				body.add(getStatementBlock(stmtCtx.info.stmt));
 			}
@@ -1465,7 +1465,7 @@ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements
 		functionStmt.setName(ctx.name.getText());
 		
 		// set other parameters
-		HashMap<String, String> otherParams = new HashMap<String,String>();
+		HashMap<String, String> otherParams = new HashMap<>();
 		boolean atleastOneClassName = false;
 		for(StrictParameterizedKeyValueStringContext otherParamCtx : ctx.otherParams){
 			String paramName = otherParamCtx.paramName.getText();

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/codegen/CodegenUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/codegen/CodegenUtils.java b/src/main/java/org/apache/sysml/runtime/codegen/CodegenUtils.java
index ba5cebe..b4acb71 100644
--- a/src/main/java/org/apache/sysml/runtime/codegen/CodegenUtils.java
+++ b/src/main/java/org/apache/sysml/runtime/codegen/CodegenUtils.java
@@ -56,10 +56,10 @@ public class CodegenUtils
 	private static final Log LOG = LogFactory.getLog(CodegenUtils.class.getName());
 	
 	//cache to reuse compiled and loaded classes 
-	private static ConcurrentHashMap<String, Class<?>> _cache = new ConcurrentHashMap<String,Class<?>>();
+	private static ConcurrentHashMap<String, Class<?>> _cache = new ConcurrentHashMap<>();
 	
 	//janino-specific map of source code transfer/recompile on-demand
-	private static ConcurrentHashMap<String, String> _src = new ConcurrentHashMap<String,String>();
+	private static ConcurrentHashMap<String, String> _src = new ConcurrentHashMap<>();
 	
 	//javac-specific working directory for src/class files
 	private static String _workingDir = null;
@@ -200,7 +200,7 @@ public class CodegenUtils
 				throw new RuntimeException("Unable to obtain system java compiler.");
 		
 			//prepare file manager
-			DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>(); 
+			DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>(); 
 			StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
 			
 			//prepare input source code

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/codegen/SpoofCellwise.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/codegen/SpoofCellwise.java b/src/main/java/org/apache/sysml/runtime/codegen/SpoofCellwise.java
index 59308d4..773badd 100644
--- a/src/main/java/org/apache/sysml/runtime/codegen/SpoofCellwise.java
+++ b/src/main/java/org/apache/sysml/runtime/codegen/SpoofCellwise.java
@@ -147,7 +147,7 @@ public abstract class SpoofCellwise extends SpoofOperator implements Serializabl
 		{
 			try {
 				ExecutorService pool = Executors.newFixedThreadPool( k );
-				ArrayList<ParAggTask> tasks = new ArrayList<ParAggTask>();
+				ArrayList<ParAggTask> tasks = new ArrayList<>();
 				int nk = (a instanceof CompressedMatrixBlock) ? k :
 					UtilFunctions.roundToNext(Math.min(8*k,m/32), k);
 				int blklen = (int)(Math.ceil((double)m/nk));
@@ -243,7 +243,7 @@ public abstract class SpoofCellwise extends SpoofOperator implements Serializabl
 		{
 			try {
 				ExecutorService pool = Executors.newFixedThreadPool( k );
-				ArrayList<ParExecTask> tasks = new ArrayList<ParExecTask>();
+				ArrayList<ParExecTask> tasks = new ArrayList<>();
 				int nk = UtilFunctions.roundToNext(Math.min(8*k,m/32), k);
 				int blklen = (int)(Math.ceil((double)m/nk));
 				if( a instanceof CompressedMatrixBlock )

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/codegen/SpoofMultiAggregate.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/codegen/SpoofMultiAggregate.java b/src/main/java/org/apache/sysml/runtime/codegen/SpoofMultiAggregate.java
index 3f45d62..64dd5c5 100644
--- a/src/main/java/org/apache/sysml/runtime/codegen/SpoofMultiAggregate.java
+++ b/src/main/java/org/apache/sysml/runtime/codegen/SpoofMultiAggregate.java
@@ -117,7 +117,7 @@ public abstract class SpoofMultiAggregate extends SpoofOperator implements Seria
 		{
 			try {
 				ExecutorService pool = Executors.newFixedThreadPool( k );
-				ArrayList<ParAggTask> tasks = new ArrayList<ParAggTask>();
+				ArrayList<ParAggTask> tasks = new ArrayList<>();
 				int nk = UtilFunctions.roundToNext(Math.min(8*k,m/32), k);
 				int blklen = (int)(Math.ceil((double)m/nk));
 				for( int i=0; i<nk & i*blklen<m; i++ )
@@ -128,7 +128,7 @@ public abstract class SpoofMultiAggregate extends SpoofOperator implements Seria
 				pool.shutdown();
 			
 				//aggregate partial results
-				ArrayList<double[]> pret = new ArrayList<double[]>();
+				ArrayList<double[]> pret = new ArrayList<>();
 				for( Future<double[]> task : taskret )
 					pret.add(task.get());
 				aggregatePartialResults(c, pret);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/codegen/SpoofOuterProduct.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/codegen/SpoofOuterProduct.java b/src/main/java/org/apache/sysml/runtime/codegen/SpoofOuterProduct.java
index c25a522..729d512 100644
--- a/src/main/java/org/apache/sysml/runtime/codegen/SpoofOuterProduct.java
+++ b/src/main/java/org/apache/sysml/runtime/codegen/SpoofOuterProduct.java
@@ -130,7 +130,7 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 		try 
 		{
 			ExecutorService pool = Executors.newFixedThreadPool(k);
-			ArrayList<ParOuterProdAggTask> tasks = new ArrayList<ParOuterProdAggTask>();
+			ArrayList<ParOuterProdAggTask> tasks = new ArrayList<>();
 			int numThreads2 = getPreferredNumberOfTasks(m, n, nnz, k, numThreads);
 			int blklen = (int)(Math.ceil((double)m/numThreads2));
 			for( int i=0; i<numThreads2 & i*blklen<m; i++ )
@@ -280,7 +280,7 @@ public abstract class SpoofOuterProduct extends SpoofOperator
 		try 
 		{			
 			ExecutorService pool = Executors.newFixedThreadPool(numThreads);
-			ArrayList<ParExecTask> tasks = new ArrayList<ParExecTask>();
+			ArrayList<ParExecTask> tasks = new ArrayList<>();
 			//create tasks (for wdivmm-left, parallelization over columns;
 			//for wdivmm-right, parallelization over rows; both ensure disjoint results)
 			

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/codegen/SpoofRowwise.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/codegen/SpoofRowwise.java b/src/main/java/org/apache/sysml/runtime/codegen/SpoofRowwise.java
index 679ac78..88aafd2 100644
--- a/src/main/java/org/apache/sysml/runtime/codegen/SpoofRowwise.java
+++ b/src/main/java/org/apache/sysml/runtime/codegen/SpoofRowwise.java
@@ -208,7 +208,7 @@ public abstract class SpoofRowwise extends SpoofOperator
 		{
 			if( _type.isColumnAgg() || _type == RowType.FULL_AGG ) {
 				//execute tasks
-				ArrayList<ParColAggTask> tasks = new ArrayList<ParColAggTask>();
+				ArrayList<ParColAggTask> tasks = new ArrayList<>();
 				for( int i=0; i<nk & i*blklen<m; i++ )
 					tasks.add(new ParColAggTask(a, b, scalars, n, n2, i*blklen, Math.min((i+1)*blklen, m)));
 				List<Future<double[]>> taskret = pool.invokeAll(tasks);	
@@ -220,7 +220,7 @@ public abstract class SpoofRowwise extends SpoofOperator
 			}
 			else {
 				//execute tasks
-				ArrayList<ParExecTask> tasks = new ArrayList<ParExecTask>();
+				ArrayList<ParExecTask> tasks = new ArrayList<>();
 				for( int i=0; i<nk & i*blklen<m; i++ )
 					tasks.add(new ParExecTask(a, b, out, scalars, n, n2, i*blklen, Math.min((i+1)*blklen, m)));
 				List<Future<Long>> taskret = pool.invokeAll(tasks);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/BitmapEncoder.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/BitmapEncoder.java b/src/main/java/org/apache/sysml/runtime/compress/BitmapEncoder.java
index f93d8b3..0d6ac75 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/BitmapEncoder.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/BitmapEncoder.java
@@ -106,7 +106,7 @@ public class BitmapEncoder
 			return new char[0]; //empty list
 
 		// Use an ArrayList for correctness at the expense of temp space
-		ArrayList<Character> buf = new ArrayList<Character>();
+		ArrayList<Character> buf = new ArrayList<>();
 
 		// 1 + (position of last 1 in the previous run of 1's)
 		// We add 1 because runs may be of length zero.

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/ColGroupOffset.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/ColGroupOffset.java b/src/main/java/org/apache/sysml/runtime/compress/ColGroupOffset.java
index 98bbdb8..f8b0b6b 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/ColGroupOffset.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/ColGroupOffset.java
@@ -551,8 +551,7 @@ public abstract class ColGroupOffset extends ColGroupValue
 		//iterator state
 		private final Iterator<Integer>[] _iters;
 		private final IJV _ret = new IJV(); 
-		private final HashMap<Integer,Integer> _ixbuff = 
-			new HashMap<Integer,Integer>(); //<rowid-value>
+		private final HashMap<Integer,Integer> _ixbuff = new HashMap<>(); //<rowid-value>
 		private int _rpos;
 		private int _cpos;
 		private int _vpos;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/ColGroupRLE.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/ColGroupRLE.java b/src/main/java/org/apache/sysml/runtime/compress/ColGroupRLE.java
index 6440c5c..169ee4b 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/ColGroupRLE.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/ColGroupRLE.java
@@ -781,8 +781,7 @@ public class ColGroupRLE extends ColGroupOffset
 			apos = bix;
 			astart = start;
 		}
-		
-		return new Pair<Integer,Integer>(apos, astart);
+		return new Pair<>(apos, astart);
 	}
 	
 	@Override

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/ColGroupValue.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/ColGroupValue.java b/src/main/java/org/apache/sysml/runtime/compress/ColGroupValue.java
index 63185f2..12bce84 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/ColGroupValue.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/ColGroupValue.java
@@ -50,7 +50,7 @@ public abstract class ColGroupValue extends ColGroup
 	
 	//thread-local pairs of reusable temporary vectors for positions and values
 	private static ThreadLocal<Pair<int[], double[]>> memPool = new ThreadLocal<Pair<int[], double[]>>() {
-		@Override protected Pair<int[], double[]> initialValue() { return new Pair<int[], double[]>(); }
+		@Override protected Pair<int[], double[]> initialValue() { return new Pair<>(); }
 	};
 	
 	/** Distinct values associated with individual bitmaps. */
@@ -375,7 +375,7 @@ public abstract class ColGroupValue extends ColGroup
 	//dynamic memory management
 	
 	public static void setupThreadLocalMemory(int len) {
-		Pair<int[], double[]> p = new Pair<int[], double[]>();
+		Pair<int[], double[]> p = new Pair<>();
 		p.setKey(new int[len]);
 		p.setValue(new double[len]);
 		memPool.set(p);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/CompressedMatrixBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/CompressedMatrixBlock.java b/src/main/java/org/apache/sysml/runtime/compress/CompressedMatrixBlock.java
index 57cc7bb..4b0502d 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/CompressedMatrixBlock.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/CompressedMatrixBlock.java
@@ -195,7 +195,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 	}
 
 	private void allocateColGroupList() {
-		_colGroups = new ArrayList<ColGroup>();
+		_colGroups = new ArrayList<>();
 	}
 	
 	@Override
@@ -259,9 +259,9 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 
 		// PHASE 1: Classify columns by compression type
 		// We start by determining which columns are amenable to compression
-		List<Integer> colsC = new ArrayList<Integer>();
-		List<Integer> colsUC = new ArrayList<Integer>();
-		HashMap<Integer, Double> compRatios = new HashMap<Integer, Double>();
+		List<Integer> colsC = new ArrayList<>();
+		List<Integer> colsUC = new ArrayList<>();
+		HashMap<Integer, Double> compRatios = new HashMap<>();
 		
 		// Classify columns according to ratio (size uncompressed / size compressed), 
 		// where a column is compressible if ratio > 1.
@@ -358,7 +358,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 		// Phase 5: Cleanup
 		// The remaining columns are stored uncompressed as one big column group
 		if( !remainingCols.isEmpty() ) {
-			ArrayList<Integer> list = new ArrayList<Integer>(remainingCols);
+			ArrayList<Integer> list = new ArrayList<>(remainingCols);
 			ColGroupUncompressed ucgroup = new ColGroupUncompressed(list, rawblock);
 			_colGroups.add(ucgroup);
 		}
@@ -416,11 +416,11 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 	{	
 		try {
 			ExecutorService pool = Executors.newFixedThreadPool( k );
-			ArrayList<SizeEstimTask> tasks = new ArrayList<SizeEstimTask>();
+			ArrayList<SizeEstimTask> tasks = new ArrayList<>();
 			for( int col=0; col<clen; col++ )
 				tasks.add(new SizeEstimTask(estim, col));
 			List<Future<CompressedSizeInfo>> rtask = pool.invokeAll(tasks);	
-			ArrayList<CompressedSizeInfo> ret = new ArrayList<CompressedSizeInfo>();
+			ArrayList<CompressedSizeInfo> ret = new ArrayList<>();
 			for( Future<CompressedSizeInfo> lrtask : rtask )
 				ret.add(lrtask.get());
 			pool.shutdown();
@@ -445,11 +445,11 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 	{
 		try {
 			ExecutorService pool = Executors.newFixedThreadPool( k );
-			ArrayList<CompressTask> tasks = new ArrayList<CompressTask>();
+			ArrayList<CompressTask> tasks = new ArrayList<>();
 			for( int[] colIndexes : groups )
 				tasks.add(new CompressTask(in, estim, compRatios, rlen, colIndexes, denseEst));
-			List<Future<ColGroup>> rtask = pool.invokeAll(tasks);	
-			ArrayList<ColGroup> ret = new ArrayList<ColGroup>();
+			List<Future<ColGroup>> rtask = pool.invokeAll(tasks);
+			ArrayList<ColGroup> ret = new ArrayList<>();
 			for( Future<ColGroup> lrtask : rtask )
 				ret.add(lrtask.get());
 			pool.shutdown();
@@ -486,7 +486,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 			if (compRatioPQ == null) {
 				// first modification
 				allGroupIndices = colIndexes.clone();
-				compRatioPQ = new PriorityQueue<CompressedMatrixBlock.CompressedColumn>();
+				compRatioPQ = new PriorityQueue<>();
 				for (int i = 0; i < colIndexes.length; i++)
 					compRatioPQ.add(new CompressedColumn(i, compRatios.get(colIndexes[i])));
 			}
@@ -549,7 +549,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 			return null;
 		
 		//create joint dictionary
-		HashSet<Double> tmp = new HashSet<Double>();
+		HashSet<Double> tmp = new HashSet<>();
 		int numQual = 0;
 		for( ColGroup grp : colGroups )
 			if( grp.getNumCols()==1 && grp instanceof ColGroupDDC1 ) {
@@ -654,7 +654,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 			int rlen = getNumRows();
 			int blklen = BitmapEncoder.getAlignedBlocksize(
 				(int)(Math.ceil((double)rlen/k)));
-			ArrayList<DecompressTask> tasks = new ArrayList<DecompressTask>();
+			ArrayList<DecompressTask> tasks = new ArrayList<>();
 			for( int i=0; i<k & i*blklen<getNumRows(); i++ )
 				tasks.add(new DecompressTask(_colGroups, ret, i*blklen, Math.min((i+1)*blklen,rlen)));
 			List<Future<Object>> rtasks = pool.invokeAll(tasks);
@@ -796,7 +796,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 		_sharedDDC1Dict = in.readBoolean();
 		int ncolGroups = in.readInt();
 		
-		_colGroups = new ArrayList<ColGroup>(ncolGroups);
+		_colGroups = new ArrayList<>(ncolGroups);
 		double[] sharedDict = null;
 		for( int i=0; i<ncolGroups; i++ ) 
 		{
@@ -932,7 +932,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 		
 		// Apply the operation recursively to each of the column groups.
 		// Most implementations will only modify metadata.
-		ArrayList<ColGroup> newColGroups = new ArrayList<ColGroup>();
+		ArrayList<ColGroup> newColGroups = new ArrayList<>();
 		for (ColGroup grp : _colGroups) {
 			newColGroups.add(grp.scalarOperation(sop));
 		}
@@ -1190,7 +1190,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 					 ret = (MatrixBlock)uc.getData().aggregateUnaryOperations(op, ret, blockingFactorRow, blockingFactorCol, indexesIn, false);					
 				//compute all compressed column groups
 				ExecutorService pool = Executors.newFixedThreadPool( op.getNumThreads() );
-				ArrayList<UnaryAggregateTask> tasks = new ArrayList<UnaryAggregateTask>();
+				ArrayList<UnaryAggregateTask> tasks = new ArrayList<>();
 				if( op.indexFn instanceof ReduceCol && grpParts.length > 0 ) {
 					int blklen = BitmapEncoder.getAlignedBlocksize(
 						(int)(Math.ceil((double)rlen/op.getNumThreads())));
@@ -1280,7 +1280,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 			
 		//process cache-conscious DDC1 groups (adds to output)
 		if( cacheDDC1 ) {
-			ArrayList<ColGroupDDC1> tmp = new ArrayList<ColGroupDDC1>();
+			ArrayList<ColGroupDDC1> tmp = new ArrayList<>();
 			for( ColGroup grp : groups )
 				if( grp instanceof ColGroupDDC1 )
 					tmp.add((ColGroupDDC1)grp);
@@ -1373,7 +1373,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 			//compute matrix mult
 			try {
 				ExecutorService pool = Executors.newFixedThreadPool( k );
-				ArrayList<MatrixMultTransposeTask> tasks = new ArrayList<MatrixMultTransposeTask>();
+				ArrayList<MatrixMultTransposeTask> tasks = new ArrayList<>();
 				int numgrp = _colGroups.size();
 				int blklen = (int)(Math.ceil((double)numgrp/(2*k)));
 				for( int i=0; i<2*k & i*blklen<clen; i++ )
@@ -1448,7 +1448,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 			int rlen = getNumRows();
 			int blklen = BitmapEncoder.getAlignedBlocksize(
 				(int)(Math.ceil((double)rlen/k)));
-			ArrayList<RightMatrixMultTask> tasks = new ArrayList<RightMatrixMultTask>();
+			ArrayList<RightMatrixMultTask> tasks = new ArrayList<>();
 			for( int i=0; i<k & i*blklen<getNumRows(); i++ )
 				tasks.add(new RightMatrixMultTask(_colGroups, vector, result, i*blklen, Math.min((i+1)*blklen,rlen)));
 			List<Future<Long>> ret = pool.invokeAll(tasks);	
@@ -1482,7 +1482,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 		
 		//process cache-conscious DDC1 groups (adds to output)
 		if( cacheDDC1 ) {
-			ArrayList<ColGroupDDC1> tmp = new ArrayList<ColGroupDDC1>();
+			ArrayList<ColGroupDDC1> tmp = new ArrayList<>();
 			for( ColGroup grp : groups )
 				if( grp instanceof ColGroupDDC1 )
 					tmp.add((ColGroupDDC1)grp);
@@ -1593,7 +1593,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 			//compute remaining compressed column groups in parallel
 			ExecutorService pool = Executors.newFixedThreadPool( Math.min(colGroups.size()-((uc!=null)?1:0), k) );
 			ArrayList<ColGroup>[] grpParts = createStaticTaskPartitioning(4*k, false);
-			ArrayList<LeftMatrixMultTask> tasks = new ArrayList<LeftMatrixMultTask>();
+			ArrayList<LeftMatrixMultTask> tasks = new ArrayList<>();
 			for( ArrayList<ColGroup> groups : grpParts )
 				tasks.add(new LeftMatrixMultTask(groups, rowVector, result));
 			List<Future<Object>> ret = pool.invokeAll(tasks);	
@@ -1678,7 +1678,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 		int pos = 0;
 		for( ColGroup grp : _colGroups ){
 			if( grpParts[pos]==null )
-				grpParts[pos] = new ArrayList<ColGroup>();
+				grpParts[pos] = new ArrayList<>();
 			if( inclUncompressed || !(grp instanceof ColGroupUncompressed) ) {
 				grpParts[pos].add(grp);
 				pos = (pos==numTasks-1) ? 0 : pos+1;
@@ -2323,7 +2323,7 @@ public class CompressedMatrixBlock extends MatrixBlock implements Externalizable
 	}
 	
 	private HashSet<Integer> seq(int from, int to, int incr) {
-		HashSet<Integer> ret = new HashSet<Integer>();
+		HashSet<Integer> ret = new HashSet<>();
 		for (int i = from; i <= to; i+=incr)
 			ret.add(i);
 		return ret;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionDense.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionDense.java b/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionDense.java
index 8d2682f..9a28edb 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionDense.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionDense.java
@@ -43,7 +43,7 @@ public class ReaderColumnSelectionDense extends ReaderColumnSelection
 	public DblArray nextRow() {
 		if( _skipZeros) {
 			while ((nonZeroReturn = getNextRow()) != null
-				&& DblArray.isZero(nonZeroReturn)); 
+				&& DblArray.isZero(nonZeroReturn)){} 
 			return nonZeroReturn;
 		} else {
 			return getNextRow();

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionDenseSample.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionDenseSample.java b/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionDenseSample.java
index f60b3a7..6118ad8 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionDenseSample.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionDenseSample.java
@@ -51,7 +51,7 @@ public class ReaderColumnSelectionDenseSample extends ReaderColumnSelection
 	public DblArray nextRow() {
 		if (_skipZeros) {
 			while ((nonZeroReturn = getNextRow()) != null
-					&& DblArray.isZero(nonZeroReturn));
+					&& DblArray.isZero(nonZeroReturn)){}
 			return nonZeroReturn;
 		} else {
 			return getNextRow();

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionSparse.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionSparse.java b/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionSparse.java
index 60d0532..00e073b 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionSparse.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/ReaderColumnSelectionSparse.java
@@ -69,7 +69,7 @@ public class ReaderColumnSelectionSparse extends ReaderColumnSelection
 	public DblArray nextRow() {
 		if(_skipZeros) {
 			while ((nonZeroReturn = getNextRow()) != null
-				&& nonZeroReturn == ZERO_DBL_ARRAY);
+				&& nonZeroReturn == ZERO_DBL_ARRAY){}
 			return nonZeroReturn;
 		} else {
 			return getNextRow();

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/cocode/ColumnGroupPartitionerBinPacking.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/cocode/ColumnGroupPartitionerBinPacking.java b/src/main/java/org/apache/sysml/runtime/compress/cocode/ColumnGroupPartitionerBinPacking.java
index 0fb6abe..2bd6ce4 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/cocode/ColumnGroupPartitionerBinPacking.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/cocode/ColumnGroupPartitionerBinPacking.java
@@ -73,8 +73,8 @@ public class ColumnGroupPartitionerBinPacking extends ColumnGroupPartitioner
 	 */
 	private List<List<Integer>> packFirstFit(int[] items, double[] itemWeights) 
 	{
-		List<List<Integer>> bins = new ArrayList<List<Integer>>();
-		List<Double> binWeights = new ArrayList<Double>(); 
+		List<List<Integer>> bins = new ArrayList<>();
+		List<Double> binWeights = new ArrayList<>();
 		
 		for( int i = 0; i < items.length; i++ ) {
 			//add to existing bin
@@ -90,7 +90,7 @@ public class ColumnGroupPartitionerBinPacking extends ColumnGroupPartitioner
 				
 			//create new bin at end of list
 			if( !assigned ) {
-				bins.add(new ArrayList<Integer>(Arrays.asList(items[i])));
+				bins.add(new ArrayList<>(Arrays.asList(items[i])));
 				binWeights.add(BIN_CAPACITY-itemWeights[i]);
 			}		
 		}

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/cocode/ColumnGroupPartitionerStatic.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/cocode/ColumnGroupPartitionerStatic.java b/src/main/java/org/apache/sysml/runtime/compress/cocode/ColumnGroupPartitionerStatic.java
index e2f00f3..d830133 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/cocode/ColumnGroupPartitionerStatic.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/cocode/ColumnGroupPartitionerStatic.java
@@ -36,12 +36,12 @@ public class ColumnGroupPartitionerStatic extends ColumnGroupPartitioner
 	@Override
 	public List<List<Integer>> partitionColumns(List<Integer> groupCols, HashMap<Integer, GroupableColInfo> groupColsInfo) 
 	{
-		List<List<Integer>> ret = new ArrayList<List<Integer>>();
+		List<List<Integer>> ret = new ArrayList<>();
 		int numParts = (int)Math.ceil((double)groupCols.size()/MAX_COL_PER_GROUP);
 		int partSize = (int)Math.ceil((double)groupCols.size()/numParts);
 		
 		for( int i=0, pos=0; i<numParts; i++, pos+=partSize ) {
-			List<Integer> tmp = new ArrayList<Integer>();
+			List<Integer> tmp = new ArrayList<>();
 			for( int j=0; j<partSize && pos+j<groupCols.size(); j++ )
 				tmp.add(groupCols.get(pos+j));
 			ret.add(tmp);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/cocode/PlanningCoCoder.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/cocode/PlanningCoCoder.java b/src/main/java/org/apache/sysml/runtime/compress/cocode/PlanningCoCoder.java
index 778f221..298571d 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/cocode/PlanningCoCoder.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/cocode/PlanningCoCoder.java
@@ -53,8 +53,8 @@ public class PlanningCoCoder
 		// filtering out non-groupable columns as singleton groups
 		// weight is the ratio of its cardinality to the number of rows 
 		int numCols = cols.size();
-		List<Integer> groupCols = new ArrayList<Integer>();
-		HashMap<Integer, GroupableColInfo> groupColsInfo = new HashMap<Integer, GroupableColInfo>();
+		List<Integer> groupCols = new ArrayList<>();
+		HashMap<Integer, GroupableColInfo> groupColsInfo = new HashMap<>();
 		for (int i = 0; i < numCols; i++) {
 			int colIx = cols.get(i);
 			double cardinality = colInfos[colIx].getEstCard();
@@ -75,10 +75,10 @@ public class PlanningCoCoder
 
 	private static List<int[]> getCocodingGroupsBruteForce(List<List<Integer>> bins, HashMap<Integer, GroupableColInfo> groupColsInfo, CompressedSizeEstimator estim, int rlen) 
 	{
-		List<int[]> retGroups = new ArrayList<int[]>();		
+		List<int[]> retGroups = new ArrayList<>();
 		for (List<Integer> bin : bins) {
 			// building an array of singleton CoCodingGroup
-			ArrayList<PlanningCoCodingGroup> sgroups = new ArrayList<PlanningCoCodingGroup>();
+			ArrayList<PlanningCoCodingGroup> sgroups = new ArrayList<>();
 			for (Integer col : bin)
 				sgroups.add(new PlanningCoCodingGroup(col, groupColsInfo.get(col)));
 			// brute force co-coding	
@@ -94,13 +94,13 @@ public class PlanningCoCoder
 	private static List<int[]> getCocodingGroupsBruteForce(List<List<Integer>> bins, HashMap<Integer, GroupableColInfo> groupColsInfo, CompressedSizeEstimator estim, int rlen, int k) 
 		throws DMLRuntimeException 
 	{
-		List<int[]> retGroups = new ArrayList<int[]>();		
+		List<int[]> retGroups = new ArrayList<>();
 		try {
 			ExecutorService pool = Executors.newFixedThreadPool( k );
-			ArrayList<CocodeTask> tasks = new ArrayList<CocodeTask>();
+			ArrayList<CocodeTask> tasks = new ArrayList<>();
 			for (List<Integer> bin : bins) {
 				// building an array of singleton CoCodingGroup
-				ArrayList<PlanningCoCodingGroup> sgroups = new ArrayList<PlanningCoCodingGroup>();
+				ArrayList<PlanningCoCodingGroup> sgroups = new ArrayList<>();
 				for (Integer col : bin)
 					sgroups.add(new PlanningCoCodingGroup(col, groupColsInfo.get(col)));
 				tasks.add(new CocodeTask(estim, sgroups, rlen));
@@ -136,7 +136,7 @@ public class PlanningCoCoder
 			LOG.trace("Cocoding: process "+singletonGroups.length);
 		
 		List<PlanningCoCodingGroup> workset = 
-				new ArrayList<PlanningCoCodingGroup>(Arrays.asList(singletonGroups));
+			new ArrayList<>(Arrays.asList(singletonGroups));
 		
 		//establish memo table for extracted column groups
 		PlanningMemoTable memo = new PlanningMemoTable();

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/cocode/PlanningMemoTable.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/cocode/PlanningMemoTable.java b/src/main/java/org/apache/sysml/runtime/compress/cocode/PlanningMemoTable.java
index e85e14e..f851e32 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/cocode/PlanningMemoTable.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/cocode/PlanningMemoTable.java
@@ -29,7 +29,7 @@ import org.apache.sysml.runtime.compress.estim.CompressedSizeEstimator;
 
 public class PlanningMemoTable 
 {
-	private HashMap<ColIndexes,PlanningCoCodingGroup> _memo = new HashMap<ColIndexes,PlanningCoCodingGroup>();
+	private HashMap<ColIndexes,PlanningCoCodingGroup> _memo = new HashMap<>();
 	private double _optChangeInSize = 0; 
 	private int[] _stats = new int[3];
 	

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/estim/CompressedSizeEstimatorSample.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/estim/CompressedSizeEstimatorSample.java b/src/main/java/org/apache/sysml/runtime/compress/estim/CompressedSizeEstimatorSample.java
index 92461d4..2492c0b 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/estim/CompressedSizeEstimatorSample.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/estim/CompressedSizeEstimatorSample.java
@@ -67,7 +67,7 @@ public class CompressedSizeEstimatorSample extends CompressedSizeEstimator
 		}
 		
 		//establish estimator-local cache for numeric solve
-		_solveCache = new HashMap<Integer, Double>();
+		_solveCache = new HashMap<>();
 	}
 
 	@Override
@@ -546,7 +546,7 @@ public class CompressedSizeEstimatorSample extends CompressedSizeEstimator
 
 	private static HashMap<DblArray, Integer> getValCounts(ReaderColumnSelection sampleRowsReader) 
 	{
-		HashMap<DblArray, Integer> valsCount = new HashMap<DblArray, Integer>();
+		HashMap<DblArray, Integer> valsCount = new HashMap<>();
 		DblArray val = null;
 		Integer cnt;
 		while (null != (val = sampleRowsReader.nextRow())) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/utils/ConverterUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/utils/ConverterUtils.java b/src/main/java/org/apache/sysml/runtime/compress/utils/ConverterUtils.java
index 6a2753b..bf15d37 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/utils/ConverterUtils.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/utils/ConverterUtils.java
@@ -75,7 +75,7 @@ public class ConverterUtils
 			ret = ((ColGroupUncompressed) group).getData();
 		}
 		else {
-			ArrayList<ColGroup> tmpGroup = new ArrayList<ColGroup>(Arrays.asList(group));
+			ArrayList<ColGroup> tmpGroup = new ArrayList<>(Arrays.asList(group));
 			ColGroupUncompressed decompressedCols = new ColGroupUncompressed(tmpGroup);
 			ret = decompressedCols.getData();
 		}

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/utils/DblArrayIntListHashMap.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/utils/DblArrayIntListHashMap.java b/src/main/java/org/apache/sysml/runtime/compress/utils/DblArrayIntListHashMap.java
index 7b39039..3f195b2 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/utils/DblArrayIntListHashMap.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/utils/DblArrayIntListHashMap.java
@@ -80,7 +80,7 @@ public class DblArrayIntListHashMap
 	}
 
 	public ArrayList<DArrayIListEntry> extractValues() {
-		ArrayList<DArrayIListEntry> ret = new ArrayList<DArrayIListEntry>();
+		ArrayList<DArrayIListEntry> ret = new ArrayList<>();
 		for( DArrayIListEntry e : _data ) {
 			if( e != null ) {
 				while( e.next != null ) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/compress/utils/DoubleIntListHashMap.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/compress/utils/DoubleIntListHashMap.java b/src/main/java/org/apache/sysml/runtime/compress/utils/DoubleIntListHashMap.java
index 639b785..272bbcc 100644
--- a/src/main/java/org/apache/sysml/runtime/compress/utils/DoubleIntListHashMap.java
+++ b/src/main/java/org/apache/sysml/runtime/compress/utils/DoubleIntListHashMap.java
@@ -80,7 +80,7 @@ public class DoubleIntListHashMap
 	}
 
 	public ArrayList<DIListEntry> extractValues() {
-		ArrayList<DIListEntry> ret = new ArrayList<DIListEntry>();
+		ArrayList<DIListEntry> ret = new ArrayList<>();
 		for( DIListEntry e : _data ) {
 			if (e != null) {
 				while( e.next != null ) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/controlprogram/ExternalFunctionProgramBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/ExternalFunctionProgramBlock.java b/src/main/java/org/apache/sysml/runtime/controlprogram/ExternalFunctionProgramBlock.java
index 7b364d7..91ae7d6 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/ExternalFunctionProgramBlock.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/ExternalFunctionProgramBlock.java
@@ -29,7 +29,6 @@ import java.util.TreeMap;
 import org.apache.sysml.api.DMLScript;
 import org.apache.sysml.conf.ConfigurationManager;
 import org.apache.sysml.lops.Lop;
-import org.apache.sysml.lops.ReBlock;
 import org.apache.sysml.lops.compile.JobType;
 import org.apache.sysml.parser.DataIdentifier;
 import org.apache.sysml.parser.Expression.DataType;
@@ -110,11 +109,11 @@ public class ExternalFunctionProgramBlock extends FunctionProgramBlock
 		_baseDir = baseDir;
 		
 		// copy other params
-		_otherParams = new HashMap<String, String>();
+		_otherParams = new HashMap<>();
 		_otherParams.putAll(otherParams);
 
-		_unblockedFileNames = new HashMap<String, String>();
-		_blockedFileNames = new HashMap<String, String>();
+		_unblockedFileNames = new HashMap<>();
+		_blockedFileNames = new HashMap<>();
 	
 		// generate instructions
 		createInstructions();
@@ -185,7 +184,7 @@ public class ExternalFunctionProgramBlock extends FunctionProgramBlock
 		// convert block to cell
 		if( block2CellInst != null )
 		{
-			ArrayList<Instruction> tempInst = new ArrayList<Instruction>();
+			ArrayList<Instruction> tempInst = new ArrayList<>();
 			tempInst.addAll(block2CellInst);
 			try {
 				this.executeInstructions(tempInst,ec);
@@ -212,7 +211,7 @@ public class ExternalFunctionProgramBlock extends FunctionProgramBlock
 		// convert cell to block
 		if( cell2BlockInst != null )
 		{
-			ArrayList<Instruction> tempInst = new ArrayList<Instruction>();
+			ArrayList<Instruction> tempInst = new ArrayList<>();
 			try {
 				tempInst.clear();
 				tempInst.addAll(cell2BlockInst);
@@ -276,7 +275,7 @@ public class ExternalFunctionProgramBlock extends FunctionProgramBlock
 	 */
 	protected void createInstructions() {
 
-		_inst = new ArrayList<Instruction>();
+		_inst = new ArrayList<>();
 
 		// unblock all input matrices
 		block2CellInst = getBlock2CellInstructions(getInputParams(),_unblockedFileNames);
@@ -327,8 +326,8 @@ public class ExternalFunctionProgramBlock extends FunctionProgramBlock
 		ArrayList<Instruction> c2binst = null;
 		
 		//list of matrices that need to be reblocked
-		ArrayList<DataIdentifier> matrices = new ArrayList<DataIdentifier>();
-		ArrayList<DataIdentifier> matricesNoReblock = new ArrayList<DataIdentifier>();
+		ArrayList<DataIdentifier> matrices = new ArrayList<>();
+		ArrayList<DataIdentifier> matricesNoReblock = new ArrayList<>();
 
 		// identify outputs that are matrices
 		for (int i = 0; i < outputParams.size(); i++) {
@@ -342,15 +341,15 @@ public class ExternalFunctionProgramBlock extends FunctionProgramBlock
 
 		if( !matrices.isEmpty() )
 		{
-			c2binst = new ArrayList<Instruction>();
+			c2binst = new ArrayList<>();
 			MRJobInstruction reblkInst = new MRJobInstruction(JobType.REBLOCK);
 			TreeMap<Integer, ArrayList<String>> MRJobLineNumbers = null;
 			if(DMLScript.ENABLE_DEBUG_MODE) {
-				MRJobLineNumbers = new TreeMap<Integer, ArrayList<String>>();
+				MRJobLineNumbers = new TreeMap<>();
 			}
 			
-			ArrayList<String> inLabels = new ArrayList<String>();
-			ArrayList<String> outLabels = new ArrayList<String>();
+			ArrayList<String> inLabels = new ArrayList<>();
+			ArrayList<String> outLabels = new ArrayList<>();
 			String[] outputs = new String[matrices.size()];
 			byte[] resultIndex = new byte[matrices.size()];
 			String reblock = "";
@@ -364,25 +363,25 @@ public class ExternalFunctionProgramBlock extends FunctionProgramBlock
 					inLabels.add(matrices.get(i).getName());
 					outLabels.add(matrices.get(i).getName() + "_extFnOutput");
 					outputs[i] = scratchSpaceLoc +
-					             Lop.FILE_SEPARATOR + Lop.PROCESS_PREFIX + DMLScript.getUUID() + Lop.FILE_SEPARATOR + 
-		                         _otherParams.get(ExternalFunctionStatement.CLASS_NAME) + _runID + "_" + i + "Output";
+							Lop.FILE_SEPARATOR + Lop.PROCESS_PREFIX + DMLScript.getUUID() + Lop.FILE_SEPARATOR + 
+							_otherParams.get(ExternalFunctionStatement.CLASS_NAME) + _runID + "_" + i + "Output";
 					blockedFileNames.put(matrices.get(i).getName(), outputs[i]);
 					resultIndex[i] = (byte) i; // (matrices.size()+i);
 		
 					if (i > 0)
 						reblock += Lop.INSTRUCTION_DELIMITOR;
 		
-					reblock += "MR" + ReBlock.OPERAND_DELIMITOR + "rblk" + ReBlock.OPERAND_DELIMITOR + 
-									i + ReBlock.DATATYPE_PREFIX + matrices.get(i).getDataType() + ReBlock.VALUETYPE_PREFIX + matrices.get(i).getValueType() + ReBlock.OPERAND_DELIMITOR + 
-									i + ReBlock.DATATYPE_PREFIX + matrices.get(i).getDataType() + ReBlock.VALUETYPE_PREFIX + matrices.get(i).getValueType() + ReBlock.OPERAND_DELIMITOR + 
-									ConfigurationManager.getBlocksize() + ReBlock.OPERAND_DELIMITOR + ConfigurationManager.getBlocksize() + ReBlock.OPERAND_DELIMITOR + "true";
+					reblock += "MR" + Lop.OPERAND_DELIMITOR + "rblk" + Lop.OPERAND_DELIMITOR + 
+									i + Lop.DATATYPE_PREFIX + matrices.get(i).getDataType() + Lop.VALUETYPE_PREFIX + matrices.get(i).getValueType() + Lop.OPERAND_DELIMITOR + 
+									i + Lop.DATATYPE_PREFIX + matrices.get(i).getDataType() + Lop.VALUETYPE_PREFIX + matrices.get(i).getValueType() + Lop.OPERAND_DELIMITOR + 
+									ConfigurationManager.getBlocksize() + Lop.OPERAND_DELIMITOR + ConfigurationManager.getBlocksize() + Lop.OPERAND_DELIMITOR + "true";
 					
 					if(DMLScript.ENABLE_DEBUG_MODE) {
 						//Create a copy of reblock instruction but as a single instruction (FOR DEBUGGER)
-						reblockStr = "MR" + ReBlock.OPERAND_DELIMITOR + "rblk" + ReBlock.OPERAND_DELIMITOR + 
-										i + ReBlock.DATATYPE_PREFIX + matrices.get(i).getDataType() + ReBlock.VALUETYPE_PREFIX + matrices.get(i).getValueType() + ReBlock.OPERAND_DELIMITOR + 
-										i + ReBlock.DATATYPE_PREFIX + matrices.get(i).getDataType() + ReBlock.VALUETYPE_PREFIX + matrices.get(i).getValueType() + ReBlock.OPERAND_DELIMITOR + 
-										ConfigurationManager.getBlocksize() + ReBlock.OPERAND_DELIMITOR + ConfigurationManager.getBlocksize()  + ReBlock.OPERAND_DELIMITOR + "true";					
+						reblockStr = "MR" + Lop.OPERAND_DELIMITOR + "rblk" + Lop.OPERAND_DELIMITOR + 
+										i + Lop.DATATYPE_PREFIX + matrices.get(i).getDataType() + Lop.VALUETYPE_PREFIX + matrices.get(i).getValueType() + Lop.OPERAND_DELIMITOR + 
+										i + Lop.DATATYPE_PREFIX + matrices.get(i).getDataType() + Lop.VALUETYPE_PREFIX + matrices.get(i).getValueType() + Lop.OPERAND_DELIMITOR + 
+										ConfigurationManager.getBlocksize() + Lop.OPERAND_DELIMITOR + ConfigurationManager.getBlocksize()  + Lop.OPERAND_DELIMITOR + "true";					
 						//Set MR reblock instruction line number (FOR DEBUGGER)
 						if (!MRJobLineNumbers.containsKey(matrices.get(i).getBeginLine())) {
 							MRJobLineNumbers.put(matrices.get(i).getBeginLine(), new ArrayList<String>()); 
@@ -448,8 +447,8 @@ public class ExternalFunctionProgramBlock extends FunctionProgramBlock
 		ArrayList<Instruction> b2cinst = null;
 		
 		//list of input matrices
-		ArrayList<DataIdentifier> matrices = new ArrayList<DataIdentifier>();
-		ArrayList<DataIdentifier> matricesNoReblock = new ArrayList<DataIdentifier>();
+		ArrayList<DataIdentifier> matrices = new ArrayList<>();
+		ArrayList<DataIdentifier> matricesNoReblock = new ArrayList<>();
 
 		// find all inputs that are matrices
 		for (int i = 0; i < inputParams.size(); i++) {
@@ -463,15 +462,15 @@ public class ExternalFunctionProgramBlock extends FunctionProgramBlock
 		
 		if( !matrices.isEmpty() )
 		{
-			b2cinst = new ArrayList<Instruction>();
+			b2cinst = new ArrayList<>();
 			MRJobInstruction gmrInst = new MRJobInstruction(JobType.GMR);
 			TreeMap<Integer, ArrayList<String>> MRJobLineNumbers = null;
 			if(DMLScript.ENABLE_DEBUG_MODE) {
-				MRJobLineNumbers = new TreeMap<Integer, ArrayList<String>>();
+				MRJobLineNumbers = new TreeMap<>();
 			}
 			String gmrStr="";
-			ArrayList<String> inLabels = new ArrayList<String>();
-			ArrayList<String> outLabels = new ArrayList<String>();
+			ArrayList<String> inLabels = new ArrayList<>();
+			ArrayList<String> outLabels = new ArrayList<>();
 			String[] outputs = new String[matrices.size()];
 			byte[] resultIndex = new byte[matrices.size()];
 	
@@ -632,7 +631,7 @@ public class ExternalFunctionProgramBlock extends FunctionProgramBlock
 		// iterate over each output and verify that type matches
 		for (int i = 0; i < outputs.size(); i++) {
 			StringTokenizer tk = new StringTokenizer(outputs.get(i), ":");
-			ArrayList<String> tokens = new ArrayList<String>();
+			ArrayList<String> tokens = new ArrayList<>();
 			while (tk.hasMoreTokens()) {
 				tokens.add(tk.nextToken());
 			}
@@ -760,10 +759,10 @@ public class ExternalFunctionProgramBlock extends FunctionProgramBlock
 	 */
 	protected ArrayList<FunctionParameter> getInputObjects(ArrayList<String> inputs,
 			LocalVariableMap variableMapping) {
-		ArrayList<FunctionParameter> inputObjects = new ArrayList<FunctionParameter>();
+		ArrayList<FunctionParameter> inputObjects = new ArrayList<>();
 
 		for (int i = 0; i < inputs.size(); i++) {
-			ArrayList<String> tokens = new ArrayList<String>();
+			ArrayList<String> tokens = new ArrayList<>();
 			StringTokenizer tk = new StringTokenizer(inputs.get(i), ":");
 			while (tk.hasMoreTokens()) {
 				tokens.add(tk.nextToken());
@@ -848,7 +847,7 @@ public class ExternalFunctionProgramBlock extends FunctionProgramBlock
 	 * @return list of string inputs
 	 */
 	protected ArrayList<String> getParameters(String inputParams) {
-		ArrayList<String> inputs = new ArrayList<String>();
+		ArrayList<String> inputs = new ArrayList<>();
 
 		StringTokenizer tk = new StringTokenizer(inputParams, ",");
 		while (tk.hasMoreTokens()) {
@@ -925,13 +924,13 @@ public class ExternalFunctionProgramBlock extends FunctionProgramBlock
 	
 	//FUNCTION PATCH
 	
-	private Collection<String> _skipInReblock = new HashSet<String>();
-	private Collection<String> _skipOutReblock = new HashSet<String>();
+	private Collection<String> _skipInReblock = new HashSet<>();
+	private Collection<String> _skipOutReblock = new HashSet<>();
 	
 	@Override
 	public ArrayList<Instruction> getInstructions()
 	{
-		ArrayList<Instruction> tmp = new ArrayList<Instruction>();
+		ArrayList<Instruction> tmp = new ArrayList<>();
 		if( cell2BlockInst != null )
 			tmp.addAll(cell2BlockInst);
 		if( block2CellInst != null )

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/controlprogram/FunctionProgramBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/FunctionProgramBlock.java b/src/main/java/org/apache/sysml/runtime/controlprogram/FunctionProgramBlock.java
index d402502..aa51c59 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/FunctionProgramBlock.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/FunctionProgramBlock.java
@@ -46,13 +46,13 @@ public class FunctionProgramBlock extends ProgramBlock
 	public FunctionProgramBlock( Program prog, ArrayList<DataIdentifier> inputParams, ArrayList<DataIdentifier> outputParams) 
 	{
 		super(prog);
-		_childBlocks = new ArrayList<ProgramBlock>();
-		_inputParams = new ArrayList<DataIdentifier>();
+		_childBlocks = new ArrayList<>();
+		_inputParams = new ArrayList<>();
 		for (DataIdentifier id : inputParams){
 			_inputParams.add(new DataIdentifier(id));
 			
 		}
-		_outputParams = new ArrayList<DataIdentifier>();
+		_outputParams = new ArrayList<>();
 		for (DataIdentifier id : outputParams){
 			_outputParams.add(new DataIdentifier(id));
 		}

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/controlprogram/ParForProgramBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/ParForProgramBlock.java b/src/main/java/org/apache/sysml/runtime/controlprogram/ParForProgramBlock.java
index 07ca3ee..7d6c1e7 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/ParForProgramBlock.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/ParForProgramBlock.java
@@ -197,6 +197,10 @@ public class ParForProgramBlock extends ForProgramBlock
 			_N = N;
 		}
 		@Override
+		public int hashCode() {
+			return UtilFunctions.intHashCode(_dpf.ordinal(), _N);
+		}
+		@Override
 		public boolean equals(Object o) {
 			return (o instanceof PartitionFormat)
 				&& _dpf == ((PartitionFormat)o)._dpf

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/controlprogram/caching/CacheableData.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/caching/CacheableData.java b/src/main/java/org/apache/sysml/runtime/controlprogram/caching/CacheableData.java
index d1d455d..720b37d 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/caching/CacheableData.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/caching/CacheableData.java
@@ -108,7 +108,7 @@ public abstract class CacheableData<T extends CacheBlock> extends Data
     	MODIFY, 
     	CACHED,
     	CACHED_NOWRITE,
-    };
+    }
 	
 	/** Global flag indicating if caching is enabled (controls eviction) */
 	private static boolean _activeFlag = false;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/controlprogram/caching/PageCache.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/caching/PageCache.java b/src/main/java/org/apache/sysml/runtime/controlprogram/caching/PageCache.java
index 7e96ec1..2d20e90 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/caching/PageCache.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/caching/PageCache.java
@@ -25,13 +25,11 @@ import java.util.LinkedList;
 
 public class PageCache 
 {
-	
 	private static final int CLEANUP_THRESHOLD = 128;
 	private static HashMap<Integer, LinkedList<SoftReference<byte[]>>> _pool;
 
-	public static void init()
-	{
-		_pool = new HashMap<Integer, LinkedList<SoftReference<byte[]>>>();
+	public static void init() {
+		_pool = new HashMap<>();
 	}
 
 	public static void clear()
@@ -47,10 +45,10 @@ public class PageCache
 		
 		LinkedList<SoftReference<byte[]>> list = _pool.get( data.length );
 		if( list==null ){
-			list = new LinkedList<SoftReference<byte[]>>();
+			list = new LinkedList<>();
 			_pool.put(data.length, list);
 		}
-		list.addLast(new SoftReference<byte[]>(data));	
+		list.addLast(new SoftReference<>(data));	
 	}
 
 	public static byte[] getPage( int size )

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/controlprogram/context/SparkExecutionContext.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/context/SparkExecutionContext.java b/src/main/java/org/apache/sysml/runtime/controlprogram/context/SparkExecutionContext.java
index 966049c..110c203 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/context/SparkExecutionContext.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/context/SparkExecutionContext.java
@@ -1124,7 +1124,7 @@ public class SparkExecutionContext extends ExecutionContext
 		}
 	}
 
-	@SuppressWarnings({ "rawtypes", "unchecked" })
+	@SuppressWarnings({ "rawtypes" })
 	private void rCleanupLineageObject(LineageObject lob)
 		throws IOException
 	{

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/DataPartitionerLocal.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/DataPartitionerLocal.java b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/DataPartitionerLocal.java
index b57f050..fe9f75a 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/DataPartitionerLocal.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/DataPartitionerLocal.java
@@ -141,7 +141,7 @@ public class DataPartitionerLocal extends DataPartitioner
 		
 		try 
 		{
-			//STEP 1: read matrix from HDFS and write blocks to local staging area			
+			//STEP 1: read matrix from HDFS and write blocks to local staging area
 			//check and add input path
 			JobConf job = new JobConf(ConfigurationManager.getCachedJobConf());
 			Path path = new Path(fname);
@@ -150,7 +150,7 @@ public class DataPartitionerLocal extends DataPartitioner
 			informat.configure(job);
 			InputSplit[] splits = informat.getSplits(job, 1);
 			
-			LinkedList<Cell> buffer = new LinkedList<Cell>();
+			LinkedList<Cell> buffer = new LinkedList<>();
 			LongWritable key = new LongWritable();
 			Text value = new Text();
 			FastStringTokenizer st = new FastStringTokenizer(' ');
@@ -241,7 +241,7 @@ public class DataPartitionerLocal extends DataPartitioner
 			FileSystem fs = IOUtilFunctions.getFileSystem(path, job);
 			
 			//prepare sequence file reader, and write to local staging area	
-			LinkedList<Cell> buffer = new LinkedList<Cell>();
+			LinkedList<Cell> buffer = new LinkedList<>();
 			MatrixIndexes key = new MatrixIndexes();
 			MatrixCell value = new MatrixCell();
 	
@@ -405,7 +405,7 @@ public class DataPartitionerLocal extends DataPartitioner
 			MatrixIndexes key = new MatrixIndexes(); 
 			MatrixBlock value = new MatrixBlock();
 			
-			LinkedList<Cell> buffer = new LinkedList<Cell>();
+			LinkedList<Cell> buffer = new LinkedList<>();
 			
 			for(Path lpath : IOUtilFunctions.getSequenceFilePaths(fs, path) )
 			{
@@ -547,7 +547,7 @@ public class DataPartitionerLocal extends DataPartitioner
 	private void appendCellBufferToStagingArea( String dir, LinkedList<Cell> buffer, int brlen, int bclen ) 
 		throws DMLRuntimeException, IOException
 	{
-		HashMap<Long,LinkedList<Cell>> sortedBuffer = new HashMap<Long,LinkedList<Cell>>();
+		HashMap<Long,LinkedList<Cell>> sortedBuffer = new HashMap<>();
 		
 		//sort cells in buffer wrt key
 		long key = -1;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/RemoteParForSparkWorker.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/RemoteParForSparkWorker.java b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/RemoteParForSparkWorker.java
index 033d398..ec61cee 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/RemoteParForSparkWorker.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/RemoteParForSparkWorker.java
@@ -93,8 +93,7 @@ public class RemoteParForSparkWorker extends ParWorker implements PairFlatMapFun
 		
 		return ret.iterator();
 	}
-
-	@SuppressWarnings("unchecked")
+	
 	private void configureWorker(long taskID) 
 		throws DMLRuntimeException, IOException
 	{

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeLocalFile.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeLocalFile.java b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeLocalFile.java
index 9b274be..50eb960 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeLocalFile.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeLocalFile.java
@@ -104,7 +104,7 @@ public class ResultMergeLocalFile extends ResultMerge
 			
 			
 			//collect all relevant inputs
-			ArrayList<MatrixObject> inMO = new ArrayList<MatrixObject>();
+			ArrayList<MatrixObject> inMO = new ArrayList<>();
 			for( MatrixObject in : _inputs )
 			{
 				//check for empty inputs (no iterations executed)
@@ -508,7 +508,7 @@ public class ResultMergeLocalFile extends ResultMerge
 		informat.configure(job);
 		InputSplit[] splits = informat.getSplits(job, 1);
 		
-		LinkedList<Cell> buffer = new LinkedList<Cell>();
+		LinkedList<Cell> buffer = new LinkedList<>();
 		LongWritable key = new LongWritable();
 		Text value = new Text();
 
@@ -567,7 +567,7 @@ public class ResultMergeLocalFile extends ResultMerge
 		Path path = new Path(mo.getFileName());
 		FileSystem fs = IOUtilFunctions.getFileSystem(path, job);
 		
-		LinkedList<Cell> buffer = new LinkedList<Cell>();
+		LinkedList<Cell> buffer = new LinkedList<>();
 		MatrixIndexes key = new MatrixIndexes();
 		MatrixCell value = new MatrixCell();
 	
@@ -608,7 +608,7 @@ public class ResultMergeLocalFile extends ResultMerge
 	private void appendCellBufferToStagingArea( String fnameStaging, long ID, LinkedList<Cell> buffer, int brlen, int bclen ) 
 		throws DMLRuntimeException, IOException
 	{
-		HashMap<Long,HashMap<Long,LinkedList<Cell>>> sortedBuffer = new HashMap<Long, HashMap<Long,LinkedList<Cell>>>();
+		HashMap<Long,HashMap<Long,LinkedList<Cell>>> sortedBuffer = new HashMap<>();
 		long brow, bcol, row_offset, col_offset;
 		
 		for( Cell c : buffer )

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeRemoteGrouping.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeRemoteGrouping.java b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeRemoteGrouping.java
index be3b6bb..1f63f85 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeRemoteGrouping.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeRemoteGrouping.java
@@ -25,21 +25,17 @@ import org.apache.hadoop.io.WritableComparator;
 
 public class ResultMergeRemoteGrouping extends WritableComparator
 {
-	
-	
-	protected ResultMergeRemoteGrouping()
-	{
+	protected ResultMergeRemoteGrouping() {
 		super(ResultMergeTaggedMatrixIndexes.class,true);
 	}
 	
-	@SuppressWarnings("rawtypes") 
 	@Override
 	public int compare(WritableComparable k1, WritableComparable k2) 
 	{
 		ResultMergeTaggedMatrixIndexes key1 = (ResultMergeTaggedMatrixIndexes)k1;
 		ResultMergeTaggedMatrixIndexes key2 = (ResultMergeTaggedMatrixIndexes)k2;
-	    
+		
 		//group by matrix indexes only (including all tags)
- 	    return key1.getIndexes().compareTo(key2.getIndexes());
+		return key1.getIndexes().compareTo(key2.getIndexes());
 	}
 }

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeRemoteSorting.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeRemoteSorting.java b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeRemoteSorting.java
index 987d702..1ed431e 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeRemoteSorting.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ResultMergeRemoteSorting.java
@@ -24,16 +24,12 @@ import org.apache.hadoop.io.WritableComparator;
 
 public class ResultMergeRemoteSorting extends WritableComparator
 {
-	
-	
-	protected ResultMergeRemoteSorting()
-	{
+	protected ResultMergeRemoteSorting() {
 		super(ResultMergeTaggedMatrixIndexes.class, true);
 	}
 	
-	@SuppressWarnings("rawtypes")
 	@Override
-    public int compare(WritableComparable k1, WritableComparable k2) 
+	public int compare(WritableComparable k1, WritableComparable k2) 
 	{
 		ResultMergeTaggedMatrixIndexes key1 = (ResultMergeTaggedMatrixIndexes)k1;
 		ResultMergeTaggedMatrixIndexes key2 = (ResultMergeTaggedMatrixIndexes)k2;
@@ -42,10 +38,8 @@ public class ResultMergeRemoteSorting extends WritableComparator
 		if( ret == 0 ) //same indexes, secondary sort
 		{
 			ret = ((key1.getTag() == key2.getTag()) ? 0 : 
-				   (key1.getTag() < key2.getTag())? -1 : 1);
+				(key1.getTag() < key2.getTag())? -1 : 1);
 		}	
-			
-		return ret; 
-		
-    }
+		return ret;
+	}
 }

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java
index 0bdd59f..5676869 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java
@@ -195,14 +195,14 @@ public class OptTreeConverter
 		}
 		else if( pb instanceof ParForProgramBlock )
 		{
-			ParForProgramBlock fpb = (ParForProgramBlock) pb;			
+			ParForProgramBlock fpb = (ParForProgramBlock) pb;
 			node = new OptNode( NodeType.PARFOR );
 			if(storeObjs)
 				_rtMap.putMapping(fpb, node);
 			node.setK( fpb.getDegreeOfParallelism() );
 			long N = fpb.getNumIterations();
-			node.addParam(ParamType.NUM_ITERATIONS, (N!=-1) ? String.valueOf(N) : 
-															  String.valueOf(CostEstimatorRuntime.FACTOR_NUM_ITERATIONS));
+			node.addParam(ParamType.NUM_ITERATIONS, (N!=-1) ? 
+				String.valueOf(N) : String.valueOf(CostEstimator.FACTOR_NUM_ITERATIONS));
 			
 			switch(fpb.getExecMode())
 			{

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/util/StagingFileUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/util/StagingFileUtils.java b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/util/StagingFileUtils.java
index 81dc9a0..87ad16c 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/util/StagingFileUtils.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/util/StagingFileUtils.java
@@ -154,7 +154,7 @@ public class StagingFileUtils
 	{
 		FileInputStream fis = new FileInputStream( fname );
 		BufferedReader in = new BufferedReader(new InputStreamReader(fis));	
-		LinkedList<Cell> buffer = new LinkedList<Cell>();
+		LinkedList<Cell> buffer = new LinkedList<>();
 		try 
 		{
 			String value = null;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/functionobjects/Builtin.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/functionobjects/Builtin.java b/src/main/java/org/apache/sysml/runtime/functionobjects/Builtin.java
index a05eefe..ed1838d 100644
--- a/src/main/java/org/apache/sysml/runtime/functionobjects/Builtin.java
+++ b/src/main/java/org/apache/sysml/runtime/functionobjects/Builtin.java
@@ -49,7 +49,7 @@ public class Builtin extends ValueFunction
 
 	private static final long serialVersionUID = 3836744687789840574L;
 	
-	public enum BuiltinCode { SIN, COS, TAN, SINH, COSH, TANH, ASIN, ACOS, ATAN, LOG, LOG_NZ, MIN, MAX, ABS, SIGN, SQRT, EXP, PLOGP, PRINT, PRINTF, NROW, NCOL, LENGTH, ROUND, MAXINDEX, MININDEX, STOP, CEIL, FLOOR, CUMSUM, CUMPROD, CUMMIN, CUMMAX, INVERSE, SPROP, SIGMOID, SELP };
+	public enum BuiltinCode { SIN, COS, TAN, SINH, COSH, TANH, ASIN, ACOS, ATAN, LOG, LOG_NZ, MIN, MAX, ABS, SIGN, SQRT, EXP, PLOGP, PRINT, PRINTF, NROW, NCOL, LENGTH, ROUND, MAXINDEX, MININDEX, STOP, CEIL, FLOOR, CUMSUM, CUMPROD, CUMMIN, CUMMAX, INVERSE, SPROP, SIGMOID, SELP }
 	public BuiltinCode bFunc;
 	
 	private static final boolean FASTMATH = true;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/functionobjects/ParameterizedBuiltin.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/functionobjects/ParameterizedBuiltin.java b/src/main/java/org/apache/sysml/runtime/functionobjects/ParameterizedBuiltin.java
index 8635833..f36b484 100644
--- a/src/main/java/org/apache/sysml/runtime/functionobjects/ParameterizedBuiltin.java
+++ b/src/main/java/org/apache/sysml/runtime/functionobjects/ParameterizedBuiltin.java
@@ -46,9 +46,9 @@ public class ParameterizedBuiltin extends ValueFunction
 	
 	public enum ParameterizedBuiltinCode { 
 		CDF, INVCDF, RMEMPTY, REPLACE, REXPAND,
-		TRANSFORMAPPLY, TRANSFORMDECODE };
+		TRANSFORMAPPLY, TRANSFORMDECODE }
 	public enum ProbabilityDistributionCode { 
-		INVALID, NORMAL, EXP, CHISQ, F, T };
+		INVALID, NORMAL, EXP, CHISQ, F, T }
 	
 	public ParameterizedBuiltinCode bFunc;
 	public ProbabilityDistributionCode distFunc;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/Instruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/Instruction.java b/src/main/java/org/apache/sysml/runtime/instructions/Instruction.java
index 374f81c..61c2077 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/Instruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/Instruction.java
@@ -37,7 +37,7 @@ public abstract class Instruction
 		BREAKPOINT,
 		SPARK,
 		GPU
-	};
+	}
 	
 	protected static final Log LOG = LogFactory.getLog(Instruction.class.getName());
 	

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/MRJobInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/MRJobInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/MRJobInstruction.java
index 780325b..77ef635 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/MRJobInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/MRJobInstruction.java
@@ -804,7 +804,7 @@ public class MRJobInstruction extends Instruction
 	 * @return array of matrix objects
 	 */
 	public MatrixObject[] extractInputMatrices(ExecutionContext ec) {
-		ArrayList<MatrixObject> inputmat = new ArrayList<MatrixObject>();
+		ArrayList<MatrixObject> inputmat = new ArrayList<>();
 		inputDataTypes = new DataType[inputVars.length];
 		for ( int i=0; i < inputVars.length; i++ ) {
 			Data d = ec.getVariable(inputVars[i]);
@@ -1094,7 +1094,7 @@ public class MRJobInstruction extends Instruction
 		byte sharedIx = 0;
 		
 		//compute input index map (based on distinct filenames)
-		HashMap<String, Byte> inMap = new HashMap<String, Byte>();
+		HashMap<String, Byte> inMap = new HashMap<>();
 		for( int i=0; i<inputs.length; i++ )
 			inMap.put(inputs[i], (byte) i);
 		
@@ -1106,7 +1106,7 @@ public class MRJobInstruction extends Instruction
 		byte lenInputs = (byte)(inputs.length + that.inputs.length - sharedIx);
 		
 		//compute transition index map for instruction 1
-		HashMap<Byte, Byte> transMap1 = new HashMap<Byte,Byte>();
+		HashMap<Byte, Byte> transMap1 = new HashMap<>();
 		for( int i=0; i<inputs.length; i++ )
 			transMap1.put((byte)i, (byte)i);
 		for( int i=inputs.length; i<=maxIxInst1; i++ ) //remap intermediates and 
@@ -1115,7 +1115,7 @@ public class MRJobInstruction extends Instruction
 		}
 			
 		//compute transition index max for instruction 2
-		HashMap<Byte, Byte> transMap2 = new HashMap<Byte,Byte>();
+		HashMap<Byte, Byte> transMap2 = new HashMap<>();
 		byte nextIX = (byte)inputs.length;
 		for( int i=0; i<that.inputs.length; i++ ) {
 			if( !inMap.containsKey(that.inputs[i]) )

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/cp/BreakPointInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/cp/BreakPointInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/cp/BreakPointInstruction.java
index fd3da68..1e4625a 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/cp/BreakPointInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/cp/BreakPointInstruction.java
@@ -33,7 +33,7 @@ import org.apache.sysml.runtime.instructions.Instruction;
 public class BreakPointInstruction extends Instruction
 {
 
-	public enum BPINSTRUCTION_STATUS { INVISIBLE, ENABLED, DISABLED };
+	public enum BPINSTRUCTION_STATUS { INVISIBLE, ENABLED, DISABLED }
 	
 	private BPINSTRUCTION_STATUS bpStatus; //indicates breakpoint status	
 	private String location=null; //namespace and name of function containing breakpoint

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/runtime/instructions/cp/CPInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/cp/CPInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/cp/CPInstruction.java
index 3294384..46251e9 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/cp/CPInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/cp/CPInstruction.java
@@ -35,7 +35,7 @@ public abstract class CPInstruction extends Instruction
 		BuiltinMultiple, MultiReturnParameterizedBuiltin, ParameterizedBuiltin, MultiReturnBuiltin, 
 		Builtin, Reorg, RelationalBinary, Variable, External, Append, Rand, QSort, QPick, 
 		MatrixIndexing, MMTSJ, PMMJ, MMChain, MatrixReshape, Partition, Compression, SpoofFused,
-		StringInit, CentralMoment, Covariance, UaggOuterChain, Convolution };
+		StringInit, CentralMoment, Covariance, UaggOuterChain, Convolution }
 	
 	protected CPINSTRUCTION_TYPE _cptype;
 	protected Operator _optr;


[6/7] systemml git commit: [MINOR] Cleanup various issues raised by static code analysis, part 1

Posted by mb...@apache.org.
http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBased.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBased.java b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBased.java
index f67604d..d01ffe2 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBased.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBased.java
@@ -114,7 +114,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection
 	private static void createAndAddMultiAggPlans(CPlanMemoTable memo, HashSet<Long> partition, HashSet<Long> R)
 	{
 		//create index of plans that reference full aggregates to avoid circular dependencies
-		HashSet<Long> refHops = new HashSet<Long>();
+		HashSet<Long> refHops = new HashSet<>();
 		for( Entry<Long, List<MemoTableEntry>> e : memo.getPlans().entrySet() )
 			if( !e.getValue().isEmpty() ) {
 				Hop hop = memo.getHopRefs().get(e.getKey());
@@ -124,7 +124,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection
 		
 		//find all full aggregations (the fact that they are in the same partition guarantees 
 		//that they also have common subexpressions, also full aggregations are by def root nodes)
-		ArrayList<Long> fullAggs = new ArrayList<Long>();
+		ArrayList<Long> fullAggs = new ArrayList<>();
 		for( Long hopID : R ) {
 			Hop root = memo.getHopRefs().get(hopID);
 			if( !refHops.contains(hopID) && isMultiAggregateRoot(root) )
@@ -159,7 +159,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection
 	private void createAndAddMultiAggPlans(CPlanMemoTable memo, ArrayList<Hop> roots)
 	{
 		//collect full aggregations as initial set of candidates
-		HashSet<Long> fullAggs = new HashSet<Long>();
+		HashSet<Long> fullAggs = new HashSet<>();
 		Hop.resetVisitStatus(roots);
 		for( Hop hop : roots )
 			rCollectFullAggregates(hop, fullAggs);
@@ -179,7 +179,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection
 		
 		//collect information for all candidates 
 		//(subsumed aggregations, and inputs to fused operators) 
-		List<AggregateInfo> aggInfos = new ArrayList<AggregateInfo>();
+		List<AggregateInfo> aggInfos = new ArrayList<>();
 		for( Long hopID : fullAggs ) {
 			Hop aggHop = memo.getHopRefs().get(hopID);
 			AggregateInfo tmp = new AggregateInfo(aggHop);
@@ -272,7 +272,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection
 		//they to not have potentially transitive parent child references
 		for( int i=0; ret && i<3; i++ ) 
 			if( me.isPlanRef(i) ) {
-				HashSet<Long> probe = new HashSet<Long>();
+				HashSet<Long> probe = new HashSet<>();
 				for( int j=0; j<3; j++ )
 					if( i != j )
 						probe.add(me.input(j));
@@ -331,7 +331,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection
 			if( me.type == TemplateType.ROW && memo.contains(hopID, TemplateType.CELL)
 				&& isRowTemplateWithoutAgg(memo, memo.getHopRefs().get(hopID), new HashSet<Long>())) {
 				List<MemoTableEntry> blacklist = memo.get(hopID, TemplateType.ROW); 
-				memo.remove(memo.getHopRefs().get(hopID), new HashSet<MemoTableEntry>(blacklist));
+				memo.remove(memo.getHopRefs().get(hopID), new HashSet<>(blacklist));
 				if( LOG.isTraceEnabled() ) {
 					LOG.trace("Removed row memo table entries w/o aggregation: "
 						+ Arrays.toString(blacklist.toArray(new MemoTableEntry[0])));
@@ -368,7 +368,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection
 			//via skip ahead in below enumeration algorithm
 			
 			//obtain hop compute costs per cell once
-			HashMap<Long, Double> computeCosts = new HashMap<Long, Double>();
+			HashMap<Long, Double> computeCosts = new HashMap<>();
 			for( Long hopID : R )
 				rGetComputeCosts(memo.getHopRefs().get(hopID), partition, computeCosts);
 			
@@ -401,11 +401,11 @@ public class PlanSelectionFuseCostBased extends PlanSelection
 			}
 			
 			//prune memo table wrt best plan and select plans
-			HashSet<Long> visited = new HashSet<Long>();
+			HashSet<Long> visited = new HashSet<>();
 			for( Long hopID : R )
 				rPruneSuboptimalPlans(memo, memo.getHopRefs().get(hopID), 
 					visited, partition, M, bestPlan);
-			HashSet<Long> visited2 = new HashSet<Long>();
+			HashSet<Long> visited2 = new HashSet<>();
 			for( Long hopID : R )
 				rPruneInvalidPlans(memo, memo.getHopRefs().get(hopID), 
 					visited2, partition, M, bestPlan);
@@ -532,7 +532,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection
 		//READ costs by the input sizes, and COMPUTE by operation specific FLOP
 		//counts times number of cells of main input, disregarding sparsity for now.
 		
-		HashSet<Pair<Long,Long>> visited = new HashSet<Pair<Long,Long>>();
+		HashSet<Pair<Long,Long>> visited = new HashSet<>();
 		double costs = 0;
 		for( Long hopID : R )
 			costs += rGetPlanCosts(memo, memo.getHopRefs().get(hopID), 
@@ -788,7 +788,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection
 		public final long ID;
 		public final double outSize; 
 		public double computeCosts = 0;
-		public final HashMap<Long, Double> inSizes = new HashMap<Long, Double>();
+		public final HashMap<Long, Double> inSizes = new HashMap<>();
 		
 		public CostVector(double outputSize) {
 			ID = COST_ID.getNextID();
@@ -816,10 +816,10 @@ public class PlanSelectionFuseCostBased extends PlanSelection
 	
 	private static class AggregateInfo {
 		public final HashMap<Long,Hop> _aggregates;
-		public final HashSet<Long> _inputAggs = new HashSet<Long>();
-		public final HashSet<Long> _fusedInputs = new HashSet<Long>();
+		public final HashSet<Long> _inputAggs = new HashSet<>();
+		public final HashSet<Long> _fusedInputs = new HashSet<>();
 		public AggregateInfo(Hop aggregate) {
-			_aggregates = new HashMap<Long, Hop>();
+			_aggregates = new HashMap<>();
 			_aggregates.put(aggregate.getHopID(), aggregate);
 		}
 		public void addInputAggregate(long hopID) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBasedV2.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBasedV2.java b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBasedV2.java
index 31e8427..4b214d0 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBasedV2.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBasedV2.java
@@ -141,7 +141,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection
 		}
 		else {
 			//obtain hop compute costs per cell once
-			HashMap<Long, Double> computeCosts = new HashMap<Long, Double>();
+			HashMap<Long, Double> computeCosts = new HashMap<>();
 			for( Long hopID : part.getPartition() )
 				getComputeCosts(memo.getHopRefs().get(hopID), computeCosts);
 			
@@ -160,11 +160,11 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection
 					part.getMatPointsExt(), 0, Double.MAX_VALUE);
 			
 			//prune memo table wrt best plan and select plans
-			HashSet<Long> visited = new HashSet<Long>();
+			HashSet<Long> visited = new HashSet<>();
 			for( Long hopID : part.getRoots() )
 				rPruneSuboptimalPlans(memo, memo.getHopRefs().get(hopID), 
 					visited, part, part.getMatPointsExt(), bestPlan);
-			HashSet<Long> visited2 = new HashSet<Long>();
+			HashSet<Long> visited2 = new HashSet<>();
 			for( Long hopID : part.getRoots() )
 				rPruneInvalidPlans(memo, memo.getHopRefs().get(hopID), 
 					visited2, part, bestPlan);
@@ -358,7 +358,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection
 	private static void createAndAddMultiAggPlans(CPlanMemoTable memo, HashSet<Long> partition, HashSet<Long> R)
 	{
 		//create index of plans that reference full aggregates to avoid circular dependencies
-		HashSet<Long> refHops = new HashSet<Long>();
+		HashSet<Long> refHops = new HashSet<>();
 		for( Entry<Long, List<MemoTableEntry>> e : memo.getPlans().entrySet() )
 			if( !e.getValue().isEmpty() ) {
 				Hop hop = memo.getHopRefs().get(e.getKey());
@@ -368,7 +368,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection
 		
 		//find all full aggregations (the fact that they are in the same partition guarantees 
 		//that they also have common subexpressions, also full aggregations are by def root nodes)
-		ArrayList<Long> fullAggs = new ArrayList<Long>();
+		ArrayList<Long> fullAggs = new ArrayList<>();
 		for( Long hopID : R ) {
 			Hop root = memo.getHopRefs().get(hopID);
 			if( !refHops.contains(hopID) && isMultiAggregateRoot(root) )
@@ -403,7 +403,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection
 	private void createAndAddMultiAggPlans(CPlanMemoTable memo, ArrayList<Hop> roots)
 	{
 		//collect full aggregations as initial set of candidates
-		HashSet<Long> fullAggs = new HashSet<Long>();
+		HashSet<Long> fullAggs = new HashSet<>();
 		Hop.resetVisitStatus(roots);
 		for( Hop hop : roots )
 			rCollectFullAggregates(hop, fullAggs);
@@ -423,7 +423,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection
 		
 		//collect information for all candidates 
 		//(subsumed aggregations, and inputs to fused operators) 
-		List<AggregateInfo> aggInfos = new ArrayList<AggregateInfo>();
+		List<AggregateInfo> aggInfos = new ArrayList<>();
 		for( Long hopID : fullAggs ) {
 			Hop aggHop = memo.getHopRefs().get(hopID);
 			AggregateInfo tmp = new AggregateInfo(aggHop);
@@ -516,7 +516,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection
 		//they to not have potentially transitive parent child references
 		for( int i=0; ret && i<3; i++ ) 
 			if( me.isPlanRef(i) ) {
-				HashSet<Long> probe = new HashSet<Long>();
+				HashSet<Long> probe = new HashSet<>();
 				for( int j=0; j<3; j++ )
 					if( i != j )
 						probe.add(me.input(j));
@@ -613,7 +613,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection
 						&& HopRewriteUtils.isTransposeOperation(in));
 				if( isSpark && !validNcol ) {
 					List<MemoTableEntry> blacklist = memo.get(hopID, TemplateType.ROW);
-					memo.remove(memo.getHopRefs().get(hopID), new HashSet<MemoTableEntry>(blacklist));
+					memo.remove(memo.getHopRefs().get(hopID), new HashSet<>(blacklist));
 					if( !memo.contains(hopID) )
 						memo.removeAllRefTo(hopID);
 					if( LOG.isTraceEnabled() ) {
@@ -630,7 +630,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection
 			if( me != null && me.type == TemplateType.ROW && memo.contains(hopID, TemplateType.CELL)
 				&& isRowTemplateWithoutAggOrVects(memo, memo.getHopRefs().get(hopID), new HashSet<Long>())) {
 				List<MemoTableEntry> blacklist = memo.get(hopID, TemplateType.ROW); 
-				memo.remove(memo.getHopRefs().get(hopID), new HashSet<MemoTableEntry>(blacklist));
+				memo.remove(memo.getHopRefs().get(hopID), new HashSet<>(blacklist));
 				if( LOG.isTraceEnabled() ) {
 					LOG.trace("Removed row memo table entries w/o aggregation: "
 						+ Arrays.toString(blacklist.toArray(new MemoTableEntry[0])));
@@ -1015,7 +1015,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection
 		public final long ID;
 		public final double outSize; 
 		public double computeCosts = 0;
-		public final HashMap<Long, Double> inSizes = new HashMap<Long, Double>();
+		public final HashMap<Long, Double> inSizes = new HashMap<>();
 		
 		public CostVector(double outputSize) {
 			ID = COST_ID.getNextID();
@@ -1066,10 +1066,10 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection
 	
 	private static class AggregateInfo {
 		public final HashMap<Long,Hop> _aggregates;
-		public final HashSet<Long> _inputAggs = new HashSet<Long>();
-		public final HashSet<Long> _fusedInputs = new HashSet<Long>();
+		public final HashSet<Long> _inputAggs = new HashSet<>();
+		public final HashSet<Long> _fusedInputs = new HashSet<>();
 		public AggregateInfo(Hop aggregate) {
-			_aggregates = new HashMap<Long, Hop>();
+			_aggregates = new HashMap<>();
 			_aggregates.put(aggregate.getHopID(), aggregate);
 		}
 		public void addInputAggregate(long hopID) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseNoRedundancy.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseNoRedundancy.java b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseNoRedundancy.java
index 759a903..2fc90d7 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseNoRedundancy.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseNoRedundancy.java
@@ -60,7 +60,7 @@ public class PlanSelectionFuseNoRedundancy extends PlanSelection
 		
 		//step 0: remove plans that refer to a common partial plan
 		if( memo.contains(current.getHopID()) ) {
-			HashSet<MemoTableEntry> rmSet = new HashSet<MemoTableEntry>();
+			HashSet<MemoTableEntry> rmSet = new HashSet<>();
 			List<MemoTableEntry> hopP = memo.get(current.getHopID());
 			for( MemoTableEntry e1 : hopP )
 				for( int i=0; i<3; i++ )
@@ -71,7 +71,7 @@ public class PlanSelectionFuseNoRedundancy extends PlanSelection
 		
 		//step 1: prune subsumed plans of same type
 		if( memo.contains(current.getHopID()) ) {
-			HashSet<MemoTableEntry> rmSet = new HashSet<MemoTableEntry>();
+			HashSet<MemoTableEntry> rmSet = new HashSet<>();
 			List<MemoTableEntry> hopP = memo.get(current.getHopID());
 			for( MemoTableEntry e1 : hopP )
 				for( MemoTableEntry e2 : hopP )

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/opt/ReachabilityGraph.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/opt/ReachabilityGraph.java b/src/main/java/org/apache/sysml/hops/codegen/opt/ReachabilityGraph.java
index fb7840b..90079a3 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/opt/ReachabilityGraph.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/opt/ReachabilityGraph.java
@@ -333,6 +333,15 @@ public class ReachabilityGraph
 		}
 		
 		@Override
+		public int hashCode() {
+			return Arrays.hashCode(new int[]{
+				_inputs.hashCode(),
+				Long.hashCode(_ID),
+				_p.hashCode()
+			});
+		}
+		
+		@Override
 		public boolean equals(Object o) {
 			if( !(o instanceof NodeLink) )
 				return false;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/template/CPlanCSERewriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/template/CPlanCSERewriter.java b/src/main/java/org/apache/sysml/hops/codegen/template/CPlanCSERewriter.java
index 9916c0f..3d12cfe 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/template/CPlanCSERewriter.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/template/CPlanCSERewriter.java
@@ -48,7 +48,7 @@ public class CPlanCSERewriter
 			rSetStrictDataNodeComparision(out, true);
 		
 		//step 2: perform common subexpression elimination
-		HashMap<CNode,CNode> cseSet = new HashMap<CNode,CNode>();
+		HashMap<CNode,CNode> cseSet = new HashMap<>();
 		tpl.resetVisitStatusOutputs();
 		for( CNode out : outputs )
 			rEliminateCommonSubexpression(out, cseSet);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/template/CPlanMemoTable.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/template/CPlanMemoTable.java b/src/main/java/org/apache/sysml/hops/codegen/template/CPlanMemoTable.java
index 6de3ec6..30672f3 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/template/CPlanMemoTable.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/template/CPlanMemoTable.java
@@ -51,9 +51,9 @@ public class CPlanMemoTable
 	protected HashSet<Long> _plansBlacklist;
 	
 	public CPlanMemoTable() {
-		_plans = new HashMap<Long, List<MemoTableEntry>>();
-		_hopRefs = new HashMap<Long, Hop>();
-		_plansBlacklist = new HashSet<Long>();
+		_plans = new HashMap<>();
+		_hopRefs = new HashMap<>();
+		_plansBlacklist = new HashSet<>();
 	}
 	
 	public HashMap<Long, List<MemoTableEntry>> getPlans() {
@@ -182,7 +182,7 @@ public class CPlanMemoTable
 		//if single consumer of input; however this only applies to fusion
 		//heuristic that only consider materialization points)
 		if( pruneDominated ) {
-			HashSet<MemoTableEntry> rmList = new HashSet<MemoTableEntry>();
+			HashSet<MemoTableEntry> rmList = new HashSet<>();
 			List<MemoTableEntry> list = _plans.get(hopID);
 			Hop hop = _hopRefs.get(hopID);
 			for( MemoTableEntry e1 : list )
@@ -210,7 +210,7 @@ public class CPlanMemoTable
 			LOG.trace("#1: Memo before plan selection ("+size()+" plans)\n"+this);
 		
 		//build index of referenced entries
-		HashSet<Long> ix = new HashSet<Long>();
+		HashSet<Long> ix = new HashSet<>();
 		for( Entry<Long, List<MemoTableEntry>> e : _plans.entrySet() )
 			for( MemoTableEntry me : e.getValue() ) {
 				ix.add(me.input1); 
@@ -433,7 +433,7 @@ public class CPlanMemoTable
 	
 	public static class MemoTableEntrySet 
 	{
-		public ArrayList<MemoTableEntry> plans = new ArrayList<MemoTableEntry>();
+		public ArrayList<MemoTableEntry> plans = new ArrayList<>();
 		
 		public MemoTableEntrySet(Hop hop, Hop c, TemplateBase tpl) {
 			int pos = (c != null) ? hop.getInput().indexOf(c) : -1;
@@ -445,7 +445,7 @@ public class CPlanMemoTable
 		public void crossProduct(int pos, Long... refs) {
 			if( refs.length==1 && refs[0] == -1 )
 				return; //unmodified plan set
-			ArrayList<MemoTableEntry> tmp = new ArrayList<MemoTableEntry>();
+			ArrayList<MemoTableEntry> tmp = new ArrayList<>();
 			for( MemoTableEntry me : plans )
 				for( Long ref : refs )
 					tmp.add(new MemoTableEntry(me.type, (pos==0)?ref:me.input1, 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java
index b075c58..2b29ce2 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java
@@ -115,8 +115,8 @@ public class TemplateCell extends TemplateBase
 	public Pair<Hop[], CNodeTpl> constructCplan(Hop hop, CPlanMemoTable memo, boolean compileLiterals) 
 	{
 		//recursively process required cplan output
-		HashSet<Hop> inHops = new HashSet<Hop>();
-		HashMap<Long, CNode> tmp = new HashMap<Long, CNode>();
+		HashSet<Hop> inHops = new HashSet<>();
+		HashMap<Long, CNode> tmp = new HashMap<>();
 		hop.resetVisitStatus();
 		rConstructCplan(hop, memo, tmp, inHops, compileLiterals);
 		hop.resetVisitStatus();
@@ -129,7 +129,7 @@ public class TemplateCell extends TemplateBase
 			.sorted(new HopInputComparator()).toArray(Hop[]::new);
 		
 		//construct template node
-		ArrayList<CNode> inputs = new ArrayList<CNode>();
+		ArrayList<CNode> inputs = new ArrayList<>();
 		for( Hop in : sinHops )
 			inputs.add(tmp.get(in.getHopID()));
 		CNode output = tmp.get(hop.getHopID());
@@ -142,7 +142,7 @@ public class TemplateCell extends TemplateBase
 		tpl.setBeginLine(hop.getBeginLine());
 		
 		// return cplan instance
-		return new Pair<Hop[],CNodeTpl>(sinHops, tpl);
+		return new Pair<>(sinHops, tpl);
 	}
 	
 	protected void rConstructCplan(Hop hop, CPlanMemoTable memo, HashMap<Long, CNode> tmp, HashSet<Hop> inHops, boolean compileLiterals) 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/template/TemplateMultiAgg.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateMultiAgg.java b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateMultiAgg.java
index e9f4cd2..9b114b0 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateMultiAgg.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateMultiAgg.java
@@ -75,15 +75,15 @@ public class TemplateMultiAgg extends TemplateCell
 	{
 		//get all root nodes for multi aggregation
 		MemoTableEntry multiAgg = memo.getBest(hop.getHopID(), TemplateType.MAGG);
-		ArrayList<Hop> roots = new ArrayList<Hop>();
+		ArrayList<Hop> roots = new ArrayList<>();
 		for( int i=0; i<3; i++ )
 			if( multiAgg.isPlanRef(i) )
 				roots.add(memo._hopRefs.get(multiAgg.input(i)));
 		Hop.resetVisitStatus(roots);
 		
 		//recursively process required cplan outputs
-		HashSet<Hop> inHops = new HashSet<Hop>();
-		HashMap<Long, CNode> tmp = new HashMap<Long, CNode>();
+		HashSet<Hop> inHops = new HashSet<>();
+		HashMap<Long, CNode> tmp = new HashMap<>();
 		for( Hop root : roots ) //use celltpl cplan construction
 			super.rConstructCplan(root, memo, tmp, inHops, compileLiterals);
 		Hop.resetVisitStatus(roots);
@@ -97,11 +97,11 @@ public class TemplateMultiAgg extends TemplateCell
 			.sorted(new HopInputComparator(shared)).toArray(Hop[]::new);
 		
 		//construct template node
-		ArrayList<CNode> inputs = new ArrayList<CNode>();
+		ArrayList<CNode> inputs = new ArrayList<>();
 		for( Hop in : sinHops )
 			inputs.add(tmp.get(in.getHopID()));
-		ArrayList<CNode> outputs = new ArrayList<CNode>();
-		ArrayList<AggOp> aggOps = new ArrayList<AggOp>();
+		ArrayList<CNode> outputs = new ArrayList<>();
+		ArrayList<AggOp> aggOps = new ArrayList<>();
 		for( Hop root : roots ) {
 			CNode node = tmp.get(root.getHopID());
 			if( node instanceof CNodeData //add indexing ops for sideways data inputs
@@ -119,7 +119,7 @@ public class TemplateMultiAgg extends TemplateCell
 		tpl.setBeginLine(hop.getBeginLine());
 		
 		// return cplan instance
-		return new Pair<Hop[],CNodeTpl>(sinHops, tpl);
+		return new Pair<>(sinHops, tpl);
 	}
 	
 	private Hop getSparseSafeSharedInput(ArrayList<Hop> roots, HashSet<Hop> inHops) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/template/TemplateOuterProduct.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateOuterProduct.java b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateOuterProduct.java
index 3756447..cac9f9b 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateOuterProduct.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateOuterProduct.java
@@ -106,9 +106,9 @@ public class TemplateOuterProduct extends TemplateBase {
 	public Pair<Hop[], CNodeTpl> constructCplan(Hop hop, CPlanMemoTable memo, boolean compileLiterals) 
 	{
 		//recursively process required cplan output
-		HashSet<Hop> inHops = new HashSet<Hop>();
-		HashMap<String,Hop> inHops2 = new HashMap<String, Hop>();
-		HashMap<Long, CNode> tmp = new HashMap<Long, CNode>();
+		HashSet<Hop> inHops = new HashSet<>();
+		HashMap<String,Hop> inHops2 = new HashMap<>();
+		HashMap<Long, CNode> tmp = new HashMap<>();
 		hop.resetVisitStatus();
 		rConstructCplan(hop, memo, tmp, inHops, inHops2, compileLiterals);
 		hop.resetVisitStatus();
@@ -117,13 +117,13 @@ public class TemplateOuterProduct extends TemplateBase {
 		Hop X = inHops2.get("_X");
 		Hop U = inHops2.get("_U");
 		Hop V = inHops2.get("_V");
-		LinkedList<Hop> sinHops = new LinkedList<Hop>(inHops);
+		LinkedList<Hop> sinHops = new LinkedList<>(inHops);
 		sinHops.remove(V); sinHops.addFirst(V);
 		sinHops.remove(U); sinHops.addFirst(U);
 		sinHops.remove(X); sinHops.addFirst(X);
 		
 		//construct template node
-		ArrayList<CNode> inputs = new ArrayList<CNode>();
+		ArrayList<CNode> inputs = new ArrayList<>();
 		for( Hop in : sinHops )
 			if( in != null )
 				inputs.add(tmp.get(in.getHopID()));
@@ -135,8 +135,7 @@ public class TemplateOuterProduct extends TemplateBase {
 			&& tpl.getOutProdType()==OutProdType.LEFT_OUTER_PRODUCT);
 		tpl.setBeginLine(hop.getBeginLine());
 		
-		
-		return new Pair<Hop[],CNodeTpl>(sinHops.toArray(new Hop[0]), tpl);
+		return new Pair<>(sinHops.toArray(new Hop[0]), tpl);
 	}
 	
 	private void rConstructCplan(Hop hop, CPlanMemoTable memo, HashMap<Long, CNode> tmp, HashSet<Hop> inHops, HashMap<String, Hop> inHops2, boolean compileLiterals) 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/template/TemplateRow.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateRow.java b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateRow.java
index 1aaa84f..5f14d6b 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateRow.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateRow.java
@@ -175,9 +175,9 @@ public class TemplateRow extends TemplateBase
 	@Override
 	public Pair<Hop[], CNodeTpl> constructCplan(Hop hop, CPlanMemoTable memo, boolean compileLiterals) {
 		//recursively process required cplan output
-		HashSet<Hop> inHops = new HashSet<Hop>();
-		HashMap<String, Hop> inHops2 = new HashMap<String,Hop>();
-		HashMap<Long, CNode> tmp = new HashMap<Long, CNode>();
+		HashSet<Hop> inHops = new HashSet<>();
+		HashMap<String, Hop> inHops2 = new HashMap<>();
+		HashMap<Long, CNode> tmp = new HashMap<>();
 		hop.resetVisitStatus();
 		rConstructCplan(hop, memo, tmp, inHops, inHops2, compileLiterals);
 		hop.resetVisitStatus();
@@ -189,7 +189,7 @@ public class TemplateRow extends TemplateBase
 		inHops2.putIfAbsent("X", sinHops[0]); //robustness special cases
 		
 		//construct template node
-		ArrayList<CNode> inputs = new ArrayList<CNode>();
+		ArrayList<CNode> inputs = new ArrayList<>();
 		for( Hop in : sinHops )
 			inputs.add(tmp.get(in.getHopID()));
 		CNode output = tmp.get(hop.getHopID());
@@ -205,7 +205,7 @@ public class TemplateRow extends TemplateBase
 		tpl.setBeginLine(hop.getBeginLine());
 		
 		// return cplan instance
-		return new Pair<Hop[],CNodeTpl>(sinHops, tpl);
+		return new Pair<>(sinHops, tpl);
 	}
 
 	private void rConstructCplan(Hop hop, CPlanMemoTable memo, HashMap<Long, CNode> tmp, HashSet<Hop> inHops, HashMap<String, Hop> inHops2, boolean compileLiterals) 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/cost/CostEstimationWrapper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/cost/CostEstimationWrapper.java b/src/main/java/org/apache/sysml/hops/cost/CostEstimationWrapper.java
index 52a966e..a87221f 100644
--- a/src/main/java/org/apache/sysml/hops/cost/CostEstimationWrapper.java
+++ b/src/main/java/org/apache/sysml/hops/cost/CostEstimationWrapper.java
@@ -38,7 +38,7 @@ public class CostEstimationWrapper
 	public enum CostType { 
 		NUM_MRJOBS, //based on number of MR jobs, [number MR jobs]
 		STATIC // based on FLOPS, read/write, etc, [time in sec]
-	};
+	}
 	
 	private static final boolean LDEBUG = false; //internal local debug level
 	private static final Log LOG = LogFactory.getLog(CostEstimationWrapper.class.getName());
@@ -72,7 +72,7 @@ public class CostEstimationWrapper
 	{
 		Timing time = new Timing(true);
 		
-		HashMap<String,VarStats> stats = new HashMap<String, VarStats>();		
+		HashMap<String,VarStats> stats = new HashMap<>();
 		LocalVariableMap vars = (ec!=null)? ec.getVariables() : new LocalVariableMap(); 
 		
 		double costs = _costEstim.getTimeEstimate(rtprog, vars, stats);
@@ -85,7 +85,7 @@ public class CostEstimationWrapper
 	{
 		Timing time = new Timing(true);
 		
-		HashMap<String,VarStats> stats = new HashMap<String, VarStats>();		
+		HashMap<String,VarStats> stats = new HashMap<>();
 		LocalVariableMap vars = (ec!=null)? ec.getVariables() : new LocalVariableMap(); 
 		
 		double costs = _costEstim.getTimeEstimate(pb, vars, stats, recursive);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/cost/CostEstimator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/cost/CostEstimator.java b/src/main/java/org/apache/sysml/hops/cost/CostEstimator.java
index 6eff99b..9f46eb0 100644
--- a/src/main/java/org/apache/sysml/hops/cost/CostEstimator.java
+++ b/src/main/java/org/apache/sysml/hops/cost/CostEstimator.java
@@ -351,7 +351,7 @@ public abstract class CostEstimator
 		}
 		
 		//compute intermediate result indices
-		HashMap<Byte,MatrixCharacteristics> dims = new HashMap<Byte, MatrixCharacteristics>();
+		HashMap<Byte,MatrixCharacteristics> dims = new HashMap<>();
 		//populate input indices
 		for( Entry<String,VarStats> e : stats.entrySet() )
 		{

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/cost/CostEstimatorStaticRuntime.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/cost/CostEstimatorStaticRuntime.java b/src/main/java/org/apache/sysml/hops/cost/CostEstimatorStaticRuntime.java
index 7cdde47..ef89600 100644
--- a/src/main/java/org/apache/sysml/hops/cost/CostEstimatorStaticRuntime.java
+++ b/src/main/java/org/apache/sysml/hops/cost/CostEstimatorStaticRuntime.java
@@ -480,7 +480,7 @@ public class CostEstimatorStaticRuntime extends CostEstimator
 		//note: this is a simplified version of MRJobConfiguration.setUpOutputIndexesForMapper
 		
 		//map indices
-		HashSet<Byte> ixMap = new HashSet<Byte>();
+		HashSet<Byte> ixMap = new HashSet<>();
 		for( byte ix : inIx )
 			ixMap.add(ix);
 		
@@ -501,7 +501,7 @@ public class CostEstimatorStaticRuntime extends CostEstimator
 		}
 		
 		//reduce indices
-		HashSet<Byte> ixRed = new HashSet<Byte>();
+		HashSet<Byte> ixRed = new HashSet<>();
 		for( byte ix : retIx )
 			ixRed.add(ix);
 	
@@ -601,7 +601,7 @@ public class CostEstimatorStaticRuntime extends CostEstimator
 	private int getDistcacheIndex(String inst) 
 		throws DMLRuntimeException
 	{
-		ArrayList<Byte> indexes = new ArrayList<Byte>();
+		ArrayList<Byte> indexes = new ArrayList<>();
 		
 		if( InstructionUtils.isDistributedCacheUsed(inst) ) {
 			MRInstruction mrinst = MRInstructionParser.parseSingleInstruction(inst);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java b/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java
index 7e043be..73762ce 100644
--- a/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java
+++ b/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java
@@ -122,7 +122,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer
 		
 		//Step 2: dynamic programming plan generation
 		//(finally, pick optimal root plans over all interesting property sets)
-		ArrayList<Plan> rootPlans = new ArrayList<Plan>(); 
+		ArrayList<Plan> rootPlans = new ArrayList<>(); 
 		for( GDFNode node : roots ) {
 			PlanSet ps = enumOpt(node, _memo, initCosts);
 			Plan optPlan = ps.getPlanWithMinCosts();
@@ -131,7 +131,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer
 		long enumPlanMismatch = getPlanMismatches();
 		
 		//check for final containment of independent roots and pick optimal
-		HashMap<Long, Plan> memo = new HashMap<Long,Plan>();
+		HashMap<Long, Plan> memo = new HashMap<>();
 		resetPlanMismatches();
 		for( Plan p : rootPlans )
 			rSetRuntimePlanConfig(p, memo);
@@ -208,7 +208,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer
 	private static PlanSet enumNodePlans( GDFNode node, MemoStructure memo, double maxCosts ) 
 		throws DMLRuntimeException
 	{
-		ArrayList<Plan> plans = new ArrayList<Plan>();
+		ArrayList<Plan> plans = new ArrayList<>();
 		ExecType CLUSTER = OptimizerUtils.isSparkExecutionMode() ? ExecType.SPARK : ExecType.MR;
 		
 		//ENUMERATE HOP PLANS
@@ -331,7 +331,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer
 	
 	private static void pruneInvalidPlans( PlanSet plans )
 	{
-		ArrayList<Plan> valid = new ArrayList<Plan>();
+		ArrayList<Plan> valid = new ArrayList<>();
 		
 		//check each plan in planset for validity
 		for( Plan plan : plans.getPlans() )
@@ -381,7 +381,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer
 		}
 		
 		//build and probe for optimal plans (hash-groupby on IPC, min costs) 
-		HashMap<InterestingProperties, Plan> probeMap = new HashMap<InterestingProperties, Plan>();
+		HashMap<InterestingProperties, Plan> probeMap = new HashMap<>();
 		for( Plan p : plans.getPlans() )
 		{
 			//max cost pruning filter (branch-and-bound)
@@ -407,7 +407,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer
 		}
 		
 		//copy over plans per IPC into one plan set
-		ArrayList<Plan> optimal = new ArrayList<Plan>(probeMap.values());
+		ArrayList<Plan> optimal = new ArrayList<>(probeMap.values());
 		
 		int sizeBefore = plans.size();
 		int sizeAfter = optimal.size();
@@ -451,7 +451,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer
 				ArrayList<Hop> oldRoots = pb.getStatementBlock().get_hops();
 				Hop tmpHop = null;
 				if( !(currentHop instanceof DataOp && ((DataOp)currentHop).isWrite()) ){
-					ArrayList<Hop> newRoots = new ArrayList<Hop>();
+					ArrayList<Hop> newRoots = new ArrayList<>();
 					tmpHop = new DataOp("_tmp", currentHop.getDataType(), currentHop.getValueType(), currentHop, DataOpTypes.TRANSIENTWRITE, "tmp");
 					tmpHop.setVisited(); //ensure recursive visitstatus reset on recompile
 					newRoots.add(tmpHop);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/globalopt/MemoStructure.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/globalopt/MemoStructure.java b/src/main/java/org/apache/sysml/hops/globalopt/MemoStructure.java
index 5ee5b16..056db69 100644
--- a/src/main/java/org/apache/sysml/hops/globalopt/MemoStructure.java
+++ b/src/main/java/org/apache/sysml/hops/globalopt/MemoStructure.java
@@ -47,8 +47,8 @@ public class MemoStructure
 	
 	public MemoStructure()
 	{
-		_entries = new HashMap<Long, PlanSet>();
-		_nodeIDs = new HashMap<Long, Long>();
+		_entries = new HashMap<>();
+		_nodeIDs = new HashMap<>();
 	}
 	
 	///////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/globalopt/Plan.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/globalopt/Plan.java b/src/main/java/org/apache/sysml/hops/globalopt/Plan.java
index f8f06dc..d62c0fc 100644
--- a/src/main/java/org/apache/sysml/hops/globalopt/Plan.java
+++ b/src/main/java/org/apache/sysml/hops/globalopt/Plan.java
@@ -53,7 +53,7 @@ public class Plan
 		if( childs != null && !childs.isEmpty() )
 			_childs = childs;
 		else
-			_childs = new ArrayList<Plan>();
+			_childs = new ArrayList<>();
 	}
 	
 	public Plan( Plan p )
@@ -65,9 +65,9 @@ public class Plan
 		_costs = p._costs;
 		
 		if( p._childs != null && !p._childs.isEmpty() )
-			_childs = new ArrayList<Plan>(p._childs);
+			_childs = new ArrayList<>(p._childs);
 		else
-			_childs = new ArrayList<Plan>();
+			_childs = new ArrayList<>();
 	}
 	
 	public GDFNode getNode()

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/globalopt/PlanSet.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/globalopt/PlanSet.java b/src/main/java/org/apache/sysml/hops/globalopt/PlanSet.java
index a6487e6..41ee5f9 100644
--- a/src/main/java/org/apache/sysml/hops/globalopt/PlanSet.java
+++ b/src/main/java/org/apache/sysml/hops/globalopt/PlanSet.java
@@ -27,12 +27,10 @@ import org.apache.sysml.hops.globalopt.gdfgraph.GDFNode.NodeType;
 
 public class PlanSet 
 {
-	
 	private ArrayList<Plan> _plans = null;
 	
-	public PlanSet()
-	{
-		_plans = new ArrayList<Plan>();
+	public PlanSet() {
+		_plans = new ArrayList<>();
 	}
 
 	public PlanSet(ArrayList<Plan> plans)
@@ -78,7 +76,7 @@ public class PlanSet
 			return pc;
 		}
 		
-		ArrayList<Plan> Pnew = new ArrayList<Plan>();  
+		ArrayList<Plan> Pnew = new ArrayList<>();  
 		
 		// create cross product of plansets between partial and child plans
 		for( Plan p : _plans )
@@ -97,7 +95,7 @@ public class PlanSet
 		String varname = (node.getNodeType()==NodeType.HOP_NODE) ? node.getHop().getName() :
 			            ((GDFCrossBlockNode)node).getName();
 		
-		ArrayList<Plan> Pnew = new ArrayList<Plan>();  
+		ArrayList<Plan> Pnew = new ArrayList<>();  
 		for( Plan p : _plans )
 			if( p.getNode().getHop()!=null 
 			   &&p.getNode().getHop().getName().equals(varname) )
@@ -110,7 +108,7 @@ public class PlanSet
 	
 	public PlanSet union( PlanSet ps )
 	{
-		ArrayList<Plan> Pnew = new ArrayList<Plan>(_plans);  
+		ArrayList<Plan> Pnew = new ArrayList<>(_plans);
 		for( Plan p : ps._plans )
 			Pnew.add( p );
 		

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFCrossBlockNode.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFCrossBlockNode.java b/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFCrossBlockNode.java
index b4767f9..52d988d 100644
--- a/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFCrossBlockNode.java
+++ b/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFCrossBlockNode.java
@@ -52,7 +52,7 @@ public class GDFCrossBlockNode extends GDFNode
 	{
 		super(hop, pb, null);
 		_type = NodeType.CROSS_BLOCK_NODE;
-		_inputs = new ArrayList<GDFNode>();
+		_inputs = new ArrayList<>();
 		_inputs.add( input );
 		
 		_cbtype = CrossBlockNodeType.PLAIN;
@@ -72,7 +72,7 @@ public class GDFCrossBlockNode extends GDFNode
 	{
 		super(hop, pb, null);
 		_type = NodeType.CROSS_BLOCK_NODE;
-		_inputs = new ArrayList<GDFNode>();
+		_inputs = new ArrayList<>();
 		_inputs.add( input1 );
 		_inputs.add( input2 );
 		

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFLoopNode.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFLoopNode.java b/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFLoopNode.java
index fb4a9af..010ca1d 100644
--- a/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFLoopNode.java
+++ b/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFLoopNode.java
@@ -33,7 +33,7 @@ public class GDFLoopNode extends GDFNode
 	
 	public GDFLoopNode( ProgramBlock pb, GDFNode predicate, HashMap<String, GDFNode> inputs, HashMap<String,GDFNode> outputs )
 	{
-		super(null, pb, new ArrayList<GDFNode>(inputs.values()));
+		super(null, pb, new ArrayList<>(inputs.values()));
 		_type = NodeType.LOOP_NODE;
 		_predicate = predicate;
 		_linputs = inputs;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java b/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java
index 8d52cc2..e768854 100644
--- a/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java
+++ b/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java
@@ -67,12 +67,12 @@ public class GraphBuilder
 	{
 		Timing time = new Timing(true);
 		
-		HashMap<String, GDFNode> roots = new HashMap<String, GDFNode>();		
+		HashMap<String, GDFNode> roots = new HashMap<>();
 		for( ProgramBlock pb : prog.getProgramBlocks() )
 			constructGDFGraph( pb, roots );
 		
 		//create GDF graph root nodes 
-		ArrayList<GDFNode> ret = new ArrayList<GDFNode>();
+		ArrayList<GDFNode> ret = new ArrayList<>();
 		for( GDFNode root : roots.values() )
 			if( !(root instanceof GDFCrossBlockNode) )
 				ret.add(root);
@@ -80,7 +80,7 @@ public class GraphBuilder
 		//create GDF graph
 		GDFGraph graph = new GDFGraph(prog, ret);
 		
-		summary.setTimeGDFGraph(time.stop());		
+		summary.setTimeGDFGraph(time.stop());
 		return graph;
 	}
 	
@@ -151,7 +151,7 @@ public class GraphBuilder
 			if( hops != null )
 			{
 				//create new local memo structure for local dag
-				HashMap<Long, GDFNode> lmemo = new HashMap<Long, GDFNode>();
+				HashMap<Long, GDFNode> lmemo = new HashMap<>();
 				for( Hop hop : hops )
 				{
 					//recursively construct GDF graph for hop dag root
@@ -177,7 +177,7 @@ public class GraphBuilder
 			return lmemo.get(hop.getHopID());
 		
 		//process childs recursively first
-		ArrayList<GDFNode> inputs = new ArrayList<GDFNode>();
+		ArrayList<GDFNode> inputs = new ArrayList<>();
 		for( Hop c : hop.getInput() )
 			inputs.add( constructGDFGraph(c, pb, lmemo, roots) );
 		
@@ -206,11 +206,11 @@ public class GraphBuilder
 	
 	private static GDFNode constructForPredicateNode(ForProgramBlock fpb, ForStatementBlock fsb, HashMap<String, GDFNode> roots)
 	{
-		HashMap<Long, GDFNode> memo = new HashMap<Long, GDFNode>();
+		HashMap<Long, GDFNode> memo = new HashMap<>();
 		GDFNode from = (fsb.getFromHops()!=null)? constructGDFGraph(fsb.getFromHops(), fpb, memo, roots) : null;
 		GDFNode to = (fsb.getToHops()!=null)? constructGDFGraph(fsb.getToHops(), fpb, memo, roots) : null;
 		GDFNode incr = (fsb.getIncrementHops()!=null)? constructGDFGraph(fsb.getIncrementHops(), fpb, memo, roots) : null;
-		ArrayList<GDFNode> inputs = new ArrayList<GDFNode>();
+		ArrayList<GDFNode> inputs = new ArrayList<>();
 		inputs.add(from);
 		inputs.add(to);
 		inputs.add(incr);
@@ -223,7 +223,7 @@ public class GraphBuilder
 	private static HashMap<String, GDFNode> constructLoopInputNodes( ProgramBlock fpb, StatementBlock fsb, HashMap<String, GDFNode> roots ) 
 		throws DMLRuntimeException
 	{
-		HashMap<String, GDFNode> ret = new HashMap<String, GDFNode>();
+		HashMap<String, GDFNode> ret = new HashMap<>();
 		Set<String> invars = fsb.variablesRead().getVariableNames();
 		for( String var : invars ) {
 			if( fsb.liveIn().containsVariable(var) ) {
@@ -240,7 +240,7 @@ public class GraphBuilder
 	private static HashMap<String, GDFNode> constructLoopOutputNodes( StatementBlock fsb, HashMap<String, GDFNode> roots ) 
 		throws HopsException
 	{
-		HashMap<String, GDFNode> ret = new HashMap<String, GDFNode>();
+		HashMap<String, GDFNode> ret = new HashMap<>();
 		
 		Set<String> outvars = fsb.variablesUpdated().getVariableNames();
 		for( String var : outvars ) 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java b/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java
index c6c3016..d719da7 100644
--- a/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java
+++ b/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java
@@ -66,9 +66,9 @@ public class FunctionCallGraph
 	 * @param prog dml program of given script
 	 */
 	public FunctionCallGraph(DMLProgram prog) {
-		_fGraph = new HashMap<String, HashSet<String>>();
-		_fCalls = new HashMap<String, ArrayList<FunctionOp>>();
-		_fRecursive = new HashSet<String>();
+		_fGraph = new HashMap<>();
+		_fCalls = new HashMap<>();
+		_fRecursive = new HashSet<>();
 		
 		constructFunctionCallGraph(prog);
 	}
@@ -80,9 +80,9 @@ public class FunctionCallGraph
 	 * @param sb statement block (potentially hierarchical)
 	 */
 	public FunctionCallGraph(StatementBlock sb) {
-		_fGraph = new HashMap<String, HashSet<String>>();
-		_fCalls = new HashMap<String, ArrayList<FunctionOp>>();
-		_fRecursive = new HashSet<String>();
+		_fGraph = new HashMap<>();
+		_fCalls = new HashMap<>();
+		_fRecursive = new HashSet<>();
 		
 		constructFunctionCallGraph(sb);
 	}
@@ -96,7 +96,7 @@ public class FunctionCallGraph
 	 */
 	public Set<String> getCalledFunctions(String fnamespace, String fname) {
 		return getCalledFunctions(
-			DMLProgram.constructFunctionKey(fnamespace, fname));				
+			DMLProgram.constructFunctionKey(fnamespace, fname));
 	}
 	
 	/**
@@ -205,8 +205,8 @@ public class FunctionCallGraph
 			return; //early abort if prog without functions
 		
 		try {
-			Stack<String> fstack = new Stack<String>();
-			HashSet<String> lfset = new HashSet<String>();
+			Stack<String> fstack = new Stack<>();
+			HashSet<String> lfset = new HashSet<>();
 			_fGraph.put(MAIN_FUNCTION_KEY, new HashSet<String>());
 			for( StatementBlock sblk : prog.getStatementBlocks() )
 				rConstructFunctionCallGraph(MAIN_FUNCTION_KEY, sblk, fstack, lfset);
@@ -221,8 +221,8 @@ public class FunctionCallGraph
 			return; //early abort if prog without functions
 		
 		try {
-			Stack<String> fstack = new Stack<String>();
-			HashSet<String> lfset = new HashSet<String>();
+			Stack<String> fstack = new Stack<>();
+			HashSet<String> lfset = new HashSet<>();
 			_fGraph.put(MAIN_FUNCTION_KEY, new HashSet<String>());
 			rConstructFunctionCallGraph(MAIN_FUNCTION_KEY, sb, fstack, lfset);
 		}

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/ipa/FunctionCallSizeInfo.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/ipa/FunctionCallSizeInfo.java b/src/main/java/org/apache/sysml/hops/ipa/FunctionCallSizeInfo.java
index cea16e5..337f7da 100644
--- a/src/main/java/org/apache/sysml/hops/ipa/FunctionCallSizeInfo.java
+++ b/src/main/java/org/apache/sysml/hops/ipa/FunctionCallSizeInfo.java
@@ -88,10 +88,10 @@ public class FunctionCallSizeInfo
 		throws HopsException 
 	{
 		_fgraph = fgraph;
-		_fcand = new HashSet<String>();
-		_fcandUnary = new HashSet<String>();
-		_fcandSafeNNZ =  new HashMap<String, Set<Integer>>();
-		_fSafeLiterals = new HashMap<String, Set<Integer>>();
+		_fcand = new HashSet<>();
+		_fcandUnary = new HashSet<>();
+		_fcandSafeNNZ =  new HashMap<>();
+		_fSafeLiterals = new HashMap<>();
 		
 		constructFunctionCallSizeInfo();
 	}
@@ -254,7 +254,7 @@ public class FunctionCallSizeInfo
 		//(considered for valid functions only)
 		for( String fkey : _fcand ) {
 			FunctionOp first = _fgraph.getFunctionCalls(fkey).get(0);
-			HashSet<Integer> tmp = new HashSet<Integer>();
+			HashSet<Integer> tmp = new HashSet<>();
 			for( int j=0; j<first.getInput().size(); j++ ) {
 				//if nnz known it is safe to propagate those nnz because for multiple calls 
 				//we checked of equivalence and hence all calls have the same nnz
@@ -271,7 +271,7 @@ public class FunctionCallSizeInfo
 			List<FunctionOp> flist = _fgraph.getFunctionCalls(fkey);
 			FunctionOp first = flist.get(0);
 			//initialize w/ all literals of first call
-			HashSet<Integer> tmp = new HashSet<Integer>();
+			HashSet<Integer> tmp = new HashSet<>();
 			for( int j=0; j<first.getInput().size(); j++ )
 				if( first.getInput().get(j) instanceof LiteralOp )
 					tmp.add(j);
@@ -292,6 +292,17 @@ public class FunctionCallSizeInfo
 	}
 	
 	@Override
+	public int hashCode() {
+		return Arrays.hashCode(new int[] {
+				_fgraph.hashCode(),
+				_fcand.hashCode(),
+				_fcandUnary.hashCode(),
+				_fcandSafeNNZ.hashCode(),
+				_fSafeLiterals.hashCode()
+			});
+	}
+	
+	@Override
 	public boolean equals(Object o) {
 		if( o instanceof FunctionCallSizeInfo )
 			return false;

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java b/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java
index 1a433a3..6b110c8 100644
--- a/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java
+++ b/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java
@@ -61,8 +61,8 @@ public class IPAPassRemoveConstantBinaryOps extends IPAPass
 		throws HopsException
 	{
 		//approach: scan over top-level program (guaranteed to be unconditional),
-		//collect ones=matrix(1,...); remove b(*)ones if not outer operation		
-		HashMap<String, Hop> mOnes = new HashMap<String, Hop>();
+		//collect ones=matrix(1,...); remove b(*)ones if not outer operation
+		HashMap<String, Hop> mOnes = new HashMap<>();
 		
 		for( StatementBlock sb : prog.getStatementBlocks() ) 
 		{

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java b/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java
index 664ec2a..1c2c6b9 100644
--- a/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java
+++ b/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java
@@ -76,12 +76,12 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass
 		//collect checkpoints; determine if used before update; remove first checkpoint
 		//on second checkpoint if update in between and not used before update
 		
-		HashMap<String, Hop> chkpointCand = new HashMap<String, Hop>();
+		HashMap<String, Hop> chkpointCand = new HashMap<>();
 		
 		for( StatementBlock sb : dmlp.getStatementBlocks() ) 
 		{
 			//prune candidates (used before updated)
-			Set<String> cands = new HashSet<String>(chkpointCand.keySet());
+			Set<String> cands = new HashSet<>(chkpointCand.keySet());
 			for( String cand : cands )
 				if( sb.variablesRead().containsVariable(cand) 
 					&& !sb.variablesUpdated().containsVariable(cand) ) 
@@ -101,7 +101,7 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass
 				}
 			
 			//prune candidates (updated in conditional control flow)
-			Set<String> cands2 = new HashSet<String>(chkpointCand.keySet());
+			Set<String> cands2 = new HashSet<>(chkpointCand.keySet());
 			if( sb instanceof IfStatementBlock || sb instanceof WhileStatementBlock 
 				|| sb instanceof ForStatementBlock )
 			{
@@ -129,7 +129,7 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass
 			ArrayList<Hop> tmp = collectCheckpoints(sb.get_hops());
 			for( Hop chkpoint : tmp ) {
 				if( chkpointCand.containsKey(chkpoint.getName()) ) {
-					chkpointCand.get(chkpoint.getName()).setRequiresCheckpoint(false);		
+					chkpointCand.get(chkpoint.getName()).setRequiresCheckpoint(false);
 				}
 				chkpointCand.put(chkpoint.getName(), chkpoint);
 			}
@@ -145,12 +145,12 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass
 		//after update if not used before update (best effort move which often avoids
 		//the second checkpoint on loops even though used in between)
 		
-		HashMap<String, Hop> chkpointCand = new HashMap<String, Hop>();
+		HashMap<String, Hop> chkpointCand = new HashMap<>();
 		
 		for( StatementBlock sb : dmlp.getStatementBlocks() ) 
 		{
 			//prune candidates (used before updated)
-			Set<String> cands = new HashSet<String>(chkpointCand.keySet());
+			Set<String> cands = new HashSet<>(chkpointCand.keySet());
 			for( String cand : cands )
 				if( sb.variablesRead().containsVariable(cand) 
 					&& !sb.variablesUpdated().containsVariable(cand) ) 
@@ -170,7 +170,7 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass
 				}
 			
 			//prune candidates (updated in conditional control flow)
-			Set<String> cands2 = new HashSet<String>(chkpointCand.keySet());
+			Set<String> cands2 = new HashSet<>(chkpointCand.keySet());
 			if( sb instanceof IfStatementBlock || sb instanceof WhileStatementBlock 
 				|| sb instanceof ForStatementBlock )
 			{
@@ -228,7 +228,7 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass
 	
 	private static ArrayList<Hop> collectCheckpoints(ArrayList<Hop> roots)
 	{
-		ArrayList<Hop> ret = new ArrayList<Hop>();	
+		ArrayList<Hop> ret = new ArrayList<>();
 		if( roots != null ) {
 			Hop.resetVisitStatus(roots);
 			for( Hop root : roots )

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java b/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
index 024b456..1aafe0b 100644
--- a/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
+++ b/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
@@ -129,7 +129,7 @@ public class InterProceduralAnalysis
 		_fgraph = new FunctionCallGraph(dmlp);
 		
 		//create order list of IPA passes
-		_passes = new ArrayList<IPAPass>();
+		_passes = new ArrayList<>();
 		_passes.add(new IPAPassRemoveUnusedFunctions());
 		_passes.add(new IPAPassFlagFunctionsRecompileOnce());
 		_passes.add(new IPAPassRemoveUnnecessaryCheckpoints());
@@ -145,7 +145,7 @@ public class InterProceduralAnalysis
 		_fgraph = new FunctionCallGraph(sb);
 		
 		//create order list of IPA passes
-		_passes = new ArrayList<IPAPass>();
+		_passes = new ArrayList<>();
 	}
 	
 	/**
@@ -251,7 +251,7 @@ public class InterProceduralAnalysis
 		//check size-preserving characteristic
 		if( ret ) {
 			FunctionCallSizeInfo fcallSizes = new FunctionCallSizeInfo(_fgraph, false);
-			HashSet<String> fnStack = new HashSet<String>();
+			HashSet<String> fnStack = new HashSet<>();
 			LocalVariableMap callVars = new LocalVariableMap();
 			
 			//populate input

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java b/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java
index d7b97e9..f0c8955 100644
--- a/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java
+++ b/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java
@@ -82,7 +82,7 @@ public class LiteralReplacement
 					//because hop c marked as visited, and (2) repeated evaluation of uagg ops
 					
 					if( c.getParent().size() > 1 ) { //multiple parents
-						ArrayList<Hop> parents = new ArrayList<Hop>(c.getParent());
+						ArrayList<Hop> parents = new ArrayList<>(c.getParent());
 						for( Hop p : parents ) {
 							int pos = HopRewriteUtils.getChildReferencePos(p, c);
 							HopRewriteUtils.removeChildReferenceByPos(p, c, pos);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/recompile/RecompileStatus.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/recompile/RecompileStatus.java b/src/main/java/org/apache/sysml/hops/recompile/RecompileStatus.java
index c16244f..f40422b 100644
--- a/src/main/java/org/apache/sysml/hops/recompile/RecompileStatus.java
+++ b/src/main/java/org/apache/sysml/hops/recompile/RecompileStatus.java
@@ -33,7 +33,7 @@ public class RecompileStatus
 	}
 	
 	public RecompileStatus(boolean initialCodegen) {
-		_lastTWrites = new HashMap<String,MatrixCharacteristics>();
+		_lastTWrites = new HashMap<>();
 		_initialCodegen = initialCodegen;
 	}
 	

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java b/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
index df6746b..463e41b 100644
--- a/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
+++ b/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
@@ -237,7 +237,7 @@ public class Recompiler
 			}
 			
 			// construct lops
-			Dag<Lop> dag = new Dag<Lop>();
+			Dag<Lop> dag = new Dag<>();
 			for( Hop hopRoot : hops ){
 				Lop lops = hopRoot.constructLops();
 				lops.addToDag(dag);	
@@ -352,7 +352,7 @@ public class Recompiler
 			}
 			
 			// construct lops
-			Dag<Lop> dag = new Dag<Lop>();
+			Dag<Lop> dag = new Dag<>();
 			Lop lops = hops.constructLops();
 			lops.addToDag(dag);
 			
@@ -413,14 +413,14 @@ public class Recompiler
 			Hop.resetVisitStatus(hops);
 			
 			// construct lops			
-			Dag<Lop> dag = new Dag<Lop>();
+			Dag<Lop> dag = new Dag<>();
 			for( Hop hopRoot : hops ){
 				Lop lops = hopRoot.constructLops();
 				lops.addToDag(dag);	
 			}		
 			
 			// generate runtime instructions (incl piggybacking)
-			newInst = dag.getJobs(sb, ConfigurationManager.getDMLConfig());			
+			newInst = dag.getJobs(sb, ConfigurationManager.getDMLConfig());
 		}
 		
 		// replace thread ids in new instructions
@@ -465,10 +465,10 @@ public class Recompiler
 			rSetExecType( hops, et );
 			hops.resetVisitStatus();
 			
-			// construct lops			
-			Dag<Lop> dag = new Dag<Lop>();
+			// construct lops	
+			Dag<Lop> dag = new Dag<>();
 			Lop lops = hops.constructLops();
-			lops.addToDag(dag);		
+			lops.addToDag(dag);
 			
 			// generate runtime instructions (incl piggybacking)
 			newInst = dag.getJobs(null, ConfigurationManager.getDMLConfig());
@@ -498,8 +498,8 @@ public class Recompiler
 			for( Hop hopRoot : hops )
 				rClearLops( hopRoot );
 			
-			// construct lops			
-			Dag<Lop> dag = new Dag<Lop>();
+			// construct lops	
+			Dag<Lop> dag = new Dag<>();
 			for( Hop hopRoot : hops ){
 				Lop lops = hopRoot.constructLops();
 				lops.addToDag(dag);	
@@ -537,10 +537,10 @@ public class Recompiler
 			hops.resetVisitStatus();
 			rClearLops( hops );	
 
-			// construct lops			
-			Dag<Lop> dag = new Dag<Lop>();
+			// construct lops
+			Dag<Lop> dag = new Dag<>();
 			Lop lops = hops.constructLops();
-			lops.addToDag(dag);		
+			lops.addToDag(dag);
 			
 			// generate runtime instructions (incl piggybacking)
 			newInst = dag.getJobs(null, ConfigurationManager.getDMLConfig());
@@ -702,12 +702,12 @@ public class Recompiler
 	public static ArrayList<Hop> deepCopyHopsDag( ArrayList<Hop> hops ) 
 		throws HopsException 
 	{
-		ArrayList<Hop> ret = new ArrayList<Hop>();
+		ArrayList<Hop> ret = new ArrayList<>();
 		
 		try {
 			//note: need memo table over all independent DAGs in order to 
 			//account for shared transient reads (otherwise more instructions generated)
-			HashMap<Long, Hop> memo = new HashMap<Long, Hop>(); //orig ID, new clone
+			HashMap<Long, Hop> memo = new HashMap<>(); //orig ID, new clone
 			for( Hop hopRoot : hops )
 				ret.add(rDeepCopyHopsDag(hopRoot, memo));
 		}
@@ -732,7 +732,7 @@ public class Recompiler
 		Hop ret = null;
 		
 		try {
-			HashMap<Long, Hop> memo = new HashMap<Long, Hop>(); //orig ID, new clone
+			HashMap<Long, Hop> memo = new HashMap<>(); //orig ID, new clone
 			ret = rDeepCopyHopsDag(hops, memo);
 		}
 		catch(Exception ex)
@@ -752,7 +752,7 @@ public class Recompiler
 		if( ret == null ) 
 		{
 			ret = (Hop) hops.clone();
-			ArrayList<Hop> tmp = new ArrayList<Hop>();
+			ArrayList<Hop> tmp = new ArrayList<>();
 			
 			//create new childs
 			for( Hop in : hops.getInput() )

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java b/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java
index 2d58f4c..d96d1e4 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java
@@ -303,7 +303,7 @@ public class HopRewriteUtils
 			       new UnaryOp("tmpcols", DataType.SCALAR, ValueType.INT, OpOp1.NCOL, input);
 		Hop val = new LiteralOp(value);
 		
-		HashMap<String, Hop> params = new HashMap<String, Hop>();
+		HashMap<String, Hop> params = new HashMap<>();
 		params.put(DataExpression.RAND_ROWS, rows);
 		params.put(DataExpression.RAND_COLS, cols);
 		params.put(DataExpression.RAND_MIN, val);
@@ -359,14 +359,14 @@ public class HopRewriteUtils
 		Hop sminHop = new LiteralOp(smin);
 		Hop smaxHop = new LiteralOp(smax);
 		
-		HashMap<String, Hop> params2 = new HashMap<String, Hop>();
+		HashMap<String, Hop> params2 = new HashMap<>();
 		params2.put(DataExpression.RAND_ROWS, rows);
 		params2.put(DataExpression.RAND_COLS, cols);
 		params2.put(DataExpression.RAND_MIN, sminHop);
 		params2.put(DataExpression.RAND_MAX, smaxHop);
 		params2.put(DataExpression.RAND_PDF, pdf);
 		params2.put(DataExpression.RAND_LAMBDA, mean);
-		params2.put(DataExpression.RAND_SPARSITY, sparsity);		
+		params2.put(DataExpression.RAND_SPARSITY, sparsity);
 		params2.put(DataExpression.RAND_SEED, seed );
 		
 		//note internal refresh size information
@@ -389,7 +389,7 @@ public class HopRewriteUtils
 			       new UnaryOp("tmpcols", DataType.SCALAR, ValueType.INT, OpOp1.NCOL, colInput);
 		Hop val = new LiteralOp(value);
 		
-		HashMap<String, Hop> params = new HashMap<String, Hop>();
+		HashMap<String, Hop> params = new HashMap<>();
 		params.put(DataExpression.RAND_ROWS, rows);
 		params.put(DataExpression.RAND_COLS, cols);
 		params.put(DataExpression.RAND_MIN, val);
@@ -422,7 +422,7 @@ public class HopRewriteUtils
 			       new UnaryOp("tmpcols", DataType.SCALAR, ValueType.INT, tColInput?OpOp1.NROW:OpOp1.NCOL, colInput);
 		Hop val = new LiteralOp(value);
 		
-		HashMap<String, Hop> params = new HashMap<String, Hop>();
+		HashMap<String, Hop> params = new HashMap<>();
 		params.put(DataExpression.RAND_ROWS, rows);
 		params.put(DataExpression.RAND_COLS, cols);
 		params.put(DataExpression.RAND_MIN, val);
@@ -448,7 +448,7 @@ public class HopRewriteUtils
 	{		
 		Hop val = new LiteralOp(value);
 		
-		HashMap<String, Hop> params = new HashMap<String, Hop>();
+		HashMap<String, Hop> params = new HashMap<>();
 		params.put(DataExpression.RAND_ROWS, rowInput);
 		params.put(DataExpression.RAND_COLS, colInput);
 		params.put(DataExpression.RAND_MIN, val);
@@ -622,7 +622,7 @@ public class HopRewriteUtils
 		Hop to = (input.getDim1()>0) ? new LiteralOp(input.getDim1()) : 
 			       new UnaryOp("tmprows", DataType.SCALAR, ValueType.INT, OpOp1.NROW, input);
 		
-		HashMap<String, Hop> params = new HashMap<String, Hop>();
+		HashMap<String, Hop> params = new HashMap<>();
 		if( asc ) {
 			params.put(Statement.SEQ_FROM, new LiteralOp(1));
 			params.put(Statement.SEQ_TO, to);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java b/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java
index 737e5e8..c56b2ed 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java
@@ -74,10 +74,10 @@ public class ProgramRewriter
 	public ProgramRewriter( boolean staticRewrites, boolean dynamicRewrites )
 	{
 		//initialize HOP DAG rewrite ruleSet (with fixed rewrite order)
-		_dagRuleSet = new ArrayList<HopRewriteRule>();
+		_dagRuleSet = new ArrayList<>();
 		
 		//initialize StatementBlock rewrite ruleSet (with fixed rewrite order)
-		_sbRuleSet = new ArrayList<StatementBlockRewriteRule>();
+		_sbRuleSet = new ArrayList<>();
 		
 		
 		//STATIC REWRITES (which do not rely on size information)
@@ -145,11 +145,11 @@ public class ProgramRewriter
 	 */
 	public ProgramRewriter( HopRewriteRule... rewrites ) {
 		//initialize HOP DAG rewrite ruleSet (with fixed rewrite order)
-		_dagRuleSet = new ArrayList<HopRewriteRule>();
+		_dagRuleSet = new ArrayList<>();
 		for( HopRewriteRule rewrite : rewrites )
-			_dagRuleSet.add( rewrite );		
+			_dagRuleSet.add( rewrite );
 		
-		_sbRuleSet = new ArrayList<StatementBlockRewriteRule>();
+		_sbRuleSet = new ArrayList<>();
 	}
 	
 	/**
@@ -159,9 +159,9 @@ public class ProgramRewriter
 	 */
 	public ProgramRewriter( StatementBlockRewriteRule... rewrites ) {
 		//initialize HOP DAG rewrite ruleSet (with fixed rewrite order)
-		_dagRuleSet = new ArrayList<HopRewriteRule>();
+		_dagRuleSet = new ArrayList<>();
 		
-		_sbRuleSet = new ArrayList<StatementBlockRewriteRule>();
+		_sbRuleSet = new ArrayList<>();
 		for( StatementBlockRewriteRule rewrite : rewrites )
 			_sbRuleSet.add( rewrite );
 	}
@@ -174,10 +174,10 @@ public class ProgramRewriter
 	 */
 	public ProgramRewriter(ArrayList<HopRewriteRule> hRewrites, ArrayList<StatementBlockRewriteRule> sbRewrites) {
 		//initialize HOP DAG rewrite ruleSet (with fixed rewrite order)
-		_dagRuleSet = new ArrayList<HopRewriteRule>();
+		_dagRuleSet = new ArrayList<>();
 		_dagRuleSet.addAll( hRewrites );
 		
-		_sbRuleSet = new ArrayList<StatementBlockRewriteRule>();
+		_sbRuleSet = new ArrayList<>();
 		_sbRuleSet.addAll( sbRewrites );
 	}
 	
@@ -300,7 +300,7 @@ public class ProgramRewriter
 			tmp = r.rewriteStatementBlocks(tmp, status);
 		
 		//recursively rewrite statement blocks (with potential expansion)
-		List<StatementBlock> tmp2 = new ArrayList<StatementBlock>();
+		List<StatementBlock> tmp2 = new ArrayList<>();
 		for( StatementBlock sb : tmp )
 			tmp2.addAll( rRewriteStatementBlock(sb, status) );
 		
@@ -317,7 +317,7 @@ public class ProgramRewriter
 	public ArrayList<StatementBlock> rRewriteStatementBlock( StatementBlock sb, ProgramRewriteStatus status ) 
 		throws HopsException
 	{
-		ArrayList<StatementBlock> ret = new ArrayList<StatementBlock>();
+		ArrayList<StatementBlock> ret = new ArrayList<>();
 		ret.add(sb);
 		
 		//recursive invocation
@@ -356,7 +356,7 @@ public class ProgramRewriter
 		
 		//apply rewrite rules to individual statement blocks
 		for( StatementBlockRewriteRule r : _sbRuleSet ) {
-			ArrayList<StatementBlock> tmp = new ArrayList<StatementBlock>();
+			ArrayList<StatementBlock> tmp = new ArrayList<>();
 			for( StatementBlock sbc : ret )
 				tmp.addAll( r.rewriteStatementBlock(sbc, status) );
 			

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
index 8513d27..dcb729e 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
@@ -1092,7 +1092,7 @@ public class RewriteAlgebraicSimplificationDynamic extends HopRewriteRule
 				//remove all parent links to binary op (since we want to reorder
 				//we cannot just look at the current parent)
 				ArrayList<Hop> parents = (ArrayList<Hop>) hi.getParent().clone();
-				ArrayList<Integer> parentspos = new ArrayList<Integer>(); 
+				ArrayList<Integer> parentspos = new ArrayList<>(); 
 				for(Hop lparent : parents) {
 					int lpos = HopRewriteUtils.getChildReferencePos(lparent, hi);
 					HopRewriteUtils.removeChildReferenceByPos(lparent, hi, lpos);
@@ -2559,7 +2559,7 @@ public class RewriteAlgebraicSimplificationDynamic extends HopRewriteRule
 				&& HopRewriteUtils.isLiteralOfValue(hi.getInput().get(3), second.getDim1()) )
 			{
 				//setup input parameter hops
-				HashMap<String,Hop> args = new HashMap<String,Hop>();
+				HashMap<String,Hop> args = new HashMap<>();
 				args.put("target", second);
 				args.put("max", hi.getInput().get(4));
 				args.put("dir", new LiteralOp("cols"));
@@ -2580,7 +2580,7 @@ public class RewriteAlgebraicSimplificationDynamic extends HopRewriteRule
 				&& HopRewriteUtils.isLiteralOfValue(hi.getInput().get(4), first.getDim1()) )
 			{
 				//setup input parameter hops
-				HashMap<String,Hop> args = new HashMap<String,Hop>();
+				HashMap<String,Hop> args = new HashMap<>();
 				args.put("target", first);
 				args.put("max", hi.getInput().get(3));
 				args.put("dir", new LiteralOp("rows"));

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java
index d100989..4e5f3fb 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java
@@ -383,7 +383,7 @@ public class RewriteAlgebraicSimplificationStatic extends HopRewriteRule
 					}
 					
 					//rewire all parents (avoid anomalies with replicated datagen)
-					List<Hop> parents = new ArrayList<Hop>(bop.getParent());
+					List<Hop> parents = new ArrayList<>(bop.getParent());
 					for( Hop p : parents )
 						HopRewriteUtils.replaceChildReference(p, bop, gen);
 					
@@ -415,7 +415,7 @@ public class RewriteAlgebraicSimplificationStatic extends HopRewriteRule
 					}
 					
 					//rewire all parents (avoid anomalies with replicated datagen)
-					List<Hop> parents = new ArrayList<Hop>(bop.getParent());
+					List<Hop> parents = new ArrayList<>(bop.getParent());
 					for( Hop p : parents )
 						HopRewriteUtils.replaceChildReference(p, bop, gen);
 					
@@ -465,12 +465,12 @@ public class RewriteAlgebraicSimplificationStatic extends HopRewriteRule
 					HopRewriteUtils.addChildReference(inputGen, newMax, ixMax);
 					
 					//rewire all parents (avoid anomalies with replicated datagen)
-					List<Hop> parents = new ArrayList<Hop>(bop.getParent());
+					List<Hop> parents = new ArrayList<>(bop.getParent());
 					for( Hop p : parents )
 						HopRewriteUtils.replaceChildReference(p, bop, inputGen);
 					
 					hi = inputGen;
-					LOG.debug("Applied fuseDatagenAndMinusOperation (line "+bop.getBeginLine()+").");		
+					LOG.debug("Applied fuseDatagenAndMinusOperation (line "+bop.getBeginLine()+").");
 				}
 			}
 		}
@@ -553,7 +553,7 @@ public class RewriteAlgebraicSimplificationStatic extends HopRewriteRule
 	private Hop canonicalizeMatrixMultScalarAdd( Hop hi ) 
 		throws HopsException
 	{
-		//pattern: binary operation (+ or -) of matrix mult and scalar 		
+		//pattern: binary operation (+ or -) of matrix mult and scalar 
 		if( hi instanceof BinaryOp )
 		{
 			BinaryOp bop = (BinaryOp)hi;
@@ -1641,11 +1641,11 @@ public class RewriteAlgebraicSimplificationStatic extends HopRewriteRule
 						HopRewriteUtils.createTranspose(hi.getInput().get(1)) ) : //create v via t(v')
 						hi.getInput().get(0);                                     //get v directly 
 				Hop seq = isPatternB ?
-						hi.getInput().get(0) : hi.getInput().get(1).getInput().get(0);					
+						hi.getInput().get(0) : hi.getInput().get(1).getInput().get(0);
 				String direction = HopRewriteUtils.isBasic1NSequence(hi.getInput().get(0)) ? "rows" : "cols";
 				
 				//setup input parameter hops
-				HashMap<String,Hop> inputargs = new HashMap<String,Hop>();
+				HashMap<String,Hop> inputargs = new HashMap<>();
 				inputargs.put("target", trgt);
 				inputargs.put("max", HopRewriteUtils.getBasic1NSequenceMax(seq));
 				inputargs.put("dir", new LiteralOp(direction));

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java
index 5379dfe..f8d812a 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java
@@ -56,8 +56,8 @@ public class RewriteCommonSubexpressionElimination extends HopRewriteRule
 		if( roots == null )
 			return null;
 		
-		HashMap<String, Hop> dataops = new HashMap<String, Hop>();
-		HashMap<String, Hop> literalops = new HashMap<String, Hop>(); //key: <VALUETYPE>_<LITERAL>
+		HashMap<String, Hop> dataops = new HashMap<>();
+		HashMap<String, Hop> literalops = new HashMap<>(); //key: <VALUETYPE>_<LITERAL>
 		for (Hop h : roots) 
 		{
 			int cseMerged = 0;
@@ -81,8 +81,8 @@ public class RewriteCommonSubexpressionElimination extends HopRewriteRule
 		if( root == null )
 			return null;
 		
-		HashMap<String, Hop> dataops = new HashMap<String, Hop>();
-		HashMap<String, Hop> literalops = new HashMap<String, Hop>(); //key: <VALUETYPE>_<LITERAL>
+		HashMap<String, Hop> dataops = new HashMap<>();
+		HashMap<String, Hop> literalops = new HashMap<>(); //key: <VALUETYPE>_<LITERAL>
 		int cseMerged = 0;
 		if( _mergeLeafs ) {
 			cseMerged += rule_CommonSubexpressionElimination_MergeLeafs(root, dataops, literalops);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java
index a0867e2..92b91e0 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java
@@ -188,7 +188,7 @@ public class RewriteConstantFolding extends HopRewriteRule
 		DataOp tmpWrite = new DataOp(TMP_VARNAME, bop.getDataType(), bop.getValueType(), bop, DataOpTypes.TRANSIENTWRITE, TMP_VARNAME);
 		
 		//generate runtime instruction
-		Dag<Lop> dag = new Dag<Lop>();
+		Dag<Lop> dag = new Dag<>();
 		Recompiler.rClearLops(tmpWrite); //prevent lops reuse
 		Lop lops = tmpWrite.constructLops(); //reconstruct lops
 		lops.addToDag( dag );

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java
index 0724612..bd22522 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java
@@ -204,7 +204,7 @@ public class RewriteIndexingVectorization extends HopRewriteRule
 			if( isSingleRow && isSingleCol )
 			{
 				//collect simple chains (w/o multiple consumers) of left indexing ops
-				ArrayList<Hop> ihops = new ArrayList<Hop>();
+				ArrayList<Hop> ihops = new ArrayList<>();
 				ihops.add(ihop0);
 				Hop current = ihop0;
 				while( current.getInput().get(0) instanceof LeftIndexingOp ) {
@@ -251,7 +251,7 @@ public class RewriteIndexingVectorization extends HopRewriteRule
 					//new row left indexing operator (for all parents, only intermediates are guaranteed to have 1 parent)
 					//(note: it's important to clone the parent list before creating newLix on top of ihop0)
 					ArrayList<Hop> ihop0parents = (ArrayList<Hop>) ihop0.getParent().clone();
-					ArrayList<Integer> ihop0parentsPos = new ArrayList<Integer>();
+					ArrayList<Integer> ihop0parentsPos = new ArrayList<>();
 					for( Hop parent : ihop0parents ) {
 						int posp = HopRewriteUtils.getChildReferencePos(parent, ihop0);
 						HopRewriteUtils.removeChildReferenceByPos(parent, ihop0, posp); //input data
@@ -283,7 +283,7 @@ public class RewriteIndexingVectorization extends HopRewriteRule
 			{
 				
 				//collect simple chains (w/o multiple consumers) of left indexing ops
-				ArrayList<Hop> ihops = new ArrayList<Hop>();
+				ArrayList<Hop> ihops = new ArrayList<>();
 				ihops.add(ihop0);
 				Hop current = ihop0;
 				while( current.getInput().get(0) instanceof LeftIndexingOp ) {
@@ -330,7 +330,7 @@ public class RewriteIndexingVectorization extends HopRewriteRule
 					//new row left indexing operator (for all parents, only intermediates are guaranteed to have 1 parent)
 					//(note: it's important to clone the parent list before creating newLix on top of ihop0)
 					ArrayList<Hop> ihop0parents = (ArrayList<Hop>) ihop0.getParent().clone();
-					ArrayList<Integer> ihop0parentsPos = new ArrayList<Integer>();
+					ArrayList<Integer> ihop0parentsPos = new ArrayList<>();
 					for( Hop parent : ihop0parents ) {
 						int posp = HopRewriteUtils.getChildReferencePos(parent, ihop0);
 						HopRewriteUtils.removeChildReferenceByPos(parent, ihop0, posp); //input data

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java
index 876b162..f838952 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java
@@ -76,7 +76,7 @@ public class RewriteInjectSparkLoopCheckpointing extends StatementBlockRewriteRu
 		    && (_checkCtx ? !status.isInParforContext() : true)  )
 		{
 			//step 1: determine checkpointing candidates
-			ArrayList<String> candidates = new ArrayList<String>(); 
+			ArrayList<String> candidates = new ArrayList<>();
 			VariableSet read = sb.variablesRead();
 			VariableSet updated = sb.variablesUpdated();
 			
@@ -90,7 +90,7 @@ public class RewriteInjectSparkLoopCheckpointing extends StatementBlockRewriteRu
 				StatementBlock sb0 = new StatementBlock();
 				sb0.setDMLProg(sb.getDMLProg());
 				sb0.setParseInfo(sb);
-				ArrayList<Hop> hops = new ArrayList<Hop>();
+				ArrayList<Hop> hops = new ArrayList<>();
 				VariableSet livein = new VariableSet();
 				VariableSet liveout = new VariableSet();
 				for( String var : candidates ) 

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java
index ce94ee1..deb7fba 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java
@@ -61,7 +61,7 @@ public class RewriteMarkLoopVariablesUpdateInPlace extends StatementBlockRewrite
 		
 		if( sb instanceof WhileStatementBlock || sb instanceof ForStatementBlock ) //incl parfor 
 		{
-			ArrayList<String> candidates = new ArrayList<String>(); 
+			ArrayList<String> candidates = new ArrayList<>();
 			VariableSet updated = sb.variablesUpdated();
 			VariableSet liveout = sb.liveOut();
 			

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java
index 396dafc..090018b 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java
@@ -125,8 +125,8 @@ public class RewriteMatrixMultChainOptimization extends HopRewriteRule
 				+ ", " + hop.getHopID() + ", " + hop.getName() + ")");
 		}
 		
-		ArrayList<Hop> mmChain = new ArrayList<Hop>();
-		ArrayList<Hop> mmOperators = new ArrayList<Hop>();
+		ArrayList<Hop> mmChain = new ArrayList<>();
+		ArrayList<Hop> mmOperators = new ArrayList<>();
 		ArrayList<Hop> tempList;
 
 		// Step 1: Identify the chain (mmChain) & clear all links among the Hops

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java
index 9cba102..e1c2630 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java
@@ -86,7 +86,7 @@ public class RewriteMergeBlockSequence extends StatementBlockRewriteRule
 							//rewire transient write and transient read
 							Hop tread = treads.get(root.getName());
 							Hop in = root.getInput().get(0);
-							for( Hop parent : new ArrayList<Hop>(tread.getParent()) )
+							for( Hop parent : new ArrayList<>(tread.getParent()) )
 								HopRewriteUtils.replaceChildReference(parent, tread, in);
 							HopRewriteUtils.removeAllChildReferences(root);
 							//add transient write if necessary

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java
index 011eecd..34743bb 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java
@@ -59,15 +59,15 @@ public class RewriteRemovePersistentReadWrite extends HopRewriteRule
 	public RewriteRemovePersistentReadWrite( String[] in, String[] out, LocalVariableMap vars )
 	{
 		//store input and output names
-		_inputs = new HashSet<String>();
+		_inputs = new HashSet<>();
 		for( String var : in )
 			_inputs.add( var );
-		_outputs = new HashSet<String>();
+		_outputs = new HashSet<>();
 		for( String var : out )
 			_outputs.add( var );
 		
 		//store input meta data
-		_inputsMeta = new HashMap<String, MetaData>();
+		_inputsMeta = new HashMap<>();
 		if( vars != null ) {
 			for( String varname : in ) {
 				Data dat = vars.get(varname);

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java
index d3489f4..c53d59d 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java
@@ -50,8 +50,8 @@ public class RewriteRemoveReadAfterWrite extends HopRewriteRule
 			return null;
 		
 		//collect all persistent reads and writes
-		HashMap<String,Hop> reads = new HashMap<String,Hop>();
-		HashMap<String,Hop> writes = new HashMap<String,Hop>();
+		HashMap<String,Hop> reads = new HashMap<>();
+		HashMap<String,Hop> writes = new HashMap<>();
 		for( Hop h : roots ) 
 			collectPersistentReadWriteOps( h, writes, reads );
 		

http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryBranches.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryBranches.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryBranches.java
index 6ada2d2..52aa7a5 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryBranches.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryBranches.java
@@ -41,7 +41,7 @@ public class RewriteRemoveUnnecessaryBranches extends StatementBlockRewriteRule
 	public List<StatementBlock> rewriteStatementBlock(StatementBlock sb, ProgramRewriteStatus state)
 		throws HopsException 
 	{
-		ArrayList<StatementBlock> ret = new ArrayList<StatementBlock>();
+		ArrayList<StatementBlock> ret = new ArrayList<>();
 		
 		if( sb instanceof IfStatementBlock )
 		{