code: public static <T> Set<T> append(Set<T> readonly, T obj)
      {
          Set<T> writable = readonly != null ? new HashSet<>(readonly) : new HashSet<>();
  
          writable.add(obj);
  
          return writable;
      }
docs: "add" an object in a readonly {@link Set}. This method return a new Set which contains the passed set and object
  to add.
  
  @param readonly the {@link Set} to add an object to
  @param obj the object to add
  @return the new {@link Set}