private void expandStructureSizeIfNeeded(Structure struct, int size) {
		// TODO: How should an existing packed structure be handled? Growing and offset-based 
		// placement does not apply
		int len = struct.isZeroLength() ? 0 : struct.getLength();
		if (size > len) {
			struct.growStructure(size - len);
		}
	}
Create or update a Structure data-type given a function and a root pointer variable.
The function must already be decompiled, but if a decompiler interface is provided, this
method will recursively follow variable references into CALLs, possibly triggering additional
decompilation.
@param var is the pointer variable
@param function is the function to process
@param createNewStructure if true a new Structure with a unique name will always be generated,
if false and the variable corresponds to a Structure pointer, the existing Structure will be 
updated instead.
@param createClassIfNeeded if true and variable corresponds to a <B>this</B> pointer without 
an assigned Ghidra Class (i.e., {@code void * this}), the function will be assigned to a 
new unique Ghidra Class namespace with a new identically named Structure returned.  If false,
a new unique Structure will be created.
@param decomplib is the (optional) decompiler interface, which can be used to recursively
decompile into CALLs.
@return a filled-in Structure or null if one could not be created
Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/util/FillOutStructureHelper.java