docs: @SuppressWarnings( "unchecked" )
      public static <T> T store( Object source, T value, Object... paths ) {
          int destKeyIndex = paths.length - 1;
          if(destKeyIndex < 0) {
              throw new IllegalArgumentException( "No path information provided" );
          }
          if(source == null) {
              throw new NullPointerException( "source cannot be null" );
          }
          for ( int i = 0; i < destKeyIndex; i++ ) {
              Object currentPath = paths[i];
              Object nextPath = paths[i+1];
              source = getOrCreateNextObject( source, currentPath, nextPath );
          }
          Object path = paths[destKeyIndex];
          if(source instanceof Map && path instanceof String) {
              return cast( ( (Map) source ).put( path, value ) );
          }
          else if(source instanceof List && path instanceof Integer) {
              ensureListAvailability( (List) source, (int) path );
              return cast( ( (List) source ).set( (int) path, value ) );
          }
          else {
              throw new UnsupportedOperationException( "Only Map/String and List/Integer types are supported" );
          }
      }