void drawHintPath(ArrayList <Node> nodes,ArrayList<Integer>persistence,int view,int aggregate){
    	  this.hintCoords.clear();
    	  
    	  if (persistence == null)
    		  persistence = this.persistence;
    	  
    	  Node n1 = nodes.get(this.node1);
    	  Node n2 = nodes.get(this.node2);   
    	  //float edgeLength = parent.dist(n1.x,n1.y,n2.x,n2.y);
    	  //float bufferSpace = -NODE_RADIUS/2-(0.03f*edgeLength);
    	  Coordinate start = pointOnLine(n2.x,n2.y,n1.x,n1.y,-NODE_RADIUS/2);
    	  Coordinate end = pointOnLine(n1.x,n1.y,n2.x,n2.y,-NODE_RADIUS/2);
    	  
    	  //Want the first time slice on the hint path to be the node thats closest to the left side of the screen
    	  //(this corresponds to the layout of the time slider)
    	  if (start.x > end.x){ //Swap them
    		  Coordinate temp = start;
    		  start = end;
    		  end = temp;
    		  
    		  Node tempNode = n1;
    		  n1 = n2;
    		  n2 = tempNode;
    	  }
    	  
    	  float interval = (float)1/(this.numTimeSlices);    	      	  
    	  float interpX,interpY,interpolation=0,prevX=start.x,prevY=start.y;     	     	  	 
    	  parent.strokeCap(parent.SQUARE);   
    	  
    	  //Calculate the hint path coordinates
    	  for (int i=0;i<this.numTimeSlices;i++){   
    		  //System.out.println(persistence.get(i)+" "+i);
    		  interpX = (end.x - start.x)*interpolation + start.x;
    		  interpY = start.y +(end.y-start.y)*((interpX-start.x)/(end.x-start.x));             
    		  this.hintCoords.add(new Coordinate(interpX,interpY)); //Save the coordinates along the hint path   		  
    		  interpolation +=interval;
    		  prevX = interpX;
    		  prevY = interpY;    		 
    	  }	    	 
    	  this.hintCoords.add(new Coordinate(end.x,end.y));
    	  //Old Design: Hint path as a highlight surrounding the edge    	  
    	 /** for (int i=1;i<this.hintCoords.size();i++){     		  
    		  if (persistence.get(i-1)==0){
    			  parent.stroke(189, 189, 189,255);
    		  }else{
    			 // parent.stroke(206,18,86,170);  
    			  parent.stroke(67,162,202,255); 
    		  }     
    		  
    		  parent.line(this.hintCoords.get(i-1).x,this.hintCoords.get(i-1).y,this.hintCoords.get(i).x,this.hintCoords.get(i).y);   		  		 
    	  }
    	  
    	  parent.strokeWeight(5);
    	  parent.stroke(25,25,25,255);
    	  parent.line(start.x, start.y, end.x, end.y);*/  
    	  
    	  if (aggregate ==1){ //Draw a coloured border around the path (in aggregate mode)
    		  parent.strokeWeight(6);
    		  parent.stroke(aggregationColour.getRGB());
    		  int last = hintCoords.size()-1;
    		  parent.line(hintCoords.get(0).x,hintCoords.get(0).y,hintCoords.get(last).x,hintCoords.get(last).y);     		 
    	  }
    	  
    	  Coordinate startArrow,endArrow;
    	  parent.strokeWeight(3);
		  
    	  //Draw hint path: Dotted line      	 
    	  for (int i=0;i<this.numTimeSlices;i++){ 
    		startArrow = this.hintCoords.get(i);
      	    endArrow = this.hintCoords.get(i+1);    	   		 		  		 
    		  
    		  if (persistence.get(i)==0){
    			  parent.stroke(absentColour.getRGB());    	
    			  if (i==view){
    				  parent.stroke(yearMarkColour.getRGB());
    			  }
    			  drawDottedLine(startArrow.x,startArrow.y,endArrow.x,endArrow.y);     			
    		  }else{    			 
    			  parent.stroke(presentColour.getRGB());  
    			  if (i==view){
    				  parent.stroke(yearMarkColour.getRGB());
    			  }
    			  parent.line(startArrow.x,startArrow.y,endArrow.x,endArrow.y);     			 
    		  }       		 
    	  }   
    	  
    	  //Draw arrows along the path     	 
    	  for (int i=0;i<this.numTimeSlices;i++){ 
    		  if (i==0){
    			  startArrow = new Coordinate(n1.x,n1.y); 
        		  endArrow = this.hintCoords.get(i); 
    		  }else{
    			  startArrow = this.hintCoords.get(i-1);
    	    	  endArrow = this.hintCoords.get(i);   
    		  }     				  		 
    		  
    		  if (persistence.get(i)==0){
    			  parent.stroke(absentColour.getRGB());    			     			  
    			  /**if (view==i){
    				  parent.stroke(120, 120, 120,255);
    			  }*/
    			  this.drawArrow(startArrow.x,startArrow.y,endArrow.x,endArrow.y);
    		  }else{    			 
    			  parent.stroke(presentColour.getRGB());     			  			 
    			  /**if (view==i){
    				 parent.stroke(0,118,168,255);				 
    			  }*/
    			  this.drawArrow(startArrow.x,startArrow.y,endArrow.x,endArrow.y);
    		  }       		 
    	  }
      }