Метод draw (capture # 1-of? Extends GenericsHell.Shape) в типе GenericsHell.ShapeHelperнеприменимо для аргументов (T)
Проблема в том, что в вашем объявлении фигура имеет тип T, но вы запрашиваете ShapeHelper типаэто означает, что в качестве аргумента можно передать ShapeHelper, где S и T различны.
Затем вы бы вызвали helper<S>.draw(shape<T>);
, что не имеет смысла.
Правильная реализация для этого метода будетbe:
class A<T extends Shape> {
A(T shape, ShapeHelper<T> helper) {
helper.draw(shape);
}
}
, который гарантирует, что форма и помощник по фигуре имеют совместимые типы.