int x1 = 0, x2 = 0, y = 0;
int x1 = 0, x2 = 0, y = 0, ExpandingNodeModifier = 0;
	protected void drawCueLine(TreePath path, boolean pathIsNewParent, boolean aboveTopPath) {		paintImmediately(dirtyCueBounds);		Rectangle bounds = getPathBounds(path);		Graphics2D g2d = (Graphics2D) getGraphics();		int x1 = 0, x2 = 0, y = 0;		if (pathIsNewParent) {			dirtyCueBounds = highlightPath(path, UIManager.getColor("CueLine.stroke"));			x1 = bounds.x + bounds.width;			y  = bounds.y + (bounds.height / 2);		} else {			if (isExpanded(path) && getModel().isLeaf(path.getLastPathComponent())) {				// if the path given is not the new parent then we				// want to draw a cue line so that it's between the first				// node on this branch and the parent node				// get the first child on the branch so we can use its x co-ords				Object child = getModel().getChild(path.getLastPathComponent(), 0);				Rectangle childBounds = getPathBounds(path.pathByAddingChild(child));				x1 = childBounds.x;			} else {				dirtyCueBounds = VOID_RECTANGLE;				x1 = bounds.x;			}			if (!aboveTopPath)				y = bounds.y + bounds.height;		}		x2 = getX() + getWidth();		int lineWidth = 1;		if (cueLineStroke != null) {			g2d.setStroke(cueLineStroke);			if (highlightStroke instanceof BasicStroke)				lineWidth = (int) ((BasicStroke) highlightStroke).getLineWidth();		}		// create a union of the current bounds of the cue		// and the line that we are about to draw		dirtyCueBounds.add(new Rectangle(x1, y, Math.abs(x2 - x1), lineWidth));		g2d.setColor(UIManager.getColor("CueLine.stroke"));		g2d.drawLine(x1, y, x2, y);	}