private boolean intersectsAnyPartOfArrow(Rectangle2D area) {

		if (arrowBody == null) {
			createShapes();
		}

		if (clickableShapes.isEmpty()) {
			createClickableShapes();
		}

		for (Shape s : clickableShapes) {
			if (s.intersects(area)) {
				return true;
			}
		}

		if (arrowHead.intersects(area)) {
			// we know the arrow head has size
			return true;
		}

		return false;
	}
Call when the screen moves so that the shape can be updated
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/flowarrow/FlowArrow.java