optaplanner-core/src/main/java/org/optaplanner/core/impl/domain/solution/cloner/FieldAccessingSolutionCloner.java
protected boolean retrieveDeepCloneDecision(Field field, Class<?> fieldInstanceClass, Class<?> actualValueClass) {
        Pair<Field, Class<?>> pair = Pair.of(field, fieldInstanceClass);
        Boolean deepCloneDecision = fieldDeepClonedMemoization.computeIfAbsent(pair,
                key -> isFieldDeepCloned(field, fieldInstanceClass));
        return deepCloneDecision || retrieveDeepCloneDecisionForActualValueClass(actualValueClass);
    }
protected boolean retrieveDeepCloneDecision(Field field, Class<?> fieldInstanceClass, Class<?> actualValueClass) {
        Pair<Field, Class<?>> pair = Pair.of(field, fieldInstanceClass);
        Boolean deepCloneDecision = fieldDeepClonedMemoization.computeIfAbsent(pair,
                key -> isFieldDeepCloned(field, fieldInstanceClass));
        return deepCloneDecision || retrieveDeepCloneDecisionForActualValueClass(actualValueClass);
    }
This method is thread-safe.
@param field never null
@param fieldInstanceClass never null
@param actualValueClass never null
@return never null