private Class determinePropertyType() {
        Method readMethod = getBridgedReadMethod();
        Method writeMethod = getBridgedWriteMethod();

        Class returnType = null;

        try {
            returnType = TypeResolver.resolvePropertyType(clazz, readMethod, writeMethod);
        } catch (Exception ignore) {
        }

        if (returnType != null) {
            return returnType;
        }

        if (readMethod == null && writeMethod == null) {
            throw new MappingException("No read or write method found for field (" + fieldName
                                       + ") in class (" + clazz + ")");
        }

        if (readMethod == null) {
            return determineByWriteMethod(writeMethod);
        } else {
            try {
                return readMethod.getReturnType();
            } catch (Exception e) {
                // let us try the set method - the field might have inacessible 'get' method
                return determineByWriteMethod(writeMethod);
            }
        }
    }
Internal class used to read and write values for fields that have a getter and setter method. This class encapsulates
underlying dozer specific logic such as index mapping and deep mapping for reading and writing field values. Only
intended for internal use.
core/src/main/java/com/github/dozermapper/core/propertydescriptor/GetterSetterPropertyDescriptor.java