protected int comparePointerLocation(Point p, ProgramNode node) {

		int localRowHeight = getRowHeight();
		int row = this.getRowForPath(node.getTreePath());
		Rectangle rect = getRowBounds(row);
		if (p.y == rect.y) {
			return 1;
		}
		if ((p.y - rect.y) <= localRowHeight) {
			int delta = localRowHeight - (p.y - rect.y);
			int sliceSize = localRowHeight / 4;
			if (delta < sliceSize) {
				return 1; // in the lower part of the node
			}
			if (delta > (sliceSize * 3)) {
				return -1; // in the upper part of the node
			}
		}
		return 0;
	}
Determine where the mouse pointer is within the node.
@param p the point
@param node the node
@return -1 if the mouse pointer is in the upper quarter of the node, 1 if the mouse pointer 
 is in the lower quarter of the node, or 0 if the mouse pointer is in the center of the node.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/programtree/DragNDropTree.java