docs: public static <T> T navigateOrDefault( final T defaultValue, final Object source, final Object... paths ) {
  
          Object destination = source;
          for ( Object path : paths ) {
              if(path == null || destination == null) {
                  return defaultValue;
              }
              if(destination instanceof Map) {
                  Map destinationMap = (Map) destination;
                  if(!destinationMap.containsKey(path)) {
                      return defaultValue;
                  }
                  else {
                      destination = destinationMap.get(path);
                  }
              }
              else if(path instanceof Integer && destination instanceof List) {
  
                  List destList = (List) destination;
                  int pathInt = (Integer) path;
  
                  if ( pathInt < 0 || pathInt >= destList.size() ) {
                      return defaultValue;
                  }
                  else {
                      destination = destList.get( pathInt );
                  }
              }
              else {
                  return defaultValue;
              }
          }
          return cast(destination);
      }