code: @Nonnull
    @ReturnsMutableCopy
    public static WatchDir createAsyncRunningWatchDir (@Nonnull final Path aDir,
                                                       final boolean bRecursive,
                                                       @Nonnull final IWatchDirCallback aCallback) throws IOException
    {
      final WatchDir ret = new WatchDir (aDir, bRecursive);
      ret.callbacks ().add (aCallback);
      ret.runAsync ();
      return ret;
    }
docs: Static factory method to create a simple {@link WatchDir} instance that
  already spawned an Thread to listen. To close the thread call the
  {@link WatchDir#close()} method.
  
  @param aDir
  The directory to be watched. May not be <code>null</code>.
  @param bRecursive
  <code>true</code> to watch the directory recursive,
  <code>false</code> to watch just this directory.
  @param aCallback
  The callback to be invoked if something changed. May not be
  <code>null</code>.
  @return The newly created {@link WatchDir} instance and never
  <code>null</code>.
  @throws IOException
  In case something goes wrong.