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:16 UTC

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

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 )
 		{