private boolean isValidStorage(ParamInfo param) {
		if (!functionData.canCustomizeStorage()) {
			return true;
		}

		VariableStorage storage = param.getStorage();
		if (storage.isUnassignedStorage()) {
			return true; // allow dynamic unassigned storage
		}

		int storageSize = storage.size();

		DataType datatype = param.getDataType();
		if (datatype instanceof TypeDef) {
			datatype = ((TypeDef) datatype).getBaseDataType();
		}
		if (storageSize > 0 && (datatype instanceof AbstractFloatDataType)) {
			return true; // don't constrain float storage size
		}

		int paramSize = datatype.getLength();

		if (storageSize < paramSize) {
			statusText = "Insufficient storage (" + storageSize + "-bytes) for datatype (" +
				paramSize + "-bytes) assigned to parameter " + (param.getOrdinal() + 1);
			return false;
		}
//		else if (paramSize == 0) {
//			// assume 0-sized structure which we need to allow
//		}
//		else if (storageSize > paramSize && storageSize <= 8 && paramSize <= 8 &&
//			Undefined.isUndefined(param.getDataType())) {
//			// grow undefined type size if needed
//			param.setFormalDataType(Undefined.getUndefinedDataType(storageSize));
//		}
		return true;
	}
Mark all storage conflicts identified by 
{@link VariableUtilities#checkVariableConflict(List, Variable, VariableStorage, VariableConflictHandler)}
@param conflicts parameters whose storage conflicts
@return return false to indicate conflicts have not been resolved and additional checks
should be disconctinued.
@see VariableConflictHandler
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/editor/FunctionEditorModel.java