@Override
	public void processEvent(PluginEvent event) {
		boolean repaintReqd = false;
		if (event instanceof ProgramActivatedPluginEvent) {
			ProgramActivatedPluginEvent evt = (ProgramActivatedPluginEvent) event;
			program = evt.getActiveProgram();
			flowArrows.clear();
			validateState();
			repaintReqd = true;
		}
		else if (event instanceof ProgramLocationPluginEvent) {
			ProgramLocationPluginEvent evt = (ProgramLocationPluginEvent) event;
			ProgramLocation location = evt.getLocation();
			currentAddr = location.getAddress();
			activeArrows.clear();
			repaintReqd = true;
		}
		else if (event instanceof ProgramClosedPluginEvent) {
			ProgramClosedPluginEvent programClosedPluginEvent = (ProgramClosedPluginEvent) event;
			Program closedProgram = programClosedPluginEvent.getProgram();
			if (program == closedProgram || program == null) {
				program = null;
				currentAddr = null;
				activeArrows.clear();
				flowArrows.clear();
				validateState();
				repaintReqd = true;
			}
		}
		if (repaintReqd) {
			updateAndRepaint();
		}
	}
Those arrows that start at the current address
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/flowarrow/FlowArrowPlugin.java