Suppose I have the following class:
public class FixExpr {
Expr in;
}
Now I want to introduce a generic argument, abstract
I think what you're trying to do is simply not supported by Java generics. The simpler case of
public class Foo {
public T bar() { return null; }
}
also does not compile using javac.
Since Java does not know at compile-time what T is, it can't guarantee that T is at all meaningful. For example if you created a Foo, bar would have the signature
public BufferedImage bar()
which is nonsensical. Since there is no mechanism to force you to only instantiate Foos with generic Ts, it refuses to compile.