Java 8 introduces enhanced interfaces, allowing for default (instance) methods that implementers will inherit if none are provided . Default methods can be used  as a replacement of the skeletal implementation pattern , which creates abstract skeletal implementation classes that implementers extend. Migrating legacy code using the skeletal implementation pattern to instead use default methods can require significant manual effort due to subtle language and semantic restrictions. It requires preserving typecorrectness by analyzing complex type hierarchies, resolving issues arising from multiple inheritance, reconciling differences between class and interface methods, and ensuring tie-breakers with overriding class methods do not alter semantics.
We propose an efficient, fully-automated, semantics- preserving refactoring approach, based on type constraints [4,5] and implemented as an open source Eclipse plug-in, that assists developers in taking advantage of enhanced interfaces. It identifies instances of the pattern and safely migrates class method implementations to interfaces as default methods.