code: @SuppressWarnings("unchecked")
      public static <I> Word<I> upcast(Word<? extends I> word) {
          return (Word<I>) word;
      }
docs: Performs an upcast of the generic type parameter of the word. Since words are immutable, the type parameter
  {@code <I>} is covariant (even though it is not possible to express this in Java), making this a safe operation.
  
  @param word
  the word to upcast
  
  @return the upcasted word (reference identical to {@code word})