@Override
 public <T> T getProperty(String key, Class<T> targetType, T defaultValue) {
   Object originalValue = configMap.get(key);
   if (originalValue == null && key.contains(".")) {
     originalValue = configMap.navigate(key.split("\\."));
     if (originalValue != null) {
       try {
         configMap.put(key, originalValue);
       } catch (Exception e) {
         // ignore
       }
     }
   }
   if (originalValue != null) {
     T value = conversionService.convert(originalValue, targetType);
     return DefaultGroovyMethods.asBoolean(value) ? value : defaultValue;
   }
   return defaultValue;
 }
 @Override
 public Object navigate(String... path) {
   return configMap.navigate(path);
 }