@Override
  public <T extends MigrationStep> MigrationStepRegistry add(long migrationNumber, String description, Class<T> stepClass) {
    validate(migrationNumber);
    requireNonNull(description, "description can't be null");
    checkArgument(!description.isEmpty(), "description can't be empty");
    requireNonNull(stepClass, "MigrationStep class can't be null");
    checkState(!migrations.containsKey(migrationNumber), "A migration is already registered for migration number '%s'", migrationNumber);
    this.migrations.put(migrationNumber, new RegisteredMigrationStep(migrationNumber, description, stepClass));
    return this;
  }
@Test
  public void add_fails_with_NPE_if_description_is_null() {
    assertThatThrownBy(() -> {
      underTest.add(12, null, MigrationStep.class);
    })
      .isInstanceOf(NullPointerException.class)
      .hasMessage("description can't be null");
  }