private void onCaretMove(@Nonnull Change<Integer> caretChange) {
		try {
			// Find selected instruction (can be null)
			Box<ASTInstruction> selected = extracted();

			// Check if the selection was a label or supported instruction.
			ASTInstruction current = selected.get();
			boolean hasSelection = false;
			if (current instanceof ASTLabel) {
				hasSelection = true;
			} else if (current != null) {
				String insnName = current.identifier().content();
				List<ASTElement> arguments = current.arguments();
				if (!arguments.isEmpty() && INSN_SET.contains(insnName) || SWITCH_INSNS.contains(insnName)) {
					hasSelection = true;
				}
			}
			currentInstructionSelection.setValue(current);
			drawLines.setValue(hasSelection);
		} catch (Throwable t) {
			logger.error("Error updating control flow line targets", t);
		}
	}
Handles updating the {@link ControlFlowLineFactory}.
<p/>
This logic is shoe-horned into here <i>(for now)</i> because
the variable tracking logic is internal to this class only.

@param caretChange
		Caret pos change.
recaf-ui/src/main/java/software/coley/recaf/ui/pane/editing/assembler/ControlFlowLines.java