@startuml abstract class data.io.AbstractMVDataReader abstract class sync.AbstractSyncTask interface data.io.MVDataReader interface data.io.MVDataWriter interface java.io.Closeable interface java.lang.Comparable interface java.lang.Iterable interface java.util.Iterator interface java.util.concurrent.Callable data.io.AbstractMVDataReader --|> data.io.MVDataReader sync.AbstractSyncTask --|> java.util.concurrent.Callable data.MVDataEntry --|> java.lang.Comparable data.filters.MVDataCombiner --|> data.io.AbstractMVDataReader data.io.ConnectionsHolder --|> java.io.Closeable data.io.SafeDataReader --|> data.io.AbstractMVDataReader data.io.csv.CSVDataReader --|> data.io.AbstractMVDataReader data.io.ldap.LDAPConnectionWrapper --|> java.io.Closeable data.io.ldap.LDAPFlatDataReader --|> data.io.AbstractMVDataReader data.io.ldap.LDAPFlatDataWriter --|> data.io.MVDataWriter data.io.sql.SQLConnectionWrapper --|> java.io.Closeable data.io.sql.SQLRelDataReader --|> data.io.AbstractMVDataReader data.io.stub.StubDataReader --|> data.io.AbstractMVDataReader data.io.stub.StubDataWriter --|> data.io.MVDataWriter sync.BasicSyncTask --|> sync.AbstractSyncTask data.io.MVDataReader --|> java.lang.Iterable data.io.MVDataReader --|> java.util.Iterator @enduml