code: public static <MP extends Model.Parameters> Job<Grid> startGridSearch(
        final Key<Grid> destKey,
        final HyperSpaceWalker<MP, ?> hyperSpaceWalker
      ) {
      // Compute key for destination object representing grid
      MP params = hyperSpaceWalker.getParams();
      Key<Grid> gridKey = destKey != null ? destKey
              : gridKeyName(params.algoName(), params.train());
  
      // Start the search
      return new GridSearch<>(gridKey, hyperSpaceWalker).start();
    }
docs: Start a new grid search job. <p> This method launches any grid search traversing space of hyper
  parameters based on specified strategy.
  
  @param destKey          A key to store result of grid search under.
  @param hyperSpaceWalker defines a strategy for traversing a hyper space. The object itself
  holds definition of hyper space.
  @return GridSearch Job, with models run with these parameters, built as needed - expected to be
  an expensive operation.  If the models in question are "in progress", a 2nd build will NOT be
  kicked off.  This is a non-blocking call.