private void updateWindowLocation() {

		// move the window close to the cursor, if possible
		Point caretLocation = outputTextField.getCaret().getMagicCaretPosition();
		if (caretLocation == null) {
			// caretLocation can be null when the caret has been moved, but not repainted yet
			return;
		}

		updateLocation(caretLocation);
	}
Updates the completion list with the given completion mapping.

The format, as mentioned above, is:
"attribute" -> "substitution value"
If the substitution value is null, then that attribute will not be
selectable for substitution.

After updating the mapping, this Window then updates its size as
appropriate.

The Window also will attempt to move out of the way of the cursor/caret
in the textField.  However, if the caret's position had recently been
changed and the caret had not been repainted yet, then the caret's
location can be null.  In this case, the Window will not move.
You can avoid this condition by calling this method in a
SwingUtilities.invokeLater(Runnable).

@param list List of code completions
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/interpreter/CodeCompletionWindow.java