private void collectInitialInfo(DecompilerActionContext context) {
		ClangToken tokenAtCursor = context.getTokenAtCursor();
		HighVariable high = tokenAtCursor.getHighVariable();
		highSymbol = high.getSymbol();
		DataType dataType = high.getDataType();
		if (dataType instanceof TypeDef) {
			dataType = ((TypeDef) dataType).getBaseDataType();
		}
		if (!(dataType instanceof Pointer)) {
			return;
		}
		pointerSize = dataType.getLength();
		Varnode vn = tokenAtCursor.getVarnode();
		if (vn == null) {	// If we don't have a specific Varnode instance
			return;			// We can't search for an offset
		}
		TreeSearch node = TreeSearch.searchBackward(vn, 5);
		if (node != null) {
			initialParent = node.dataType;
			initialOffset = node.offset;
			return;
		}
		node = TreeSearch.searchForward(vn, 5);
		if (node != null) {
			initialParent = node.dataType;
			initialOffset = -node.offset;
		}
	}
Assuming the parameters have been filled in by the dialog, create the matching TypeDef.
If a new TypeDef is created, or if a pointer to the base DataType already exists as a TypeDef,
set the ComponentOffsetSetting to the value selected by the dialog (userOffset).
@param program is the Program owning the TypeDef
@param tool is the tool showing the dialog
Ghidra/Features/Decompiler/src/main/java/ghidra/app/plugin/core/decompile/actions/CreatePointerRelative.java