code: public RandomICAutomatonGenerator<SP, TP> withStateProperties(Function<? super Random, ? extends SP> spFunc) {
          this.spSupplier = Objects.requireNonNull(spFunc);
          return this;
      }
docs: Sets the function for supplying state properties, and returns {@code this}.
  
  @param spFunc
  the function that supplies state properties, using a {@link Random} object as a source for randomness
  
  @return {@code this}