OTIO classes like Composition and Item can be wrapped in Java interfaces or abstract class instead of classes to make it explicit that they are not to be used directly, but through subclasses. If there's any useful logic in these base classes we can provide default implementation in the interface as shown here.