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);
    }
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
This method is thread - safe .