}
    public void phaseIID(final int lindex, final int levels[][]) {	float colBC[];	colBC = calcColBC(lindex, levels);	//System.out.println("getting into phase IID");      	for(int i=0; i<colBC.length-1; i++) {	    if(colBC[i]==colBC[i+1]) {		//System.out.println("Crossings before begining of iteration: "+crossings(levels));		int tempLevels[][] = new int[levels.length][];		copy2DArray(levels, tempLevels);		//System.out.println("Interchanging: "+((GraphNode)m_nodes.elementAt(levels[lindex+1][i])).ID+" & "+		//		   ((GraphNode)m_nodes.elementAt(levels[lindex+1][(i+1)])).ID+		//		   " at level "+(lindex+1) );		int node1 = levels[lindex+1][i];		int node2 = levels[lindex+1][i+1];		levels[lindex+1][i+1] = node1;		levels[lindex+1][i] = node2;		for(int k=lindex+1; k<levels.length-1; k++)		    phaseID(k, levels);		//System.out.println("Crossings temp:"+crossings(tempLevels)+" graph:"+crossings(levels));		if(crossings(levels)<=crossings(tempLevels))		    { //System.out.println("Crossings temp: "+crossings(tempLevels)+" Crossings levels: "+crossings(levels));		      copy2DArray(levels, tempLevels); } //printMatrices(levels); } 		else {		    copy2DArray(tempLevels, levels);		    levels[lindex+1][i+1] = node1;		    levels[lindex+1][i] = node2;		}		//System.out.println("Crossings after PhaseID of phaseIID, in iteration "+i+" of "+(colBC.length-1)+" at "		// 		   +lindex+", levels: "+crossings(levels)+" temp: "+crossings(tempLevels));		//tempLevels = new int[levels.length][];		//copy2DArray(levels, tempLevels);		for(int k=levels.length-2; k>=0; k--)		    phaseIU(k, levels);		//System.out.println("Crossings temp:"+crossings(tempLevels)+" graph:"+crossings(levels));		//if(crossings(tempLevels)<crossings(levels))		//    { //System.out.println("Crossings temp: "+crossings(tempLevels)+" Crossings levels: "+crossings(levels));		//      copy2DArray(tempLevels, levels); } //printMatrices(levels); }		if(crossings(tempLevels)<crossings(levels))		    copy2DArray(tempLevels, levels);				//System.out.println("Crossings after PhaseIU of phaseIID, in iteration "+i+" of "+(colBC.length-1)+" at "		//		   +lindex+", levels: "+crossings(levels)+" temp: "+crossings(tempLevels));		//colBC = calcColBC(lindex, levels);	    }	}    }