code: public static <T> T[] offer(T head, @NotNull T[] tail) {
          T[] result = newArrayInstance(tail, tail.length + 1);
          result [0] = head;
          System.arraycopy(tail, 0, result, 1, tail.length);
          return result;
      }
docs: Creates a copy of an array with a single item prepended to it.
  @param head The item to prepend
  @param tail The original array
  @param <T> The base type of the array
  @return The extended array