Modelling Java Interfaces with Existential data types