coerceValueIntoField(rootObject, declaredField, dslValues.getOrElse(dslInfo.value(), null)); valueInjected |= coerceValueIntoField(rootObject, declaredField, value); } else if (isSimpleType(declaredField.getType())) { valueInjected |= coerceValueIntoField(rootObject, declaredField, config.getOrElse(keyName, null)); } else { String newPath = configPath + suffix; LOGGER.debug("Recursively deserializing complex type"); valueInjected |= coerceValueIntoField(rootObject, declaredField, deserialize(declaredField.getType(), subset(suffix, config), newPath)); valueInjected |= coerceValueIntoField(rootObject, declaredField, value); } else { valueInjected |= coerceValueIntoField(rootObject, declaredField, deserialize(declaredField.getType(), config, configPath));