       var minimumInterval: Interval
       var state: State
       enum State {
-        case idle
-        case progressing((UIBackgroundFetchResult) -> Void)
+        case idle // Readonly
+        case progressing((UIBackgroundFetchResult) -> Void) // Readonly
         case complete(UIBackgroundFetchResult, (UIBackgroundFetchResult) -> Void)
       }
       enum Interval {

      var action: AsyncAction<Action>
      struct Action {
        var id: UIApplicationShortcutItem
        var completion: (Bool) -> Void
      }
    }
    struct RemoteNofitication {
      var notification: [AnyHashable : Any]
      var state: State
      enum State {
        case progressing((UIBackgroundFetchResult) -> Void)
        case complete(UIBackgroundFetchResult, (UIBackgroundFetchResult) -> Void)
      }
    }
    struct WatchKitExtensionRequest {
      var userInfo: [AnyHashable: Any]?
      var reply: ([AnyHashable : Any]?) -> Void
    }
    enum BackgroundURLSessionDataAvailability {
      case none
      case some (String, (Void) -> Void)
      case ending ((Void) -> Void)
    }
    enum UserActivityState {
      case idle
      case willContinue(String)
      case isContinuing(NSUserActivity)

      case failing(URL)
    }
    struct BackgroundURLSessionAction {
      let id: String // Readonly
      let completion: (Void) -> Void // Readonly
      var state: State
      enum State {
        case progressing // Readonly
        case complete
      }
    }
