Source: http://www.cs.le.ac.uk/people/emt12/CO1005/slides/interface_comparator.md.slides.pdf