public void start() {
		trace("start() - " + getClass().getSimpleName());

		validateNotFinished();

		animator = createAnimator();

		trace("\tcreated animator - " + animator);
		if (animator == null) {
			callFinish();
			return;
		}

		if (busyListener != null) {
			animator.addTarget(new TimingTargetAdapter() {
				@Override
				public void begin() {
					busyListener.setBusy(true);
				}

				@Override
				public void end() {
					busyListener.setBusy(false);
				}
			});
		}

		animator.addTarget(new TimingTargetAdapter() {
			@Override
			public void end() {
				callFinish();
			}
		});

		// this can happen if some external force calls stop() on this animator while it
		// is building itself
		validateNotFinished();

		animator.start();
	}
A callback given when this animator has run to completion.  This will be called whether
the animator is stopped prematurely or ends naturally.
Ghidra/Framework/Graph/src/main/java/ghidra/graph/job/AbstractAnimator.java