anchor.diff:                  WebSockets.ReadyState
                   WebStorage.Storage
                   WebStorage.StorageEvent
  +                WebWorkers.WorkerType
  +                WebWorkers.WorkerOptions
  +                WebWorkers.WorkerNavigator
  +                WebWorkers.WorkerUtils
  +                WebWorkers.WorkerLocation
  +                WebWorkers.WorkerGlobalScope
  +                WebWorkers.DedicatedWorkerGlobalScope
  +                WebWorkers.SharedWorkerGlobalScope
  +                WebWorkers.AbstractWorker
  +                WebWorkers.Worker
  +                WebWorkers.SharedWorker
               ]
               Namespace "WebSharper.JavaScript.Geolocation" [
                   Geolocation.Coordinates
  
positive.code:             ///  Function onobsolete;
          ]
  
  module WebWorkers =
  
      let WorkerNavigator = Class "WorkerNavigator"
      let MessagePortArray = Class "MessagePortArray"
  
      let WorkerUtils =
          Class "WorkerUtils"
          |+> Static [
              "importScripts" => (!+ T<string>) ^-> T<unit>
              "navigator" =? WorkerNavigator
          ]
  
      let WorkerLocation =
          Class "WorkerLocation"
  
      let WorkerGlobalScope = 
          let WorkerGlobalScope = Class "WorkerGlobalScope"
          WorkerGlobalScope
          // |=> Implements [T<EventTarget>; WorkerUtils]
          |+> Instance [
              "self" =? WorkerGlobalScope
              "location" =? WorkerLocation
              "close" => T<unit> ^-> T<unit>
              // attribute Function onerror;
          ]
      
      let SharedWorkerScope =   
          Class "SharedWorkerGlobalScope"
              |=> Inherits WorkerGlobalScope
              |+> Instance [
                  "name" =? T<string>
                  "applicationCache" =? AppCache.ApplicationCache
                  //           attribute Function onconnect;
              ]
  
      let DedicatedWorkerGlobalScope =
          Class "DedicatedWorkerGlobalScope"
          |=> Inherits WorkerGlobalScope
          |+> Instance [
              "postMessage" => (T<obj> * !? MessagePortArray) ^-> T<unit>
              /// attribute Function onmessage;
              
          ]
          
      let AbstractWorker =
          Class "AbstractWorker"
          // |=> Implements [T<EventTarget>]
          |+> Instance [
              // attribute Function onerror;
              ]
  
      let Worker =           
          Class "Worker"
          |=> Inherits AbstractWorker
          |+> Instance [
              "terminate" => T<unit> ^-> T<unit>
              "postMessage" => (T<obj> * !? MessagePortArray) ^-> T<unit>
              // attribute Function onmessage;
          ]
  
  module General = 
      let BarProp =
          let BarProp = Class "BarProp"
  
negative.code:             "revokeObjectURL" => T<string> ^-> T<unit>
          ]
  
      let WindowOrWorkerGlobalScope =
          Class "WindowOrWorkerGlobalScope"
          |=> Inherits Dom.Interfaces.EventTarget
          |+> Instance [
              // "caches" =? CacheStorage
              // "indexedDB" =? IDBFactory
              "isSecureContext" =? T<bool>
              "origin" =? T<string>
  
              "atob" => T<string> ^-> T<string>
              "btoa" => T<string> ^-> T<string>
  
              "setInterval" => (T<unit> ^-> T<unit>)?callback * T<int>?delay ^-> T<obj>
              "setTimeout" => (T<unit> ^-> T<unit>)?callback * !?T<int>?delay ^-> T<obj>
              "clearInterval" => T<obj>?intervalId ^-> T<unit>
              "clearTimeout" => T<obj>?timeoutId ^-> T<unit>
          ]
  
      let Window = 
          let f = Dom.Interfaces.Event ^-> T<unit>
          WindowProxyType
          |=> Inherits WindowOrWorkerGlobalScope
          |+> Static [
              "self" =? WindowProxyType
              |> WithGetterInline "window"
  