http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c12f58f4/extras/indexing/src/test/java/mvm/rya/indexing/IndexPlanValidator/IndexPlanValidatorTest.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/test/java/mvm/rya/indexing/IndexPlanValidator/IndexPlanValidatorTest.java
 
b/extras/indexing/src/test/java/mvm/rya/indexing/IndexPlanValidator/IndexPlanValidatorTest.java
index eea5b95..2826318 100644
--- 
a/extras/indexing/src/test/java/mvm/rya/indexing/IndexPlanValidator/IndexPlanValidatorTest.java
+++ 
b/extras/indexing/src/test/java/mvm/rya/indexing/IndexPlanValidator/IndexPlanValidatorTest.java
@@ -8,9 +8,9 @@ package mvm.rya.indexing.IndexPlanValidator;
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -19,22 +19,18 @@ package mvm.rya.indexing.IndexPlanValidator;
  * under the License.
  */
 
-
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Set;
 
-import junit.framework.Assert;
-import 
mvm.rya.indexing.IndexPlanValidator.ThreshholdPlanSelectorTest.NodeCollector;
-import mvm.rya.indexing.external.ExternalProcessor;
+import mvm.rya.indexing.external.PrecompJoinOptimizer;
 import mvm.rya.indexing.external.tupleSet.ExternalTupleSet;
 import mvm.rya.indexing.external.tupleSet.SimpleExternalTupleSet;
 
+import org.junit.Assert;
 import org.junit.Test;
 import org.openrdf.query.MalformedQueryException;
 import org.openrdf.query.algebra.Projection;
-import org.openrdf.query.algebra.QueryModelNode;
 import org.openrdf.query.algebra.TupleExpr;
 import org.openrdf.query.parser.ParsedQuery;
 import org.openrdf.query.parser.sparql.SPARQLParser;
@@ -43,1106 +39,746 @@ import com.google.common.collect.Lists;
 
 public class IndexPlanValidatorTest {
 
-    
-    @Test
-    public void testEvaluateTwoIndexTwoVarOrder1() {
-        
-        System.out.println("********************Test number 
1***************************");
-        
-        // TODO Auto-generated method stub
-        String indexSparqlString = ""//
-                + "SELECT ?c ?e ?l  " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String indexSparqlString2 = ""//
-                + "SELECT ?e ?o ?l " //
-                + "{" //
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String queryString = ""//
-                + "SELECT ?e ?c ?l ?o " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-
-        
-       
-        SPARQLParser sp = new SPARQLParser();
-        ParsedQuery index1 = null;
-        ParsedQuery index2 = null;
-        try {
-            index1 = sp.parseQuery(indexSparqlString, null);
-            index2 = sp.parseQuery(indexSparqlString2, null);
-        } catch (MalformedQueryException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        
-          
-        List<ExternalTupleSet> index = Lists.newArrayList();
-        
-        SimpleExternalTupleSet ais1 = new 
SimpleExternalTupleSet((Projection)index1.getTupleExpr());
-        SimpleExternalTupleSet ais2 = new 
SimpleExternalTupleSet((Projection)index2.getTupleExpr());;
-                
-        index.add(ais1);
-        index.add(ais2);
-        
-        ParsedQuery pq = null;
-
-        try {
-            pq = sp.parseQuery(queryString, null);
-        } catch (MalformedQueryException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-       
-        ExternalProcessor processor = new ExternalProcessor(index);
-        TupleExpr tup = processor.process(pq.getTupleExpr());
-
-        System.out.println("TupleExpr is " + tup);
-        
-        IndexPlanValidator ipv = new IndexPlanValidator(false);
-        Assert.assertEquals(false, ipv.isValid(tup));
-        
-    }
-    
-    
-    
-    @Test
-    public void testEvaluateTwoIndexTwoVarOrder2() {
-        
-        System.out.println("********************Test number 
2***************************");
-        
-        // TODO Auto-generated method stub
-        String indexSparqlString = ""//
-                + "SELECT ?e ?l ?c  " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String indexSparqlString2 = ""//
-                + "SELECT ?e ?o ?l " //
-                + "{" //
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String queryString = ""//
-                + "SELECT ?e ?c ?l ?o " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-
-        
-       
-        SPARQLParser sp = new SPARQLParser();
-        ParsedQuery index1 = null;
-        ParsedQuery index2 = null;
-        try {
-            index1 = sp.parseQuery(indexSparqlString, null);
-            index2 = sp.parseQuery(indexSparqlString2, null);
-        } catch (MalformedQueryException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        
-          
-        List<ExternalTupleSet> index = Lists.newArrayList();
-        
-        SimpleExternalTupleSet ais1 = new 
SimpleExternalTupleSet((Projection)index1.getTupleExpr());
-        SimpleExternalTupleSet ais2 = new 
SimpleExternalTupleSet((Projection)index2.getTupleExpr());;
-                
-        index.add(ais1);
-        index.add(ais2);
-        
-        ParsedQuery pq = null;
-
-        try {
-            pq = sp.parseQuery(queryString, null);
-        } catch (MalformedQueryException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-       
-        ExternalProcessor processor = new ExternalProcessor(index);
-        TupleExpr tup = processor.process(pq.getTupleExpr());
-
-        System.out.println("TupleExpr is " + tup);
-        
-        IndexPlanValidator ipv = new IndexPlanValidator(false);
-        Assert.assertEquals(true, ipv.isValid(tup));
-        
-    }
-    
-    
-    
-    
-    
-    @Test
-    public void testEvaluateTwoIndexTwoVarOrder3() {
-      
-        
-        System.out.println("********************Test number 
3***************************");
-        
-        // TODO Auto-generated method stub
-        String indexSparqlString = ""//
-                + "SELECT ?l ?e ?c  " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String indexSparqlString2 = ""//
-                + "SELECT ?e ?o ?l " //
-                + "{" //
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String queryString = ""//
-                + "SELECT ?e ?c ?l ?o " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-
-        
-       
-        SPARQLParser sp = new SPARQLParser();
-        ParsedQuery index1 = null;
-        ParsedQuery index2 = null;
-        try {
-            index1 = sp.parseQuery(indexSparqlString, null);
-            index2 = sp.parseQuery(indexSparqlString2, null);
-        } catch (MalformedQueryException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        
-          
-        List<ExternalTupleSet> index = Lists.newArrayList();
-        
-        SimpleExternalTupleSet ais1 = new 
SimpleExternalTupleSet((Projection)index1.getTupleExpr());
-        SimpleExternalTupleSet ais2 = new 
SimpleExternalTupleSet((Projection)index2.getTupleExpr());;
-                
-        index.add(ais1);
-        index.add(ais2);
-        
-        ParsedQuery pq = null;
-
-        try {
-            pq = sp.parseQuery(queryString, null);
-        } catch (MalformedQueryException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-       
-        ExternalProcessor processor = new ExternalProcessor(index);
-        TupleExpr tup = processor.process(pq.getTupleExpr());
-
-        System.out.println("TupleExpr is " + tup);
-        
-        IndexPlanValidator ipv = new IndexPlanValidator(false);
-        Assert.assertEquals(true, ipv.isValid(tup));
-        
-    }
-    
-    
-    
-    @Test
-    public void testEvaluateTwoIndexTwoVarOrder4() {
-        
-        
-        System.out.println("********************Test number 
4***************************");
-        
-        // TODO Auto-generated method stub
-        String indexSparqlString = ""//
-                + "SELECT ?e ?c ?l  " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String indexSparqlString2 = ""//
-                + "SELECT ?e ?o ?l " //
-                + "{" //
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String queryString = ""//
-                + "SELECT ?e ?c ?l ?o " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-
-        
-       
-        SPARQLParser sp = new SPARQLParser();
-        ParsedQuery index1 = null;
-        ParsedQuery index2 = null;
-        try {
-            index1 = sp.parseQuery(indexSparqlString, null);
-            index2 = sp.parseQuery(indexSparqlString2, null);
-        } catch (MalformedQueryException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        
-          
-        List<ExternalTupleSet> index = Lists.newArrayList();
-        
-        SimpleExternalTupleSet ais1 = new 
SimpleExternalTupleSet((Projection)index1.getTupleExpr());
-        SimpleExternalTupleSet ais2 = new 
SimpleExternalTupleSet((Projection)index2.getTupleExpr());;
-                
-        index.add(ais1);
-        index.add(ais2);
-        
-        ParsedQuery pq = null;
-
-        try {
-            pq = sp.parseQuery(queryString, null);
-        } catch (MalformedQueryException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-       
-        ExternalProcessor processor = new ExternalProcessor(index);
-        TupleExpr tup = processor.process(pq.getTupleExpr());
-
-        System.out.println("TupleExpr is " + tup);
-        
-        IndexPlanValidator ipv = new IndexPlanValidator(false);
-        Assert.assertEquals(false, ipv.isValid(tup));
-        
-    }
-    
-    
-    
-    @Test
-    public void testEvaluateTwoIndexTwoVarOrder5() {
-        
-        System.out.println("********************Test number 
5***************************");
-        
-        // TODO Auto-generated method stub
-        String indexSparqlString = ""//
-                + "SELECT ?e ?l ?c  " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String indexSparqlString2 = ""//
-                + "SELECT ?l ?o ?e " //
-                + "{" //
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l ."//
-                + "  ?e <uri:talksTo> ?o . "//
-                + "}";//
-        
-        
-        String queryString = ""//
-                + "SELECT ?e ?c ?l ?o " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-
-        
-       
-        SPARQLParser sp = new SPARQLParser();
-        ParsedQuery index1 = null;
-        ParsedQuery index2 = null;
-        try {
-            index1 = sp.parseQuery(indexSparqlString, null);
-            index2 = sp.parseQuery(indexSparqlString2, null);
-        } catch (MalformedQueryException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        
-        
-          
-        List<ExternalTupleSet> index = Lists.newArrayList();
-        
-        SimpleExternalTupleSet ais1 = new 
SimpleExternalTupleSet((Projection)index1.getTupleExpr());
-        SimpleExternalTupleSet ais2 = new 
SimpleExternalTupleSet((Projection)index2.getTupleExpr());
-        
-        System.out.println("Supported variable orders are " + 
ais1.getSupportedVariableOrders() + ", " + ais2.getSupportedVariableOrders());
-                
-        index.add(ais2);
-        index.add(ais1);
-        
-        
-        ParsedQuery pq = null;
-
-        try {
-            pq = sp.parseQuery(queryString, null);
-        } catch (MalformedQueryException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-       
-        System.out.println("query assured binding names are " + 
pq.getTupleExpr().getAssuredBindingNames());
-        
-        ExternalProcessor processor = new ExternalProcessor(index);
-        TupleExpr tup = processor.process(pq.getTupleExpr());
-
-        System.out.println("TupleExpr is " + tup);
-        
-        IndexPlanValidator ipv = new IndexPlanValidator(false);
-        Assert.assertEquals(false, ipv.isValid(tup));
-        
-    }
-    
-    
-    
-    
-    
-    @Test
-    public void testEvaluateTwoIndexTwoVarOrder6() {
-        
-        
-        System.out.println("********************Test number 
6***************************");
-        
-        // TODO Auto-generated method stub
-        String indexSparqlString = ""//
-                + "SELECT ?e ?l ?c  " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String indexSparqlString2 = ""//
-                + "SELECT ?l ?e ?o " //
-                + "{" //
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String queryString = ""//
-                + "SELECT ?e ?c ?l ?o " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-
-        
-       
-        SPARQLParser sp = new SPARQLParser();
-        ParsedQuery index1 = null;
-        ParsedQuery index2 = null;
-        try {
-            index1 = sp.parseQuery(indexSparqlString, null);
-            index2 = sp.parseQuery(indexSparqlString2, null);
-        } catch (MalformedQueryException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        
-        
-      
-        List<ExternalTupleSet> index = Lists.newArrayList();
-        
-        SimpleExternalTupleSet ais1 = new 
SimpleExternalTupleSet((Projection)index1.getTupleExpr());
-        SimpleExternalTupleSet ais2 = new 
SimpleExternalTupleSet((Projection)index2.getTupleExpr());;
-                
-        index.add(ais2);
-        index.add(ais1);
-        
-        
-        ParsedQuery pq = null;
-
-        try {
-            pq = sp.parseQuery(queryString, null);
-        } catch (MalformedQueryException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-       
-        ExternalProcessor processor = new ExternalProcessor(index);
-        TupleExpr tup = processor.process(pq.getTupleExpr());
-
-        System.out.println("TupleExpr is " + tup);
-        
-        IndexPlanValidator ipv = new IndexPlanValidator(false);
-        Assert.assertEquals(true, ipv.isValid(tup));
-        
-    }
-    
-    
-    
-    
-    @Test
-    public void testEvaluateTwoIndexCrossProduct1() {
-        
-        System.out.println("********************Test number 
7***************************");
-        
-        // TODO Auto-generated method stub
-        String indexSparqlString = ""//
-                + "SELECT ?e ?l ?c  " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String indexSparqlString2 = ""//
-                + "SELECT ?e ?l ?o " //
-                + "{" //
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String queryString = ""//
-                + "SELECT ?e ?c ?l ?o ?f ?g " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?f <uri:talksTo> ?g . " //
-                + "}";//
-
-        
-       
-        SPARQLParser sp = new SPARQLParser();
-        ParsedQuery index1 = null;
-        ParsedQuery index2 = null;
-        try {
-            index1 = sp.parseQuery(indexSparqlString, null);
-            index2 = sp.parseQuery(indexSparqlString2, null);
-        } catch (MalformedQueryException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        
-       
-          
-        List<ExternalTupleSet> index = Lists.newArrayList();
-        
-        SimpleExternalTupleSet ais1 = new 
SimpleExternalTupleSet((Projection)index1.getTupleExpr());
-        SimpleExternalTupleSet ais2 = new 
SimpleExternalTupleSet((Projection)index2.getTupleExpr());;
-                
-        index.add(ais2);
-        index.add(ais1);
-        
-        
-        ParsedQuery pq = null;
-
-        try {
-            pq = sp.parseQuery(queryString, null);
-        } catch (MalformedQueryException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-       
-        ExternalProcessor processor = new ExternalProcessor(index);
-        TupleExpr tup = processor.process(pq.getTupleExpr());
-
-        System.out.println("TupleExpr is " + tup);
-        
-        IndexPlanValidator ipv = new IndexPlanValidator(true);
-        Assert.assertEquals(false, ipv.isValid(tup));
-        
-    }
-    
-    
-    
-    
-    @Test
-    public void testEvaluateTwoIndexCrossProduct2() {
-        
-        System.out.println("********************Test number 
8***************************");
-        
-        // TODO Auto-generated method stub
-        String indexSparqlString = ""//
-                + "SELECT ?e ?l ?c  " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String indexSparqlString2 = ""//
-                + "SELECT ?e ?l ?o " //
-                + "{" //
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String queryString = ""//
-                + "SELECT ?e ?c ?l ?o ?f ?g " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?f <uri:talksTo> ?g . " //
-                + "}";//
-
-        
-       
-        SPARQLParser sp = new SPARQLParser();
-        ParsedQuery index1 = null;
-        ParsedQuery index2 = null;
-        try {
-            index1 = sp.parseQuery(indexSparqlString, null);
-            index2 = sp.parseQuery(indexSparqlString2, null);
-        } catch (MalformedQueryException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        
-          
-        List<ExternalTupleSet> index = Lists.newArrayList();
-        
-        SimpleExternalTupleSet ais1 = new 
SimpleExternalTupleSet((Projection)index1.getTupleExpr());
-        SimpleExternalTupleSet ais2 = new 
SimpleExternalTupleSet((Projection)index2.getTupleExpr());;
-                
-        
-        index.add(ais1);
-        index.add(ais2);
-        
-        
-        ParsedQuery pq = null;
-
-        try {
-            pq = sp.parseQuery(queryString, null);
-        } catch (MalformedQueryException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-       
-        ExternalProcessor processor = new ExternalProcessor(index);
-        TupleExpr tup = processor.process(pq.getTupleExpr());
-
-        System.out.println("TupleExpr is " + tup);
-        
-        IndexPlanValidator ipv = new IndexPlanValidator(true);
-        Assert.assertEquals(false, ipv.isValid(tup));
-        
-    }
-    
-    
-    
-    @Test
-    public void testEvaluateTwoIndexCrossProduct3() {
-        
-        System.out.println("********************Test number 
9***************************");
-        
-        // TODO Auto-generated method stub
-        String indexSparqlString = ""//
-                + "SELECT ?e ?l ?c  " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String indexSparqlString2 = ""//
-                + "SELECT ?e ?l ?o " //
-                + "{" //
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l "//
-                + "}";//
-        
-        
-        String queryString = ""//
-                + "SELECT ?e ?c ?l ?o ?f ?g " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?f <uri:talksTo> ?g . " //
-                + "}";//
-
-        
-       
-        SPARQLParser sp = new SPARQLParser();
-        ParsedQuery index1 = null;
-        ParsedQuery index2 = null;
-        try {
-            index1 = sp.parseQuery(indexSparqlString, null);
-            index2 = sp.parseQuery(indexSparqlString2, null);
-        } catch (MalformedQueryException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        
-          
-        List<ExternalTupleSet> index = Lists.newArrayList();
-        
-        SimpleExternalTupleSet ais1 = new 
SimpleExternalTupleSet((Projection)index1.getTupleExpr());
-        SimpleExternalTupleSet ais2 = new 
SimpleExternalTupleSet((Projection)index2.getTupleExpr());;
-                
-        
-        index.add(ais1);
-        index.add(ais2);
-        
-        
-        ParsedQuery pq = null;
-
-        try {
-            pq = sp.parseQuery(queryString, null);
-        } catch (MalformedQueryException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-       
-        ExternalProcessor processor = new ExternalProcessor(index);
-        TupleExpr tup = processor.process(pq.getTupleExpr());
-
-        System.out.println("TupleExpr is " + tup);
-        
-        IndexPlanValidator ipv = new IndexPlanValidator(false);
-        Assert.assertEquals(true, ipv.isValid(tup));
-        
-    }
-    
-    
-    
-    
-    
-    
-   
-    
-    @Test
-    public void testEvaluateTwoIndexDiffVars() {
-        
-        System.out.println("********************Test number 
10***************************");
-        
-        // TODO Auto-generated method stub
-        String indexSparqlString = ""//
-                + "SELECT ?chicken ?dog ?pig  " //
-                + "{" //
-                + "  ?dog a ?chicken . "//
-                + "  ?dog <http://www.w3.org/2000/01/rdf-schema#label> ?pig "//
-                + "}";//
-        
-        
-        String indexSparqlString2 = ""//
-                + "SELECT ?fish ?ant ?turkey " //
-                + "{" //
-                + "  ?fish <uri:talksTo> ?turkey . "//
-                + "  ?turkey <http://www.w3.org/2000/01/rdf-schema#label> ?ant 
"//
-                + "}";//
-        
-        
-        String queryString = ""//
-                + "SELECT ?e ?c ?l ?o ?f ?g " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?f <uri:talksTo> ?g . " //
-                + "}";//
-
-        
-       
-        SPARQLParser sp = new SPARQLParser();
-        ParsedQuery index1 = null;
-        ParsedQuery index2 = null;
-        try {
-            index1 = sp.parseQuery(indexSparqlString, null);
-            index2 = sp.parseQuery(indexSparqlString2, null);
-        } catch (MalformedQueryException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        
-          
-        List<ExternalTupleSet> index = Lists.newArrayList();
-        
-        SimpleExternalTupleSet ais1 = new 
SimpleExternalTupleSet((Projection)index1.getTupleExpr());
-        SimpleExternalTupleSet ais2 = new 
SimpleExternalTupleSet((Projection)index2.getTupleExpr());;
-                
-        
-        index.add(ais1);
-        index.add(ais2);
-        
-        
-        ParsedQuery pq = null;
-
-        try {
-            pq = sp.parseQuery(queryString, null);
-        } catch (MalformedQueryException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-       
-        ExternalProcessor processor = new ExternalProcessor(index);
-        TupleExpr tup = processor.process(pq.getTupleExpr());
-
-        System.out.println("TupleExpr is " + tup);
-        
-        IndexPlanValidator ipv = new IndexPlanValidator(false);
-        Assert.assertEquals(false, ipv.isValid(tup));
-        
-    }
-    
-    
-    
-    @Test
-    public void testEvaluateTwoIndexDiffVars2() {
-        
-        System.out.println("********************Test number 
11***************************");
-        
-        // TODO Auto-generated method stub
-        String indexSparqlString = ""//
-                + "SELECT ?dog ?pig ?chicken  " //
-                + "{" //
-                + "  ?dog a ?chicken . "//
-                + "  ?dog <http://www.w3.org/2000/01/rdf-schema#label> ?pig "//
-                + "}";//
-        
-        
-        String indexSparqlString2 = ""//
-                + "SELECT ?fish ?ant ?turkey " //
-                + "{" //
-                + "  ?fish <uri:talksTo> ?turkey . "//
-                + "  ?turkey <http://www.w3.org/2000/01/rdf-schema#label> ?ant 
"//
-                + "}";//
-        
-        
-        String queryString = ""//
-                + "SELECT ?e ?c ?l ?o ?f ?g " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?f <uri:talksTo> ?g . " //
-                + "}";//
-
-        
-       
-        SPARQLParser sp = new SPARQLParser();
-        ParsedQuery index1 = null;
-        ParsedQuery index2 = null;
-        try {
-            index1 = sp.parseQuery(indexSparqlString, null);
-            index2 = sp.parseQuery(indexSparqlString2, null);
-        } catch (MalformedQueryException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        
-          
-        List<ExternalTupleSet> index = Lists.newArrayList();
-        
-        SimpleExternalTupleSet ais1 = new 
SimpleExternalTupleSet((Projection)index1.getTupleExpr());
-        SimpleExternalTupleSet ais2 = new 
SimpleExternalTupleSet((Projection)index2.getTupleExpr());;
-                
-        
-        index.add(ais1);
-        index.add(ais2);
-        
-        
-        ParsedQuery pq = null;
-
-        try {
-            pq = sp.parseQuery(queryString, null);
-        } catch (MalformedQueryException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-       
-        ExternalProcessor processor = new ExternalProcessor(index);
-        TupleExpr tup = processor.process(pq.getTupleExpr());
-
-        System.out.println("TupleExpr is " + tup);
-        
-        IndexPlanValidator ipv = new IndexPlanValidator(false);
-        Assert.assertEquals(true, ipv.isValid(tup));
-        
-    }
-    
-    
-    @Test
-    public void testEvaluateTwoIndexDiffVars3() {
-        
-        System.out.println("********************Test number 
11***************************");
-        
-        // TODO Auto-generated method stub
-        String indexSparqlString = ""//
-                + "SELECT ?pig ?dog ?chicken  " //
-                + "{" //
-                + "  ?dog a ?chicken . "//
-                + "  ?dog <http://www.w3.org/2000/01/rdf-schema#label> ?pig "//
-                + "}";//
-        
-        
-        String indexSparqlString2 = ""//
-                + "SELECT ?fish ?ant ?turkey " //
-                + "{" //
-                + "  ?fish <uri:talksTo> ?turkey . "//
-                + "  ?turkey <http://www.w3.org/2000/01/rdf-schema#label> ?ant 
"//
-                + "}";//
-        
-        
-        String queryString = ""//
-                + "SELECT ?e ?c ?l ?o ?f ?g " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?f <uri:talksTo> ?g . " //
-                + "}";//
-
-        
-       
-        SPARQLParser sp = new SPARQLParser();
-        ParsedQuery index1 = null;
-        ParsedQuery index2 = null;
-        try {
-            index1 = sp.parseQuery(indexSparqlString, null);
-            index2 = sp.parseQuery(indexSparqlString2, null);
-        } catch (MalformedQueryException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        
-          
-        List<ExternalTupleSet> index = Lists.newArrayList();
-        
-        SimpleExternalTupleSet ais1 = new 
SimpleExternalTupleSet((Projection)index1.getTupleExpr());
-        SimpleExternalTupleSet ais2 = new 
SimpleExternalTupleSet((Projection)index2.getTupleExpr());;
-                
-        
-        index.add(ais1);
-        index.add(ais2);
-        
-        
-        ParsedQuery pq = null;
-
-        try {
-            pq = sp.parseQuery(queryString, null);
-        } catch (MalformedQueryException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-       
-        ExternalProcessor processor = new ExternalProcessor(index);
-        TupleExpr tup = processor.process(pq.getTupleExpr());
-
-        System.out.println("TupleExpr is " + tup);
-        
-        IndexPlanValidator ipv = new IndexPlanValidator(false);
-        Assert.assertEquals(true, ipv.isValid(tup));
-        
-    }
-    
-    
-    
-    
-    @Test
-    public void testEvaluateTwoIndexDiffVarsDirProd() {
-        
-        System.out.println("********************Test number 
12***************************");
-        
-        // TODO Auto-generated method stub
-        String indexSparqlString = ""//
-                + "SELECT ?pig ?dog ?chicken  " //
-                + "{" //
-                + "  ?dog a ?chicken . "//
-                + "  ?dog <http://www.w3.org/2000/01/rdf-schema#label> ?pig "//
-                + "}";//
-        
-        
-        String indexSparqlString2 = ""//
-                + "SELECT ?fish ?ant ?turkey " //
-                + "{" //
-                + "  ?fish <uri:talksTo> ?turkey . "//
-                + "  ?turkey <http://www.w3.org/2000/01/rdf-schema#label> ?ant 
"//
-                + "}";//
-        
-        
-        String queryString = ""//
-                + "SELECT ?e ?c ?l ?o ?f ?g " //
-                + "{" //
-                + "  ?e a ?c . "//
-                + "  ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?e <uri:talksTo> ?o . "//
-                + "  ?o <http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
-                + "  ?f <uri:talksTo> ?g . " //
-                + "}";//
-
-        
-       
-        SPARQLParser sp = new SPARQLParser();
-        ParsedQuery index1 = null;
-        ParsedQuery index2 = null;
-        try {
-            index1 = sp.parseQuery(indexSparqlString, null);
-            index2 = sp.parseQuery(indexSparqlString2, null);
-        } catch (MalformedQueryException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        
-          
-        List<ExternalTupleSet> index = Lists.newArrayList();
-        
-        SimpleExternalTupleSet ais1 = new 
SimpleExternalTupleSet((Projection)index1.getTupleExpr());
-        SimpleExternalTupleSet ais2 = new 
SimpleExternalTupleSet((Projection)index2.getTupleExpr());;
-                
-        
-        index.add(ais1);
-        index.add(ais2);
-        
-        
-        ParsedQuery pq = null;
-
-        try {
-            pq = sp.parseQuery(queryString, null);
-        } catch (MalformedQueryException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-       
-        ExternalProcessor processor = new ExternalProcessor(index);
-        TupleExpr tup = processor.process(pq.getTupleExpr());
-
-        System.out.println("TupleExpr is " + tup);
-        
-        IndexPlanValidator ipv = new IndexPlanValidator(true);
-        Assert.assertEquals(false, ipv.isValid(tup));
-        
-    }
-    
-    
-    
-    @Test
-    public void testValidTupleIterator() throws Exception {
-        
-        System.out.println("********************Test number 
13***************************");
-        
-        String q1 = ""//
-                + "SELECT ?f ?m ?d ?h ?i " //
-                + "{" //
-                + "  ?f a ?m ."//
-                + "  ?m <http://www.w3.org/2000/01/rdf-schema#label> ?d ."//
-                + "  ?d <uri:talksTo> ?f . "//
-                + "  ?d <uri:hangOutWith> ?f ." //
-                + "  ?f <uri:hangOutWith> ?h ." //
-                + "  ?f <uri:associatesWith> ?i ." //
-                + "  ?i <uri:associatesWith> ?h ." //
-                + "}";//
-
-        String q2 = ""//
-                + "SELECT ?t ?s ?u " //
-                + "{" //
-                + "  ?s a ?t ."//
-                + "  ?t <http://www.w3.org/2000/01/rdf-schema#label> ?u ."//
-                + "  ?u <uri:talksTo> ?s . "//
-                + "}";//
-        
-        
-        String q3 = ""//
-                + "SELECT ?s ?t ?u " //
-                + "{" //
-                + "  ?s <uri:hangOutWith> ?t ." //
-                + "  ?t <uri:hangOutWith> ?u ." //
-                + "}";//
-        
-        String q4 = ""//
-                + "SELECT ?s ?t ?u " //
-                + "{" //
-                + "  ?s <uri:associatesWith> ?t ." //
-                + "  ?t <uri:associatesWith> ?u ." //
-                + "}";//
-        
-      
-        
-        
-        
-
-        SPARQLParser parser = new SPARQLParser();
-
-        ParsedQuery pq1 = parser.parseQuery(q1, null);
-        ParsedQuery pq2 = parser.parseQuery(q2, null);
-        ParsedQuery pq3 = parser.parseQuery(q3, null);
-        ParsedQuery pq4 = parser.parseQuery(q4, null);
-     
-
-        SimpleExternalTupleSet extTup1 = new 
SimpleExternalTupleSet((Projection) pq2.getTupleExpr());
-        SimpleExternalTupleSet extTup2 = new 
SimpleExternalTupleSet((Projection) pq3.getTupleExpr());
-        SimpleExternalTupleSet extTup3 = new 
SimpleExternalTupleSet((Projection) pq4.getTupleExpr());
-        
-        List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
-
-        list.add(extTup2);
-        list.add(extTup1);
-        list.add(extTup3);
-
-        IndexedExecutionPlanGenerator iep = new 
IndexedExecutionPlanGenerator(pq1.getTupleExpr(), list);
-
-        Iterator<TupleExpr> plans = (new 
TupleExecutionPlanGenerator()).getPlans(iep.getIndexedTuples());
-        IndexPlanValidator ipv = new IndexPlanValidator(true);
-        Iterator<TupleExpr> validPlans = ipv.getValidTuples(plans);
-        
-        int size = 0;
-        
-        while(validPlans.hasNext()) {
-            Assert.assertTrue(validPlans.hasNext());
-            validPlans.next();
-            size++;
-        }
-        
-        Assert.assertTrue(!validPlans.hasNext());
-        Assert.assertEquals(732, size);
-
-       
-
-    }
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
+       @Test
+       public void testEvaluateTwoIndexTwoVarOrder1()
+                       throws MalformedQueryException {
+
+               System.out
+                               .println("********************Test number 
1***************************");
+
+               String indexSparqlString = ""//
+                               + "SELECT ?c ?e ?l  " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String indexSparqlString2 = ""//
+                               + "SELECT ?e ?o ?l " //
+                               + "{" //
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String queryString = ""//
+                               + "SELECT ?e ?c ?l ?o " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               SPARQLParser sp = new SPARQLParser();
+               ParsedQuery index1 = sp.parseQuery(indexSparqlString, null);
+               ParsedQuery index2 = sp.parseQuery(indexSparqlString2, null);
+               List<ExternalTupleSet> index = Lists.newArrayList();
+
+               SimpleExternalTupleSet ais1 = new SimpleExternalTupleSet(
+                               (Projection) index1.getTupleExpr());
+               SimpleExternalTupleSet ais2 = new SimpleExternalTupleSet(
+                               (Projection) index2.getTupleExpr());
+
+               index.add(ais1);
+               index.add(ais2);
+
+               ParsedQuery pq = sp.parseQuery(queryString, null);
+               TupleExpr tup = pq.getTupleExpr().clone();
+               PrecompJoinOptimizer pcj = new PrecompJoinOptimizer(index, 
false);
+               pcj.optimize(tup, null, null);
+
+               System.out.println("TupleExpr is " + tup);
+
+               IndexPlanValidator ipv = new IndexPlanValidator(false);
+               Assert.assertEquals(false, ipv.isValid(tup));
+
+       }
+
+       @Test
+       public void testEvaluateTwoIndexTwoVarOrder2()
+                       throws MalformedQueryException {
+
+               System.out
+                               .println("********************Test number 
2***************************");
+
+               String indexSparqlString = ""//
+                               + "SELECT ?e ?l ?c  " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String indexSparqlString2 = ""//
+                               + "SELECT ?e ?o ?l " //
+                               + "{" //
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String queryString = ""//
+                               + "SELECT ?e ?c ?l ?o " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               SPARQLParser sp = new SPARQLParser();
+               ParsedQuery index1 = sp.parseQuery(indexSparqlString, null);
+               ParsedQuery index2 = sp.parseQuery(indexSparqlString2, null);
+
+               List<ExternalTupleSet> index = Lists.newArrayList();
+
+               SimpleExternalTupleSet ais1 = new SimpleExternalTupleSet(
+                               (Projection) index1.getTupleExpr());
+               SimpleExternalTupleSet ais2 = new SimpleExternalTupleSet(
+                               (Projection) index2.getTupleExpr());
+
+               index.add(ais1);
+               index.add(ais2);
+
+               ParsedQuery pq = sp.parseQuery(queryString, null);
+               TupleExpr tup = pq.getTupleExpr().clone();
+               PrecompJoinOptimizer pcj = new PrecompJoinOptimizer(index, 
false);
+               pcj.optimize(tup, null, null);
+
+               System.out.println("TupleExpr is " + tup);
+
+               IndexPlanValidator ipv = new IndexPlanValidator(false);
+               Assert.assertEquals(true, ipv.isValid(tup));
+
+       }
+
+       @Test
+       public void testEvaluateTwoIndexTwoVarOrder3()
+                       throws MalformedQueryException {
+
+               System.out
+                               .println("********************Test number 
3***************************");
+
+               String indexSparqlString = ""//
+                               + "SELECT ?l ?e ?c  " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String indexSparqlString2 = ""//
+                               + "SELECT ?e ?o ?l " //
+                               + "{" //
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String queryString = ""//
+                               + "SELECT ?e ?c ?l ?o " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               SPARQLParser sp = new SPARQLParser();
+               ParsedQuery index1 = sp.parseQuery(indexSparqlString, null);
+               ParsedQuery index2 = sp.parseQuery(indexSparqlString2, null);
+
+               List<ExternalTupleSet> index = Lists.newArrayList();
+
+               SimpleExternalTupleSet ais1 = new SimpleExternalTupleSet(
+                               (Projection) index1.getTupleExpr());
+               SimpleExternalTupleSet ais2 = new SimpleExternalTupleSet(
+                               (Projection) index2.getTupleExpr());
+
+               index.add(ais1);
+               index.add(ais2);
+
+               ParsedQuery pq = sp.parseQuery(queryString, null);
+               TupleExpr tup = pq.getTupleExpr().clone();
+               PrecompJoinOptimizer pcj = new PrecompJoinOptimizer(index, 
false);
+               pcj.optimize(tup, null, null);
+
+               System.out.println("TupleExpr is " + tup);
+
+               IndexPlanValidator ipv = new IndexPlanValidator(false);
+               Assert.assertEquals(true, ipv.isValid(tup));
+
+       }
+
+       @Test
+       public void testEvaluateTwoIndexTwoVarOrder4()
+                       throws MalformedQueryException {
+
+               System.out
+                               .println("********************Test number 
4***************************");
+
+               String indexSparqlString = ""//
+                               + "SELECT ?e ?c ?l  " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String indexSparqlString2 = ""//
+                               + "SELECT ?e ?o ?l " //
+                               + "{" //
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String queryString = ""//
+                               + "SELECT ?e ?c ?l ?o " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               SPARQLParser sp = new SPARQLParser();
+               ParsedQuery index1 = sp.parseQuery(indexSparqlString, null);
+               ParsedQuery index2 = sp.parseQuery(indexSparqlString2, null);
+
+               List<ExternalTupleSet> index = Lists.newArrayList();
+
+               SimpleExternalTupleSet ais1 = new SimpleExternalTupleSet(
+                               (Projection) index1.getTupleExpr());
+               SimpleExternalTupleSet ais2 = new SimpleExternalTupleSet(
+                               (Projection) index2.getTupleExpr());
+
+               index.add(ais1);
+               index.add(ais2);
+
+               ParsedQuery pq = sp.parseQuery(queryString, null);
+               TupleExpr tup = pq.getTupleExpr().clone();
+               PrecompJoinOptimizer pcj = new PrecompJoinOptimizer(index, 
false);
+               pcj.optimize(tup, null, null);
+
+               System.out.println("TupleExpr is " + tup);
+
+               IndexPlanValidator ipv = new IndexPlanValidator(false);
+               Assert.assertEquals(false, ipv.isValid(tup));
+
+       }
+
+
+       @Test
+       public void testEvaluateTwoIndexTwoVarOrder6()
+                       throws MalformedQueryException {
+
+               System.out
+                               .println("********************Test number 
6***************************");
+
+               String indexSparqlString = ""//
+                               + "SELECT ?e ?l ?c  " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String indexSparqlString2 = ""//
+                               + "SELECT ?l ?e ?o " //
+                               + "{" //
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String queryString = ""//
+                               + "SELECT ?e ?c ?l ?o " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               SPARQLParser sp = new SPARQLParser();
+               ParsedQuery index1 = sp.parseQuery(indexSparqlString, null);
+               ParsedQuery index2 = sp.parseQuery(indexSparqlString2, null);
+
+               List<ExternalTupleSet> index = Lists.newArrayList();
+
+               SimpleExternalTupleSet ais1 = new SimpleExternalTupleSet(
+                               (Projection) index1.getTupleExpr());
+               SimpleExternalTupleSet ais2 = new SimpleExternalTupleSet(
+                               (Projection) index2.getTupleExpr());
+
+               index.add(ais2);
+               index.add(ais1);
+
+               ParsedQuery pq = sp.parseQuery(queryString, null);
+               TupleExpr tup = pq.getTupleExpr().clone();
+               PrecompJoinOptimizer pcj = new PrecompJoinOptimizer(index, 
false);
+               pcj.optimize(tup, null, null);
+
+               System.out.println("TupleExpr is " + tup);
+
+               IndexPlanValidator ipv = new IndexPlanValidator(false);
+               Assert.assertEquals(true, ipv.isValid(tup));
+
+       }
+
+       @Test
+       public void testEvaluateTwoIndexCrossProduct1()
+                       throws MalformedQueryException {
+
+               System.out
+                               .println("********************Test number 
7***************************");
+
+               String indexSparqlString = ""//
+                               + "SELECT ?e ?l ?c  " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String indexSparqlString2 = ""//
+                               + "SELECT ?e ?l ?o " //
+                               + "{" //
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String queryString = ""//
+                               + "SELECT ?e ?c ?l ?o ?f ?g " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?f <uri:talksTo> ?g . " //
+                               + "}";//
+
+               SPARQLParser sp = new SPARQLParser();
+               ParsedQuery index1 = sp.parseQuery(indexSparqlString, null);
+               ParsedQuery index2 = sp.parseQuery(indexSparqlString2, null);
+               List<ExternalTupleSet> index = Lists.newArrayList();
+
+               SimpleExternalTupleSet ais1 = new SimpleExternalTupleSet(
+                               (Projection) index1.getTupleExpr());
+               SimpleExternalTupleSet ais2 = new SimpleExternalTupleSet(
+                               (Projection) index2.getTupleExpr());
+
+               index.add(ais2);
+               index.add(ais1);
+
+               ParsedQuery pq = sp.parseQuery(queryString, null);
+               TupleExpr tup = pq.getTupleExpr().clone();
+               PrecompJoinOptimizer pcj = new PrecompJoinOptimizer(index, 
false);
+               pcj.optimize(tup, null, null);
+
+               IndexPlanValidator ipv = new IndexPlanValidator(true);
+               Assert.assertEquals(false, ipv.isValid(tup));
+
+       }
+
+       @Test
+       public void testEvaluateTwoIndexCrossProduct2()
+                       throws MalformedQueryException {
+
+               System.out
+                               .println("********************Test number 
8***************************");
+
+               String indexSparqlString = ""//
+                               + "SELECT ?e ?l ?c  " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String indexSparqlString2 = ""//
+                               + "SELECT ?e ?l ?o " //
+                               + "{" //
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String queryString = ""//
+                               + "SELECT ?e ?c ?l ?o ?f ?g " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?f <uri:talksTo> ?g . " //
+                               + "}";//
+
+               SPARQLParser sp = new SPARQLParser();
+               ParsedQuery index1 = sp.parseQuery(indexSparqlString, null);
+               ParsedQuery index2 = sp.parseQuery(indexSparqlString2, null);
+
+               List<ExternalTupleSet> index = Lists.newArrayList();
+
+               SimpleExternalTupleSet ais1 = new SimpleExternalTupleSet(
+                               (Projection) index1.getTupleExpr());
+               SimpleExternalTupleSet ais2 = new SimpleExternalTupleSet(
+                               (Projection) index2.getTupleExpr());
+
+               index.add(ais1);
+               index.add(ais2);
+
+               ParsedQuery pq = sp.parseQuery(queryString, null);
+               TupleExpr tup = pq.getTupleExpr().clone();
+               PrecompJoinOptimizer pcj = new PrecompJoinOptimizer(index, 
false);
+               pcj.optimize(tup, null, null);
+
+               IndexPlanValidator ipv = new IndexPlanValidator(true);
+               Assert.assertEquals(false, ipv.isValid(tup));
+
+       }
+
+       @Test
+       public void testEvaluateTwoIndexCrossProduct3()
+                       throws MalformedQueryException {
+
+               System.out
+                               .println("********************Test number 
9***************************");
+
+               String indexSparqlString = ""//
+                               + "SELECT ?e ?l ?c  " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String indexSparqlString2 = ""//
+                               + "SELECT ?e ?l ?o " //
+                               + "{" //
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l "//
+                               + "}";//
+
+               String queryString = ""//
+                               + "SELECT ?e ?c ?l ?o ?f ?g " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?f <uri:talksTo> ?g . " //
+                               + "}";//
+
+               SPARQLParser sp = new SPARQLParser();
+               ParsedQuery index1 = sp.parseQuery(indexSparqlString, null);
+               ParsedQuery index2 = sp.parseQuery(indexSparqlString2, null);
+
+               List<ExternalTupleSet> index = Lists.newArrayList();
+
+               SimpleExternalTupleSet ais1 = new SimpleExternalTupleSet(
+                               (Projection) index1.getTupleExpr());
+               SimpleExternalTupleSet ais2 = new SimpleExternalTupleSet(
+                               (Projection) index2.getTupleExpr());
+
+               index.add(ais1);
+               index.add(ais2);
+
+               ParsedQuery pq = sp.parseQuery(queryString, null);
+               TupleExpr tup = pq.getTupleExpr().clone();
+               PrecompJoinOptimizer pcj = new PrecompJoinOptimizer(index, 
false);
+               pcj.optimize(tup, null, null);
+
+               IndexPlanValidator ipv = new IndexPlanValidator(false);
+               Assert.assertEquals(true, ipv.isValid(tup));
+
+       }
+
+       @Test
+       public void testEvaluateTwoIndexDiffVars() throws 
MalformedQueryException {
+
+               System.out
+                               .println("********************Test number 
10***************************");
+
+               String indexSparqlString = ""//
+                               + "SELECT ?chicken ?dog ?pig  " //
+                               + "{" //
+                               + "  ?dog a ?chicken . "//
+                               + "  ?dog 
<http://www.w3.org/2000/01/rdf-schema#label> ?pig "//
+                               + "}";//
+
+               String indexSparqlString2 = ""//
+                               + "SELECT ?fish ?ant ?turkey " //
+                               + "{" //
+                               + "  ?fish <uri:talksTo> ?turkey . "//
+                               + "  ?turkey 
<http://www.w3.org/2000/01/rdf-schema#label> ?ant "//
+                               + "}";//
+
+               String queryString = ""//
+                               + "SELECT ?e ?c ?l ?o ?f ?g " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?f <uri:talksTo> ?g . " //
+                               + "}";//
+
+               SPARQLParser sp = new SPARQLParser();
+               ParsedQuery index1 = sp.parseQuery(indexSparqlString, null);
+               ParsedQuery index2 = sp.parseQuery(indexSparqlString2, null);
+
+               List<ExternalTupleSet> index = Lists.newArrayList();
+
+               SimpleExternalTupleSet ais1 = new SimpleExternalTupleSet(
+                               (Projection) index1.getTupleExpr());
+               SimpleExternalTupleSet ais2 = new SimpleExternalTupleSet(
+                               (Projection) index2.getTupleExpr());
+
+               index.add(ais1);
+               index.add(ais2);
+
+               ParsedQuery pq = sp.parseQuery(queryString, null);
+               TupleExpr tup = pq.getTupleExpr().clone();
+               PrecompJoinOptimizer pcj = new PrecompJoinOptimizer(index, 
false);
+               pcj.optimize(tup, null, null);
+
+               IndexPlanValidator ipv = new IndexPlanValidator(false);
+               Assert.assertEquals(false, ipv.isValid(tup));
+
+       }
+
+       @Test
+       public void testEvaluateTwoIndexDiffVars2() throws 
MalformedQueryException {
+
+               System.out
+                               .println("********************Test number 
11***************************");
+
+               String indexSparqlString = ""//
+                               + "SELECT ?dog ?pig ?chicken  " //
+                               + "{" //
+                               + "  ?dog a ?chicken . "//
+                               + "  ?dog 
<http://www.w3.org/2000/01/rdf-schema#label> ?pig "//
+                               + "}";//
+
+               String indexSparqlString2 = ""//
+                               + "SELECT ?fish ?ant ?turkey " //
+                               + "{" //
+                               + "  ?fish <uri:talksTo> ?turkey . "//
+                               + "  ?turkey 
<http://www.w3.org/2000/01/rdf-schema#label> ?ant "//
+                               + "}";//
+
+               String queryString = ""//
+                               + "SELECT ?e ?c ?l ?o ?f ?g " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?f <uri:talksTo> ?g . " //
+                               + "}";//
+
+               SPARQLParser sp = new SPARQLParser();
+               ParsedQuery index1 = sp.parseQuery(indexSparqlString, null);
+               ParsedQuery index2 = sp.parseQuery(indexSparqlString2, null);
+
+               List<ExternalTupleSet> index = Lists.newArrayList();
+
+               SimpleExternalTupleSet ais1 = new SimpleExternalTupleSet(
+                               (Projection) index1.getTupleExpr());
+               SimpleExternalTupleSet ais2 = new SimpleExternalTupleSet(
+                               (Projection) index2.getTupleExpr());
+
+               index.add(ais1);
+               index.add(ais2);
+
+               ParsedQuery pq = sp.parseQuery(queryString, null);
+               TupleExpr tup = pq.getTupleExpr().clone();
+               PrecompJoinOptimizer pcj = new PrecompJoinOptimizer(index, 
false);
+               pcj.optimize(tup, null, null);
+
+               IndexPlanValidator ipv = new IndexPlanValidator(false);
+               Assert.assertEquals(true, ipv.isValid(tup));
+
+       }
+
+       @Test
+       public void testEvaluateTwoIndexDiffVars3() throws 
MalformedQueryException {
+
+               System.out
+                               .println("********************Test number 
11***************************");
+
+               String indexSparqlString = ""//
+                               + "SELECT ?pig ?dog ?chicken  " //
+                               + "{" //
+                               + "  ?dog a ?chicken . "//
+                               + "  ?dog 
<http://www.w3.org/2000/01/rdf-schema#label> ?pig "//
+                               + "}";//
+
+               String indexSparqlString2 = ""//
+                               + "SELECT ?fish ?ant ?turkey " //
+                               + "{" //
+                               + "  ?fish <uri:talksTo> ?turkey . "//
+                               + "  ?turkey 
<http://www.w3.org/2000/01/rdf-schema#label> ?ant "//
+                               + "}";//
+
+               String queryString = ""//
+                               + "SELECT ?e ?c ?l ?o ?f ?g " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?f <uri:talksTo> ?g . " //
+                               + "}";//
+
+               SPARQLParser sp = new SPARQLParser();
+               ParsedQuery index1 = sp.parseQuery(indexSparqlString, null);
+               ParsedQuery index2 = sp.parseQuery(indexSparqlString2, null);
+
+               List<ExternalTupleSet> index = Lists.newArrayList();
+
+               SimpleExternalTupleSet ais1 = new SimpleExternalTupleSet(
+                               (Projection) index1.getTupleExpr());
+               SimpleExternalTupleSet ais2 = new SimpleExternalTupleSet(
+                               (Projection) index2.getTupleExpr());
+
+               index.add(ais1);
+               index.add(ais2);
+
+               ParsedQuery pq = sp.parseQuery(queryString, null);
+               TupleExpr tup = pq.getTupleExpr().clone();
+               PrecompJoinOptimizer pcj = new PrecompJoinOptimizer(index, 
false);
+               pcj.optimize(tup, null, null);
+
+               IndexPlanValidator ipv = new IndexPlanValidator(false);
+               Assert.assertEquals(true, ipv.isValid(tup));
+
+       }
+
+       @Test
+       public void testEvaluateTwoIndexDiffVarsDirProd()
+                       throws MalformedQueryException {
+
+               System.out
+                               .println("********************Test number 
12***************************");
+
+               String indexSparqlString = ""//
+                               + "SELECT ?pig ?dog ?chicken  " //
+                               + "{" //
+                               + "  ?dog a ?chicken . "//
+                               + "  ?dog 
<http://www.w3.org/2000/01/rdf-schema#label> ?pig "//
+                               + "}";//
+
+               String indexSparqlString2 = ""//
+                               + "SELECT ?fish ?ant ?turkey " //
+                               + "{" //
+                               + "  ?fish <uri:talksTo> ?turkey . "//
+                               + "  ?turkey 
<http://www.w3.org/2000/01/rdf-schema#label> ?ant "//
+                               + "}";//
+
+               String queryString = ""//
+                               + "SELECT ?e ?c ?l ?o ?f ?g " //
+                               + "{" //
+                               + "  ?e a ?c . "//
+                               + "  ?e 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?e <uri:talksTo> ?o . "//
+                               + "  ?o 
<http://www.w3.org/2000/01/rdf-schema#label> ?l . "//
+                               + "  ?f <uri:talksTo> ?g . " //
+                               + "}";//
+
+               SPARQLParser sp = new SPARQLParser();
+               ParsedQuery index1 = sp.parseQuery(indexSparqlString, null);
+               ParsedQuery index2 = sp.parseQuery(indexSparqlString2, null);
+
+               List<ExternalTupleSet> index = Lists.newArrayList();
+
+               SimpleExternalTupleSet ais1 = new SimpleExternalTupleSet(
+                               (Projection) index1.getTupleExpr());
+               SimpleExternalTupleSet ais2 = new SimpleExternalTupleSet(
+                               (Projection) index2.getTupleExpr());
+
+               index.add(ais1);
+               index.add(ais2);
+
+               ParsedQuery pq = sp.parseQuery(queryString, null);
+               TupleExpr tup = pq.getTupleExpr().clone();
+               PrecompJoinOptimizer pcj = new PrecompJoinOptimizer(index, 
false);
+               pcj.optimize(tup, null, null);
+
+               IndexPlanValidator ipv = new IndexPlanValidator(true);
+               Assert.assertEquals(false, ipv.isValid(tup));
+
+       }
+
+       @Test
+       public void testValidTupleIterator() throws Exception {
+
+               System.out
+                               .println("********************Test number 
13***************************");
+
+               String q1 = ""//
+                               + "SELECT ?f ?m ?d ?h ?i " //
+                               + "{" //
+                               + "  ?f a ?m ."//
+                               + "  ?m 
<http://www.w3.org/2000/01/rdf-schema#label> ?d ."//
+                               + "  ?d <uri:talksTo> ?f . "//
+                               + "  ?d <uri:hangOutWith> ?f ." //
+                               + "  ?f <uri:hangOutWith> ?h ." //
+                               + "  ?f <uri:associatesWith> ?i ." //
+                               + "  ?i <uri:associatesWith> ?h ." //
+                               + "}";//
+
+               String q2 = ""//
+                               + "SELECT ?t ?s ?u " //
+                               + "{" //
+                               + "  ?s a ?t ."//
+                               + "  ?t 
<http://www.w3.org/2000/01/rdf-schema#label> ?u ."//
+                               + "  ?u <uri:talksTo> ?s . "//
+                               + "}";//
+
+               String q3 = ""//
+                               + "SELECT ?s ?t ?u " //
+                               + "{" //
+                               + "  ?s <uri:hangOutWith> ?t ." //
+                               + "  ?t <uri:hangOutWith> ?u ." //
+                               + "}";//
+
+               String q4 = ""//
+                               + "SELECT ?s ?t ?u " //
+                               + "{" //
+                               + "  ?s <uri:associatesWith> ?t ." //
+                               + "  ?t <uri:associatesWith> ?u ." //
+                               + "}";//
+
+               SPARQLParser parser = new SPARQLParser();
+
+               ParsedQuery pq1 = parser.parseQuery(q1, null);
+               ParsedQuery pq2 = parser.parseQuery(q2, null);
+               ParsedQuery pq3 = parser.parseQuery(q3, null);
+               ParsedQuery pq4 = parser.parseQuery(q4, null);
+
+               SimpleExternalTupleSet extTup1 = new SimpleExternalTupleSet(
+                               (Projection) pq2.getTupleExpr());
+               SimpleExternalTupleSet extTup2 = new SimpleExternalTupleSet(
+                               (Projection) pq3.getTupleExpr());
+               SimpleExternalTupleSet extTup3 = new SimpleExternalTupleSet(
+                               (Projection) pq4.getTupleExpr());
+
+               List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
+
+               list.add(extTup2);
+               list.add(extTup1);
+               list.add(extTup3);
+
+               IndexedExecutionPlanGenerator iep = new 
IndexedExecutionPlanGenerator(
+                               pq1.getTupleExpr(), list);
+
+               Iterator<TupleExpr> plans = new TupleExecutionPlanGenerator()
+                               .getPlans(iep.getIndexedTuples());
+               IndexPlanValidator ipv = new IndexPlanValidator(true);
+               Iterator<TupleExpr> validPlans = ipv.getValidTuples(plans);
+
+               int size = 0;
+
+               while (validPlans.hasNext()) {
+                       Assert.assertTrue(validPlans.hasNext());
+                       validPlans.next();
+                       size++;
+               }
+
+               Assert.assertTrue(!validPlans.hasNext());
+               Assert.assertEquals(732, size);
+
+       }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/c12f58f4/extras/indexing/src/test/java/mvm/rya/indexing/IndexPlanValidator/IndexedExecutionPlanGeneratorTest.java
----------------------------------------------------------------------
diff --git 
a/extras/indexing/src/test/java/mvm/rya/indexing/IndexPlanValidator/IndexedExecutionPlanGeneratorTest.java
 
b/extras/indexing/src/test/java/mvm/rya/indexing/IndexPlanValidator/IndexedExecutionPlanGeneratorTest.java
index 79a6656..296a010 100644
--- 
a/extras/indexing/src/test/java/mvm/rya/indexing/IndexPlanValidator/IndexedExecutionPlanGeneratorTest.java
+++ 
b/extras/indexing/src/test/java/mvm/rya/indexing/IndexPlanValidator/IndexedExecutionPlanGeneratorTest.java
@@ -8,9 +8,9 @@ package mvm.rya.indexing.IndexPlanValidator;
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -19,405 +19,350 @@ package mvm.rya.indexing.IndexPlanValidator;
  * under the License.
  */
 
-
-
-
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.NoSuchElementException;
-import java.util.Set;
-import junit.framework.Assert;
-import mvm.rya.indexing.external.ExternalProcessor;
+
 import mvm.rya.indexing.external.tupleSet.ExternalTupleSet;
 import mvm.rya.indexing.external.tupleSet.SimpleExternalTupleSet;
 
+import org.junit.Assert;
 import org.junit.Test;
 import org.openrdf.query.algebra.Projection;
 import org.openrdf.query.algebra.TupleExpr;
 import org.openrdf.query.parser.ParsedQuery;
 import org.openrdf.query.parser.sparql.SPARQLParser;
 
-import com.google.common.collect.Lists;
-
 public class IndexedExecutionPlanGeneratorTest {
 
-    private String q7 = ""//
-            + "SELECT ?s ?t ?u " //
-            + "{" //
-            + "  ?s a ?t ."//
-            + "  ?t <http://www.w3.org/2000/01/rdf-schema#label> ?u ."//
-            + "  ?u <uri:talksTo> ?s . "//
-            + "}";//
-     
-    
-    
-    private String q12 = ""//
-            + "SELECT ?b ?p ?dog ?cat " //
-            + "{" //
-            + "  ?b a ?p ."//
-            + "  ?dog a ?cat. "//
-            + "}";//
-    
-    private String q15 = ""//
-            + "SELECT ?f ?m ?d ?e ?l ?c " //
-            + "{" //
-            + "  ?f a ?m ."//
-            + "  ?e a ?l ."//
-            + "  ?d <uri:talksTo> ?f . "//
-            + "  ?c <uri:talksTo> ?e . "//
-            + "  ?m <http://www.w3.org/2000/01/rdf-schema#label> ?d ."//
-            + "  ?l <http://www.w3.org/2000/01/rdf-schema#label> ?c ."//
-            + "}";//
-    
-    private String q16 = ""//
-            + "SELECT ?f ?m ?d ?e ?l ?c " //
-            + "{" //
-            + "  ?l <uri:talksTo> ?c . "//
-            + "  ?d <uri:talksTo> ?f . "//
-            + "  ?c <uri:talksTo> ?e . "//
-            + "  ?m <http://www.w3.org/2000/01/rdf-schema#label> ?d ."//
-            + "  ?l <http://www.w3.org/2000/01/rdf-schema#label> ?c ."//
-            + "}";//
-    
-    private String q17 = ""//
-            + "SELECT ?dog ?cat ?chicken " //
-            + "{" //
-            + "  ?chicken <uri:talksTo> ?dog . "//
-            + "  ?cat <http://www.w3.org/2000/01/rdf-schema#label> ?chicken 
."//
-            + "}";//
-    
-    private String q18 = ""//
-            + "SELECT ?cat ?chicken ?pig ?duck " //
-            + "{" //
-            + "  ?cat <uri:talksTo> ?chicken. "//
-            + "  ?pig <uri:talksTo> ?duck . "//
-            + "}";//
-    
-   
-    
-    private String q19 = ""//
-            + "SELECT ?f ?m ?d ?e ?l ?c " //
-            + "{" //
-            + "  ?f <uri:talksTo> ?m . "//
-            + "  ?d <uri:talksTo> ?e . "//
-            + "  ?l <uri:talksTo> ?c . "//
-            + "}";//
-    
-    private String q20 = ""//
-            + "SELECT ?f ?m " //
-            + "{" //
-            + "  ?f <uri:talksTo> ?m . "//
-            + "}";//
-    
-    
-    private String q21 = ""//
-            + "SELECT ?s ?t ?u " //
-            + "{" //
-            + " Filter(?s > 3). " //
-            + "  ?s a ?t ."//
-            + "  ?t <http://www.w3.org/2000/01/rdf-schema#label> ?u ."//
-            + "  ?u <uri:talksTo> ?s . "//
-            + "}";//
-     
-    
-    
-    private String q22 = ""//
-            + "SELECT ?f ?m ?d ?e ?l ?c " //
-            + "{" //
-            + " Filter(?f > 3) ."//
-            + " Filter(?e > 3) ."//
-            + "  ?e a ?f ." //
-            + "  ?f a ?m ."//
-            + "  ?e a ?l ."//
-            + "  ?d <uri:talksTo> ?f . "//
-            + "  ?c <uri:talksTo> ?e . "//
-            + "  ?m <http://www.w3.org/2000/01/rdf-schema#label> ?d ."//
-            + "  ?l <http://www.w3.org/2000/01/rdf-schema#label> ?c ."//
-            + "}";//
-    
-    
-    private String q23 = ""//
-            + "SELECT ?h ?i ?j " //
-            + "{" //
-            + " Filter(?h > 3) ."//
-            + " Filter(?i > 3) ."//
-            + "  ?h a ?i ." //
-            + "  ?h a ?j ."//
-            + "}";//
-    
-    
-    
-    
-    
-    
-    @Test
-    public void testTwoIndexLargeQuery() throws Exception {
-
-        SPARQLParser parser = new SPARQLParser();
-
-        ParsedQuery pq1 = parser.parseQuery(q15, null);
-        ParsedQuery pq2 = parser.parseQuery(q7, null);
-        ParsedQuery pq3 = parser.parseQuery(q12, null);
-
-        SimpleExternalTupleSet extTup1 = new 
SimpleExternalTupleSet((Projection) pq2.getTupleExpr());
-        SimpleExternalTupleSet extTup2 = new 
SimpleExternalTupleSet((Projection) pq3.getTupleExpr());
-
-        List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
-
-        list.add(extTup2);
-        list.add(extTup1);
-
-        IndexedExecutionPlanGenerator iep = new 
IndexedExecutionPlanGenerator(pq1.getTupleExpr(), list);
-        List<ExternalTupleSet> indexSet = iep.getNormalizedIndices();
-        Assert.assertEquals(4, indexSet.size());
-
-        Iterator<TupleExpr> processedTups = iep.getIndexedTuples();
-
-        int size = 0;
-
-        while (processedTups.hasNext()) {
-            Assert.assertTrue(processedTups.hasNext());
-            processedTups.next();
-            size++;
-        }
-        
-        Assert.assertTrue(!processedTups.hasNext());
-
-        Assert.assertEquals(5, size);
-
-    }
-    
-    
-    
-    
-    
-    @Test
-    public void testThreeSingleNodeIndex() throws Exception {
-
-        SPARQLParser parser = new SPARQLParser();
-
-        ParsedQuery pq1 = parser.parseQuery(q19, null);
-        ParsedQuery pq2 = parser.parseQuery(q20, null);
-
-        SimpleExternalTupleSet extTup1 = new 
SimpleExternalTupleSet((Projection) pq2.getTupleExpr());
-
-        List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
-
-        list.add(extTup1);
-
-        IndexedExecutionPlanGenerator iep = new 
IndexedExecutionPlanGenerator(pq1.getTupleExpr(), list);
-        List<ExternalTupleSet> indexSet = iep.getNormalizedIndices();
-        Assert.assertEquals(3, indexSet.size());
-
-        Iterator<TupleExpr> processedTups = iep.getIndexedTuples();
-
-        int size = 0;
-
-        while(processedTups.hasNext()) {
-            Assert.assertTrue(processedTups.hasNext());
-            processedTups.next();
-            size++;
-        }
-        Assert.assertTrue(!processedTups.hasNext());
-
-        Assert.assertEquals(3, size);
-
-    }
-    
-    
-    
-    @Test
-    public void testThreeIndexQuery() throws Exception {
-
-        SPARQLParser parser = new SPARQLParser();
-        
-
-        ParsedQuery pq1 = parser.parseQuery(q16, null);
-        ParsedQuery pq2 = parser.parseQuery(q17, null);
-        ParsedQuery pq3 = parser.parseQuery(q18, null);
-
-        
-        SimpleExternalTupleSet extTup1 = new 
SimpleExternalTupleSet((Projection) pq2.getTupleExpr());
-        SimpleExternalTupleSet extTup2 = new 
SimpleExternalTupleSet((Projection) pq3.getTupleExpr());
-      
-        List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
-       
-        list.add(extTup2);
-        list.add(extTup1);
-        
-
-        IndexedExecutionPlanGenerator iep = new 
IndexedExecutionPlanGenerator(pq1.getTupleExpr(),list);
-        List<ExternalTupleSet> indexSet = iep.getNormalizedIndices();
-        Assert.assertEquals(6, indexSet.size());
-
-        Iterator<TupleExpr> processedTups = iep.getIndexedTuples();
-        
-        int size = 0;
-        
-        while(processedTups.hasNext()) {
-            Assert.assertTrue(processedTups.hasNext());
-            processedTups.next();
-            size++;
-        }
-        
-        Assert.assertTrue(!processedTups.hasNext());
-        Assert.assertEquals(9, size);
-        
-
-    }
-    
-    
-    
-    
-    @Test
-    public void testThrowsException1() throws Exception {
-
-        SPARQLParser parser = new SPARQLParser();
-        
-
-        ParsedQuery pq1 = parser.parseQuery(q16, null);
-        ParsedQuery pq2 = parser.parseQuery(q17, null);
-        ParsedQuery pq3 = parser.parseQuery(q18, null);
-
-        
-        SimpleExternalTupleSet extTup1 = new 
SimpleExternalTupleSet((Projection) pq2.getTupleExpr());
-        SimpleExternalTupleSet extTup2 = new 
SimpleExternalTupleSet((Projection) pq3.getTupleExpr());
-      
-        List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
-       
-        list.add(extTup2);
-        list.add(extTup1);
-        
-
-        IndexedExecutionPlanGenerator iep = new 
IndexedExecutionPlanGenerator(pq1.getTupleExpr(),list);
-        List<ExternalTupleSet> indexSet = iep.getNormalizedIndices();
-        Assert.assertEquals(6, indexSet.size());
-
-        Iterator<TupleExpr> processedTups = iep.getIndexedTuples();
-        
-     
-        boolean exceptionThrown = false;
-        
-        try{
-            processedTups.remove();
-        } catch(UnsupportedOperationException e) {
-            exceptionThrown = true;
-        }
-        
-        Assert.assertTrue(exceptionThrown);
-        
-        
-    }
-    
-    
-    @Test
-    public void testThrowsException2() throws Exception {
-
-        SPARQLParser parser = new SPARQLParser();
-
-        ParsedQuery pq1 = parser.parseQuery(q19, null);
-        ParsedQuery pq2 = parser.parseQuery(q20, null);
-
-        SimpleExternalTupleSet extTup1 = new 
SimpleExternalTupleSet((Projection) pq2.getTupleExpr());
-
-        List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
-
-        list.add(extTup1);
-
-        IndexedExecutionPlanGenerator iep = new 
IndexedExecutionPlanGenerator(pq1.getTupleExpr(), list);
-        List<ExternalTupleSet> indexSet = iep.getNormalizedIndices();
-        Assert.assertEquals(3, indexSet.size());
-
-        Iterator<TupleExpr> processedTups = iep.getIndexedTuples();
-
-        int size = 0;
-
-       processedTups.next();
-       processedTups.next();
-       processedTups.next();
-
-        boolean exceptionThrown = false;
-        try {
-            processedTups.next();
-        } catch (NoSuchElementException e) {
-            exceptionThrown = true;
-        }
-
-        Assert.assertTrue(exceptionThrown);
-
-    }
-
-    
-    
-    
-    
-    @Test
-    public void testThreeIndexQueryFilter() throws Exception {
-
-        SPARQLParser parser = new SPARQLParser();
-        
-
-        ParsedQuery pq1 = parser.parseQuery(q22, null);
-        ParsedQuery pq2 = parser.parseQuery(q7, null);
-        ParsedQuery pq3 = parser.parseQuery(q21, null);
-        ParsedQuery pq4 = parser.parseQuery(q23, null);
-        
-        
-        SimpleExternalTupleSet extTup1 = new 
SimpleExternalTupleSet((Projection) pq2.getTupleExpr());
-        SimpleExternalTupleSet extTup2 = new 
SimpleExternalTupleSet((Projection) pq3.getTupleExpr());
-        SimpleExternalTupleSet extTup3 = new 
SimpleExternalTupleSet((Projection) pq4.getTupleExpr());
-      
-        List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
-       
-        list.add(extTup2);
-        list.add(extTup1);
-        list.add(extTup3);
-        
-
-        IndexedExecutionPlanGenerator iep = new 
IndexedExecutionPlanGenerator(pq1.getTupleExpr(),list);
-        List<ExternalTupleSet> indexSet = iep.getNormalizedIndices();
-        Assert.assertEquals(5, indexSet.size());
-
-        Iterator<TupleExpr> processedTups = iep.getIndexedTuples();
-        
-        
-        int size = 0;
-        
-        while(processedTups.hasNext()) {
-            Assert.assertTrue(processedTups.hasNext());
-            TupleExpr te = processedTups.next();
-            System.out.println(te);
-            size++;
-        }
-        
-        Assert.assertTrue(!processedTups.hasNext());
-        Assert.assertEquals(10, size);
-        
-
-    }
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
+       private String q7 = ""//
+                       + "SELECT ?s ?t ?u " //
+                       + "{" //
+                       + "  ?s a ?t ."//
+                       + "  ?t <http://www.w3.org/2000/01/rdf-schema#label> ?u 
."//
+                       + "  ?u <uri:talksTo> ?s . "//
+                       + "}";//
+
+       private String q12 = ""//
+                       + "SELECT ?b ?p ?dog ?cat " //
+                       + "{" //
+                       + "  ?b a ?p ."//
+                       + "  ?dog a ?cat. "//
+                       + "}";//
+
+       private String q15 = ""//
+                       + "SELECT ?f ?m ?d ?e ?l ?c " //
+                       + "{" //
+                       + "  ?f a ?m ."//
+                       + "  ?e a ?l ."//
+                       + "  ?d <uri:talksTo> ?f . "//
+                       + "  ?c <uri:talksTo> ?e . "//
+                       + "  ?m <http://www.w3.org/2000/01/rdf-schema#label> ?d 
."//
+                       + "  ?l <http://www.w3.org/2000/01/rdf-schema#label> ?c 
."//
+                       + "}";//
+
+       private String q16 = ""//
+                       + "SELECT ?f ?m ?d ?e ?l ?c " //
+                       + "{" //
+                       + "  ?l <uri:talksTo> ?c . "//
+                       + "  ?d <uri:talksTo> ?f . "//
+                       + "  ?c <uri:talksTo> ?e . "//
+                       + "  ?m <http://www.w3.org/2000/01/rdf-schema#label> ?d 
."//
+                       + "  ?l <http://www.w3.org/2000/01/rdf-schema#label> ?c 
."//
+                       + "}";//
+
+       private String q17 = ""//
+                       + "SELECT ?dog ?cat ?chicken " //
+                       + "{" //
+                       + "  ?chicken <uri:talksTo> ?dog . "//
+                       + "  ?cat <http://www.w3.org/2000/01/rdf-schema#label> 
?chicken ."//
+                       + "}";//
+
+       private String q18 = ""//
+                       + "SELECT ?cat ?chicken ?pig ?duck " //
+                       + "{" //
+                       + "  ?cat <uri:talksTo> ?chicken. "//
+                       + "  ?pig <uri:talksTo> ?duck . "//
+                       + "}";//
+
+       private String q19 = ""//
+                       + "SELECT ?f ?m ?d ?e ?l ?c " //
+                       + "{" //
+                       + "  ?f <uri:talksTo> ?m . "//
+                       + "  ?d <uri:talksTo> ?e . "//
+                       + "  ?l <uri:talksTo> ?c . "//
+                       + "}";//
+
+       private String q20 = ""//
+                       + "SELECT ?f ?m " //
+                       + "{" //
+                       + "  ?f <uri:talksTo> ?m . "//
+                       + "}";//
+
+       private String q21 = ""//
+                       + "SELECT ?s ?t ?u " //
+                       + "{" //
+                       + " Filter(?s > 3). " //
+                       + "  ?s a ?t ."//
+                       + "  ?t <http://www.w3.org/2000/01/rdf-schema#label> ?u 
."//
+                       + "  ?u <uri:talksTo> ?s . "//
+                       + "}";//
+
+       private String q22 = ""//
+                       + "SELECT ?f ?m ?d ?e ?l ?c " //
+                       + "{" //
+                       + " Filter(?f > 3) ."//
+                       + " Filter(?e > 3) ."//
+                       + "  ?e a ?f ." //
+                       + "  ?f a ?m ."//
+                       + "  ?e a ?l ."//
+                       + "  ?d <uri:talksTo> ?f . "//
+                       + "  ?c <uri:talksTo> ?e . "//
+                       + "  ?m <http://www.w3.org/2000/01/rdf-schema#label> ?d 
."//
+                       + "  ?l <http://www.w3.org/2000/01/rdf-schema#label> ?c 
."//
+                       + "}";//
+
+       private String q23 = ""//
+                       + "SELECT ?h ?i ?j " //
+                       + "{" //
+                       + " Filter(?h > 3) ."//
+                       + " Filter(?i > 3) ."//
+                       + "  ?h a ?i ." //
+                       + "  ?h a ?j ."//
+                       + "}";//
+
+       @Test
+       public void testTwoIndexLargeQuery() throws Exception {
+
+               SPARQLParser parser = new SPARQLParser();
+
+               ParsedQuery pq1 = parser.parseQuery(q15, null);
+               ParsedQuery pq2 = parser.parseQuery(q7, null);
+               ParsedQuery pq3 = parser.parseQuery(q12, null);
+
+               SimpleExternalTupleSet extTup1 = new SimpleExternalTupleSet(
+                               (Projection) pq2.getTupleExpr());
+               SimpleExternalTupleSet extTup2 = new SimpleExternalTupleSet(
+                               (Projection) pq3.getTupleExpr());
+
+               List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
+
+               list.add(extTup2);
+               list.add(extTup1);
+
+               IndexedExecutionPlanGenerator iep = new 
IndexedExecutionPlanGenerator(
+                               pq1.getTupleExpr(), list);
+               List<ExternalTupleSet> indexSet = iep.getNormalizedIndices();
+               Assert.assertEquals(4, indexSet.size());
+
+               Iterator<TupleExpr> processedTups = iep.getIndexedTuples();
+
+               int size = 0;
+
+               while (processedTups.hasNext()) {
+                       Assert.assertTrue(processedTups.hasNext());
+                       processedTups.next();
+                       size++;
+               }
+
+               Assert.assertTrue(!processedTups.hasNext());
+
+               Assert.assertEquals(5, size);
+
+       }
+
+       @Test
+       public void testThreeSingleNodeIndex() throws Exception {
+
+               SPARQLParser parser = new SPARQLParser();
+
+               ParsedQuery pq1 = parser.parseQuery(q19, null);
+               ParsedQuery pq2 = parser.parseQuery(q20, null);
+
+               SimpleExternalTupleSet extTup1 = new SimpleExternalTupleSet(
+                               (Projection) pq2.getTupleExpr());
+
+               List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
+
+               list.add(extTup1);
+
+               IndexedExecutionPlanGenerator iep = new 
IndexedExecutionPlanGenerator(
+                               pq1.getTupleExpr(), list);
+               List<ExternalTupleSet> indexSet = iep.getNormalizedIndices();
+               Assert.assertEquals(3, indexSet.size());
+
+               Iterator<TupleExpr> processedTups = iep.getIndexedTuples();
+
+               int size = 0;
+
+               while (processedTups.hasNext()) {
+                       Assert.assertTrue(processedTups.hasNext());
+                       processedTups.next();
+                       size++;
+               }
+               Assert.assertTrue(!processedTups.hasNext());
+
+               Assert.assertEquals(3, size);
+
+       }
+
+       @Test
+       public void testThreeIndexQuery() throws Exception {
+
+               SPARQLParser parser = new SPARQLParser();
+
+               ParsedQuery pq1 = parser.parseQuery(q16, null);
+               ParsedQuery pq2 = parser.parseQuery(q17, null);
+               ParsedQuery pq3 = parser.parseQuery(q18, null);
+
+               SimpleExternalTupleSet extTup1 = new SimpleExternalTupleSet(
+                               (Projection) pq2.getTupleExpr());
+               SimpleExternalTupleSet extTup2 = new SimpleExternalTupleSet(
+                               (Projection) pq3.getTupleExpr());
+
+               List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
+
+               list.add(extTup2);
+               list.add(extTup1);
+
+               IndexedExecutionPlanGenerator iep = new 
IndexedExecutionPlanGenerator(
+                               pq1.getTupleExpr(), list);
+               List<ExternalTupleSet> indexSet = iep.getNormalizedIndices();
+               Assert.assertEquals(6, indexSet.size());
+
+               Iterator<TupleExpr> processedTups = iep.getIndexedTuples();
+
+               int size = 0;
+
+               while (processedTups.hasNext()) {
+                       Assert.assertTrue(processedTups.hasNext());
+                       processedTups.next();
+                       size++;
+               }
+
+               Assert.assertTrue(!processedTups.hasNext());
+               Assert.assertEquals(9, size);
+
+       }
+
+       @Test
+       public void testThrowsException1() throws Exception {
+
+               SPARQLParser parser = new SPARQLParser();
+
+               ParsedQuery pq1 = parser.parseQuery(q16, null);
+               ParsedQuery pq2 = parser.parseQuery(q17, null);
+               ParsedQuery pq3 = parser.parseQuery(q18, null);
+
+               SimpleExternalTupleSet extTup1 = new SimpleExternalTupleSet(
+                               (Projection) pq2.getTupleExpr());
+               SimpleExternalTupleSet extTup2 = new SimpleExternalTupleSet(
+                               (Projection) pq3.getTupleExpr());
+
+               List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
+
+               list.add(extTup2);
+               list.add(extTup1);
+
+               IndexedExecutionPlanGenerator iep = new 
IndexedExecutionPlanGenerator(
+                               pq1.getTupleExpr(), list);
+               List<ExternalTupleSet> indexSet = iep.getNormalizedIndices();
+               Assert.assertEquals(6, indexSet.size());
+
+               Iterator<TupleExpr> processedTups = iep.getIndexedTuples();
+
+               boolean exceptionThrown = false;
+
+               try {
+                       processedTups.remove();
+               } catch (UnsupportedOperationException e) {
+                       exceptionThrown = true;
+               }
+
+               Assert.assertTrue(exceptionThrown);
+
+       }
+
+       @Test
+       public void testThrowsException2() throws Exception {
+
+               SPARQLParser parser = new SPARQLParser();
+
+               ParsedQuery pq1 = parser.parseQuery(q19, null);
+               ParsedQuery pq2 = parser.parseQuery(q20, null);
+
+               SimpleExternalTupleSet extTup1 = new SimpleExternalTupleSet(
+                               (Projection) pq2.getTupleExpr());
+
+               List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
+
+               list.add(extTup1);
+
+               IndexedExecutionPlanGenerator iep = new 
IndexedExecutionPlanGenerator(
+                               pq1.getTupleExpr(), list);
+               List<ExternalTupleSet> indexSet = iep.getNormalizedIndices();
+               Assert.assertEquals(3, indexSet.size());
+
+               Iterator<TupleExpr> processedTups = iep.getIndexedTuples();
+
+               processedTups.next();
+               processedTups.next();
+               processedTups.next();
+
+               boolean exceptionThrown = false;
+               try {
+                       processedTups.next();
+               } catch (NoSuchElementException e) {
+                       exceptionThrown = true;
+               }
+
+               Assert.assertTrue(exceptionThrown);
+
+       }
+
+       @Test
+       public void testThreeIndexQueryFilter() throws Exception {
+
+               SPARQLParser parser = new SPARQLParser();
+
+               ParsedQuery pq1 = parser.parseQuery(q22, null);
+               ParsedQuery pq2 = parser.parseQuery(q7, null);
+               ParsedQuery pq3 = parser.parseQuery(q21, null);
+               ParsedQuery pq4 = parser.parseQuery(q23, null);
+
+               SimpleExternalTupleSet extTup1 = new SimpleExternalTupleSet(
+                               (Projection) pq2.getTupleExpr());
+               SimpleExternalTupleSet extTup2 = new SimpleExternalTupleSet(
+                               (Projection) pq3.getTupleExpr());
+               SimpleExternalTupleSet extTup3 = new SimpleExternalTupleSet(
+                               (Projection) pq4.getTupleExpr());
+
+               List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
+
+               list.add(extTup2);
+               list.add(extTup1);
+               list.add(extTup3);
+
+               IndexedExecutionPlanGenerator iep = new 
IndexedExecutionPlanGenerator(
+                               pq1.getTupleExpr(), list);
+               List<ExternalTupleSet> indexSet = iep.getNormalizedIndices();
+               Assert.assertEquals(5, indexSet.size());
+
+               Iterator<TupleExpr> processedTups = iep.getIndexedTuples();
+
+               int size = 0;
+
+               while (processedTups.hasNext()) {
+                       Assert.assertTrue(processedTups.hasNext());
+                       TupleExpr te = processedTups.next();
+                       System.out.println(te);
+                       size++;
+               }
+
+               Assert.assertTrue(!processedTups.hasNext());
+               Assert.assertEquals(10, size);
 
+       }
 
 }

Reply via email to