 
 import class Foundation.NSOperation
 
+/// Typealias for `NSOperation`
+public typealias TaskBase = NSOperation
+
 /**
  `Task<T>` is an abstract class that provides interface encapsuling any
  asynchronous or synchronous operation. Abstract nature of the `Task<T>` enforces

 1. **State machine** - `Task<T>` works with internal task state machine. State
 of the task at any point can be:
 
	* Initialized - Task instance is created
	* Pending - Task is added to the `TaskQueue` and started process of
	evaluating readiness
	* Ready - Task is ready to execute.
	* Executing - Task is executing
	* Finished - Task finished with execution
 
 2. **Task execution point** - Task execution starts in `run()` method when state
 reaches `Ready` state. You should always override this method in your subclass.
 
 3. **Finishing execution** - Task execution finishes when `finish(_:)` method is
 called. You always finish execution with `Result<T>` object. `Result<T>` is an

 
 - note: `retry(_:)` method can be chained with other task methods
*/
public class Task<T>: TaskBase {
    
    /**
