    }
    
    open func directSetInput(_ input: Input?) {
-      directTransition(newState: .processing(id: ConductionResourceFetchID(), priority: _priority(), input: input))
+      directTransition(newState: .processing(id: ConductionResourceTaskID(), priority: _priority(), input: input))
    }
    
    open func directSetResource(_ resource: Resource?) {

      }
   }
   
   private func _fetch(id: ConductionResourceFetchID) {
      guard let fetchBlock = fetchBlock else {
         directTransition(newState: .processing(id: ConductionResourceFetchID(), priority: _priority(), input: nil))
         return
      }
      


public enum ConductionResourceState<Input, Resource> {
   case empty
   case fetching(id: ConductionResourceTaskID, priority: Int?)
   case processing(id: ConductionResourceTaskID, priority: Int?, input: Input?)
   case fetched(Resource?)
   case invalid(Resource?)
}

public typealias ConductionResourceObserver = UUID

public typealias ConductionResourceTaskID = UUID

public typealias ConductionResourceFetchBlock<Input, Resource> = (_ state: ConductionResourceState<Input, Resource>, _ completion: @escaping (_ fetchedInput: Input?) -> Void) -> Void

