Ok, I got your two arguments of performance and default implementations. Having interfaces for Sequence and DiffComparator would allow us to have single classes which implement both (like standard java where equals and hash are in every (model) class). This would help writing smaller tests - but in real code we would really want seperate implementations for Sequence and DiffComparator. So, runtime-performance argument beats smaller-tests - I am fine with the abstract class.