code: public static <T> OptionalKind<T> widen(final Optional<T> Optional) {
  
      return new OptionalKind<T>(Optional);
    }
docs: Convert a Optional to a simulated HigherKindedType that captures Optional nature
  and Optional element data type separately. Recover via @see OptionalKind#narrow
  
  If the supplied Optional implements OptionalKind it is returned already, otherwise it
  is wrapped into a Optional implementation that does implement OptionalKind
  
  @param Optional Optional to widen to a OptionalKind
  @return OptionalKind encoding HKT info about Optionals