@SuppressWarnings({ "rawtypes", "unchecked" })
	public void setFieldValueDeserializationInfo(Class<? extends FieldReadFunction> fieldReadValueClass,
			Class<?> structTargetClass, String setterNameOverride) {
		// setup the logic for assigning the deserialized value to the java field
		Class<?> fieldType = field.getType();

		// TODO: be more strict about setter name, if specified it must be found or error
		this.setterMethod = ReflectionHelper.findSetter(field.getName(), setterNameOverride,
			structTargetClass, fieldType);

		// setup the logic for deserializing the value from the in-memory structure
		if (fieldReadValueClass != FieldReadFunction.class) {
			this.readerFunc = ReflectionHelper.createInstance(fieldReadValueClass, this);
			return;
		}

		if (ReflectionHelper.isPrimitiveType(fieldType)) {
			this.readerFunc = getReadPrimitiveValueFunc(fieldType);
			return;
		}

		if (ReflectionHelper.hasStructureMapping(fieldType)) {
			this.readerFunc = this::readStructureMappedTypeFunc;
			return;
		}

	}
Creates a FieldMappingInfo instance, used when the structure is variable length and there is
no pre-defined Ghidra Structure data type.

@param <T> structure mapped class type
@param field java field
@param fieldName name of Ghidra structure field
@param signedness {@link Signedness} enum
@param length override of structure field, or -1
@return new {@link FieldMappingInfo} instance
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/structmapping/FieldMappingInfo.java