// Path: src/main/java/org/fest/util/Preconditions.java
// public static @NotNull <T> T checkNotNull(@Nullable T reference) {
//   if (reference == null) {
//     throw new NullPointerException();
//   }
//   return reference;
// }


import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import static org.fest.util.Preconditions.checkNotNull;
  }

  /**
   * Knows how to join {@code String}s using a given delimiter.
   *
   * @see Strings#join(String[])
   */
  public static class StringsToJoin {
    /**
     * The {@code String}s to join.
     */
    private final String[] strings;

    /**
     * Creates a new {@link StringsToJoin}.
     *
     * @param strings the {@code String}s to join.
     */
    StringsToJoin(@NotNull String... strings) {
      this.strings = strings;
    }

    /**
     * Specifies the delimeter to use to join {@code String}s.
     *
     * @param delimeter the delimeter to use.
     * @return the {@code String}s joined using the given delimeter.
     * @throws NullPointerException if the given delimeter is {@code null}.
     */
    public @NotNull String with(@NotNull String delimeter) {
// Path: src/main/java/org/fest/util/Preconditions.java
// public static @NotNull <T> T checkNotNull(@Nullable T reference) {
//   if (reference == null) {
//     throw new NullPointerException();
//   }
//   return reference;
// }


// Path: src/main/java/org/fest/util/Strings.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import static org.fest.util.Preconditions.checkNotNull;

  }

  /**
   * Knows how to join {@code String}s using a given delimiter.
   *
   * @see Strings#join(String[])
   */
  public static class StringsToJoin {
    /**
     * The {@code String}s to join.
     */
    private final String[] strings;

    /**
     * Creates a new {@link StringsToJoin}.
     *
     * @param strings the {@code String}s to join.
     */
    StringsToJoin(@NotNull String... strings) {
      this.strings = strings;
    }

    /**
     * Specifies the delimeter to use to join {@code String}s.
     *
     * @param delimeter the delimeter to use.
     * @return the {@code String}s joined using the given delimeter.
     * @throws NullPointerException if the given delimeter is {@code null}.
     */
    public @NotNull String with(@NotNull String delimeter) {
      checkNotNull(delimeter);