@SuppressWarnings("unchecked")
  public static <E> Function<E, E> identity() {
    return (Function<E, E>) IdentityFunction.INSTANCE;
  }
@SuppressWarnings("unchecked")
  public static <E> Function<E, E> identity() {
    return (Function<E, E>) IdentityFunction.INSTANCE;
  }
@ SuppressWarnings ( "unchecked" ) public static < E > Function < E , E > identity ( ) { return ( Function < E , E > ) IdentityFunction . INSTANCE ; }
implementation is "fully variant"; E has become a "pass-through" type
implementation is fully variant ; E has become a pass - through type