code: @SafeVarargs
      public final RandomICAutomatonGenerator<SP, TP> withStateProperties(SP... possibleSps) {
          if (possibleSps.length == 0) {
              return withStateProperties(r -> null);
          }
          return withStateProperties(r -> RandomUtil.choose(possibleSps, r));
      }
docs: Sets the possible state properties, and returns {@code this}. State properties are selected from this array using
  {@link RandomUtil#choose(Object[], Random)}. If the array is empty, {@code null} will always be chosen as the
  state property.
  
  @param possibleSps
  the possible state properties
  
  @return {@code this}