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

Reply via email to