anchor.diff:          logWarn "Finalizer is invoked. Please ensure that the object is disposed in a deterministic manner instead." [||]
           cleanup(false)
   
  -and ReactoKinesixApp private (awsKey     : string, 
  -                              awsSecret  : string, 
  -                              region     : RegionEndpoint,
  +and ReactoKinesixApp private (kinesis    : IAmazonKinesis, 
  +                              dynamoDB   : IAmazonDynamoDB, 
                                 appName    : string,
                                 streamName : string,
                                 workerId   : string,
  
positive.code:     member internal this.MarkAsClosed shardId   = markAsClosed shardId |> ignore
      member internal this.StopProcessing shardId = stopShardProcessor shardId |> ignore
  
      static member CreateNew(awsKey, awsSecret, region, appName, streamName, workerId, processor, ?config) =
          let config = defaultArg config <| new ReactoKinesixConfig()
          new ReactoKinesixApp(awsKey, awsSecret, region, appName, streamName, workerId, processor, config) :> IReactoKinesixApp
  
      interface IReactoKinesixApp with
          [<CLIEvent>] member this.OnInitialized    = initializedEvent.Publish
  
negative.code:     let initializedEvent                = new Event<OnInitializedDelegate, EventArgs>()
      let batchProcessedEvent             = new Event<OnBatchProcessedDelegate, EventArgs>()
      let shardProcessorCountChangedEvent = new Event<int>()  // when the number of shard processors have changed
   
      let streamName, workerId = StreamName streamName, WorkerId workerId
      let tableName            = TableName <| sprintf "%s%s" appName config.DynamoDBTableSuffix
      let mutable processor    = processor
  