Use diamond operator
Manual cosmetics
PMD 6.0.1 cosmetics
reformatted
Removed dead code & spotbugs cosmetics
Factored out common code into abstract class and interface