public void addGTreeSelectionListener(GTreeSelectionListener listener) {
		if (!listeners.contains(listener)) {
			listeners.add(listener);
		}
	}
This class was created so that GTree users can know the origin of tree selections.  This is 
useful in determining if the tree selection event occurred because the user clicked in the
tree, or if an API method was called (or by an event internal to, or trigged by the GTree).
<p>

As an example usage, imagine an event cycle, where a change in the tree selection causes a 
change in some other GUI component and changes in the other GUI component cause a change 
in the tree selection.  
In this scenario, to avoid bouncing back and forth, the TreeSelectionListener can check 
if the tree selection change was caused by the user or by an API call responding to the 
change in the other GUI component, thereby breaking the cycle.
<p>

With this selection model the user can check the origin of the event with a call to:
<pre>
		public void valueChanged(GTreeSelectionEvent e) {
			if ( e.getEventOrigin() == EventOrigin.USER_GENERATED ) {
				// respond to user selection
			}
		}
</pre>
Ghidra/Framework/Docking/src/main/java/docking/widgets/tree/internal/GTreeSelectionModel.java