docs: public static <T> T navigate( final Object source, final Object... paths ) {
  
          Object destination = source;
          for ( Object path : paths ) {
  
              if ( path == null || destination == null ) {
                  return null;
              }
  
              if ( destination instanceof Map ) {
                  destination = ((Map) destination).get( path );
              }
              else if ( destination instanceof List ) {
  
                  if ( ! (path instanceof Integer) ) {
                      return null;
                  }
  
                  List destList = (List) destination;
                  int pathInt = (Integer) path;
  
                  if ( pathInt < 0 || pathInt >= destList.size() ) {
                      return null;
                  }
  
                  destination = destList.get( pathInt );
              }
              else {
                  // the input at this level is not a Map or List
                  //  so return null
                  return null;
              }
          }
          return cast(destination);
      }