static class JNat { } static class JNatList { } static class Jzero extends JNat { public Jzero() {} public boolean equals(Object o) { if(o instanceof Jzero) { return true; } return false; } } static class Jsuc extends JNat { public JNat n; public Jsuc() { } public Jsuc(JNat n) { this.n = n; } public boolean equals(Object o) { if(o instanceof Jsuc) { Jsuc obj = (Jsuc) o; return n.equals(obj.n); } return false; } }