### Question:
MinusUtil { public static <T> ToShort<T> shortMinusShort(ToShort<T> first, ToShort<T> second) { class ShortMinusShort extends AbstractMinus<T, ToShort<T>, ToShort<T>> implements ToShort<T> { private ShortMinusShort(ToShort<T> first, ToShort<T> second) { super(first, second); } @Override public short applyAsShort(T object) { return (short) (firstInner.applyAsShort(object) - secondInner.applyAsShort(object)); } } return new ShortMinusShort(first, second); } private  MinusUtil(); static ToShort<T> byteMinusByte(ToByte<T> first, byte second); static ToInt<T> byteMinusInt(ToByte<T> first, int second); static ToLong<T> byteMinusLong(ToByte<T> first, long second); static ToShort<T> byteMinusByte(ToByte<T> first, ToByte<T> second); static ToInt<T> shortMinusByte(ToShort<T> first, byte second); static ToInt<T> shortMinusInt(ToShort<T> first, int second); static ToLong<T> shortMinusLong(ToShort<T> first, long second); static ToShort<T> shortMinusShort(ToShort<T> first, ToShort<T> second); static ToInt<T> intMinusByte(ToInt<T> first, byte second); static ToInt<T> intMinusInt(ToInt<T> first, int second); static ToLong<T> intMinusLong(ToInt<T> first, long second); static ToInt<T> intMinusByte(ToInt<T> first, ToByte<T> second); static ToInt<T> intMinusInt(ToInt<T> first, ToInt<T> second); static ToLong<T> longMinusByte(ToLong<T> first, byte second); static ToLong<T> longMinusInt(ToLong<T> first, int second); static ToLong<T> longMinusLong(ToLong<T> first, long second); static ToLong<T> longMinusInt(ToLong<T> first, ToInt<T> second); static ToLong<T> longMinusLong(ToLong<T> first, ToLong<T> second); static ToFloat<T> floatMinusInt(ToFloat<T> first, int second); static ToDouble<T> floatMinusLong(ToFloat<T> first, long second); static ToFloat<T> floatMinusFloat(ToFloat<T> first, float second); static ToFloat<T> floatMinusInt(ToFloat<T> first, ToInt<T> second); static ToDouble<T> floatMinusLong(ToFloat<T> first, ToLong<T> second); static ToFloat<T> floatMinusFloat(ToFloat<T> first, ToFloat<T> second); static ToDouble<T> doubleMinusInt(ToDouble<T> first, int second); static ToDouble<T> doubleMinusLong(ToDouble<T> first, long second); static ToDouble<T> doubleMinusDouble(ToDouble<T> first, double second); static ToDouble<T> doubleMinusInt(ToDouble<T> first, ToInt<T> second); static ToDouble<T> doubleMinusLong(ToDouble<T> first, ToLong<T> second); static ToDouble<T> doubleMinusDouble(ToDouble<T> first, ToDouble<T> second);  }### Answer:
@Test void shortMinusShort() { final ToShort<Short> instance = MinusUtil.shortMinusShort(s -> s, s -> s); assertEquals(0, instance.applyAsShort((short) 1)); }