Here is a pathological generics example in Java. What is going on here?
public abstract class Foo<X> {
    private List<String> stuff;
    public List<String> getStuff() {
        return stuff;
    }
    public void setStuff(List<String> stuff) {
        this.stuff = stuff;
    }
}
Then I created a subclass, but not I did not specify the type bound, which should make it object.
public class Bar extends Foo {
    public Bar() {
        setStuff(new ArrayList<>());
    }
    public void whatIsGoingOnHere() {
        for(String thing : getStuff())
            System.out.println("Why is this a compiler error???");
    }
}
Why is this a compiler error?
 
    