Java diamond problem