I have a parent class, which defines a collection of chainer methods (methods that return \"this\"). I want to define multiple child classes that contain their own chainer
You can just cast it.
ChainChild child = new ChainChild(); ((ChainChild) child.foo()).bar();
You could try:
public ? extends Chain foo() { return this; }
But I'm not sure that will help, even if it compiles.