@startuml abstract class net.micode.notes.gtask.data.Node { } class net.micode.notes.gtask.remote.GTaskManager { } class net.micode.notes.gtask.data.MetaData { } class net.micode.notes.gtask.data.Task { } class net.micode.notes.gtask.data.TaskList { } class net.micode.notes.gtask.exception.ActionFailureException { } class net.micode.notes.gtask.data.SqlData { } class net.micode.notes.gtask.remote.GTaskClient { } class net.micode.notes.gtask.remote.GTaskSyncService { } class net.micode.notes.gtask.data.SqlNote { } class net.micode.notes.gtask.exception.NetworkFailureException { } class net.micode.notes.gtask.remote.GTaskASyncTask { } interface net.micode.notes.gtask.remote.GTaskASyncTask$OnCompleteListener { } net.micode.notes.gtask.data.Task <|-- net.micode.notes.gtask.data.MetaData net.micode.notes.gtask.data.Node <|-- net.micode.notes.gtask.data.Task net.micode.notes.gtask.data.Node <|-- net.micode.notes.gtask.data.TaskList net.micode.notes.gtask.exception.RuntimeException <|-- net.micode.notes.gtask.exception.ActionFailureException android.app.Service <|-- net.micode.notes.gtask.remote.GTaskSyncService net.micode.notes.gtask.exception.Exception <|-- net.micode.notes.gtask.exception.NetworkFailureException android.os.AsyncTask <|-- net.micode.notes.gtask.remote.GTaskASyncTask net.micode.notes.gtask.remote.GTaskASyncTask +.. net.micode.notes.gtask.remote.GTaskASyncTask$OnCompleteListener @enduml