AccessorsValues (AccessorsValues defaults) { Boolean combinedChain = chainDeclaredValue; Boolean combinedFluent = fluentDeclaredValue; Boolean combinedMakeFinal = makeFinalDeclaredValue; Collection<String> combinedPrefixes = prefixes; if (combinedChain == null && null != defaults.chainDeclaredValue) { combinedChain = defaults.chainDeclaredValue; } if (combinedFluent == null && null != defaults.fluentDeclaredValue) { combinedFluent = defaults.fluentDeclaredValue; } if (combinedMakeFinal == null && null != defaults.makeFinalDeclaredValue) { combinedMakeFinal = defaults.makeFinalDeclaredValue; } if (combinedPrefixes.isEmpty() && !defaults.prefixes.isEmpty()) { combinedPrefixes = defaults.prefixes; } return new AccessorsValues(combinedChain, combinedFluent, combinedMakeFinal, combinedPrefixes); }