public void DrawSingleNode (Node node, Graphics2D g2d) {
		
		int nLvl;
		if (asap)
			nLvl = node.GetASAPLevel ();
		else
			nLvl = node.GetALAPLevel ();
		
		int nSeq = node.GetSeqNo ();
		int pLvlSize = (nodeLevels.get (currentLevel - 1)).size ();
		
		if (nLvl == currentLevel) {
			if (pLvlSize >= 1)
				currentX += spacing;		
		}
		else if (nLvl > currentLevel) {
			currentLevel = nLvl;
			if (nodeLevels.size () < currentLevel)
				nodeLevels.add (new ArrayList<ArrayList> ());
			if (pLvlSize >= 1)
				currentX = (spacing * pLvlSize) + 50;
			else
				currentX = startX;
			currentY += levelH;
		}
		else if (nLvl < currentLevel && nLvl > 0) {
			currentLevel = nLvl;
			currentX = startX + (pLvlSize * 100);
			currentY = (nLvl * 100) - 50;
		}
		
		Ellipse2D circle = new Ellipse2D.Double (currentX, currentY, 50, 50);
		g2d.draw (circle);
		g2d.drawString (String.valueOf (nSeq), (int)currentX, (int)currentY);
		if (asap)
			asapLevels.add (nSeq, nLvl);
		else
			alapLevels.add (nSeq, nLvl);
		(nodeLevels.get (currentLevel - 1)).add (node.seqNo);
	}