anchor.diff:      type DetailedCoverage =
           U2<StatementCoverage, FunctionCoverage>
   
  -    /// Represents an item of a type hierarchy, like a class or an interface.
  -    type [<AllowNullLiteral>] TypeHierarchyItem =
  -        /// The name of this item.
  -        abstract name: string with get, set
  -        /// The kind of this item.
  -        abstract kind: SymbolKind with get, set
  -        /// Tags for this item.
  -        abstract tags: ReadonlyArray<SymbolTag> option with get, set
  -        /// More detail for this item, e.g. the signature of a function.
  -        abstract detail: string option with get, set
  -        /// The resource identifier of this item.
  -        abstract uri: Uri with get, set
  -        /// The range enclosing this symbol not including leading/trailing whitespace
  -        /// but everything else, e.g. comments and code.
  -        abstract range: Range with get, set
  -        /// <summary>
  -        /// The range that should be selected and revealed when this symbol is being
  -        /// picked, e.g. the name of a class. Must be contained by the <see cref="TypeHierarchyItem.range">range</see>-property.
  -        /// </summary>
  -        abstract selectionRange: Range with get, set
  -
  -    /// Represents an item of a type hierarchy, like a class or an interface.
  -    type [<AllowNullLiteral>] TypeHierarchyItemStatic =
  -        /// <summary>Creates a new type hierarchy item.</summary>
  -        /// <param name="kind">The kind of the item.</param>
  -        /// <param name="name">The name of the item.</param>
  -        /// <param name="detail">The details of the item.</param>
  -        /// <param name="uri">The Uri of the item.</param>
  -        /// <param name="range">The whole range of the item.</param>
  -        /// <param name="selectionRange">The selection range of the item.</param>
  -        [<EmitConstructor>] abstract Create: kind: SymbolKind * name: string * detail: string * uri: Uri * range: Range * selectionRange: Range -> TypeHierarchyItem
  -
  -    /// The type hierarchy provider interface describes the contract between extensions
  -    /// and the type hierarchy feature.
  -    type [<AllowNullLiteral>] TypeHierarchyProvider =
  -        /// <summary>
  -        /// Bootstraps type hierarchy by returning the item that is denoted by the given document
  -        /// and position. This item will be used as entry into the type graph. Providers should
  -        /// return <c>undefined</c> or <c>null</c> when there is no item at the given location.
  -        /// </summary>
  -        /// <param name="document">The document in which the command was invoked.</param>
  -        /// <param name="position">The position at which the command was invoked.</param>
  -        /// <param name="token">A cancellation token.</param>
  -        /// <returns>
  -        /// A type hierarchy item or a thenable that resolves to such. The lack of a result can be
  -        /// signaled by returning <c>undefined</c> or <c>null</c>.
  -        /// </returns>
  -        abstract prepareTypeHierarchy: document: TextDocument * position: Position * token: CancellationToken -> ProviderResult<ResizeArray<TypeHierarchyItem>>
  -        /// <summary>
  -        /// Provide all supertypes for an item, e.g all types from which a type is derived/inherited. In graph terms this describes directed
  -        /// and annotated edges inside the type graph, e.g the given item is the starting node and the result is the nodes
  -        /// that can be reached.
  -        /// </summary>
  -        /// <param name="item">The hierarchy item for which super types should be computed.</param>
  -        /// <param name="token">A cancellation token.</param>
  -        /// <returns>
  -        /// A set of supertypes or a thenable that resolves to such. The lack of a result can be
  -        /// signaled by returning <c>undefined</c> or <c>null</c>.
  -        /// </returns>
  -        abstract provideTypeHierarchySupertypes: item: TypeHierarchyItem * token: CancellationToken -> ProviderResult<ResizeArray<TypeHierarchyItem>>
  -        /// <summary>
  -        /// Provide all subtypes for an item, e.g all types which are derived/inherited from the given item. In
  -        /// graph terms this describes directed and annotated edges inside the type graph, e.g the given item is the starting
  -        /// node and the result is the nodes that can be reached.
  -        /// </summary>
  -        /// <param name="item">The hierarchy item for which subtypes should be computed.</param>
  -        /// <param name="token">A cancellation token.</param>
  -        /// <returns>
  -        /// A set of subtypes or a thenable that resolves to such. The lack of a result can be
  -        /// signaled by returning <c>undefined</c> or <c>null</c>.
  -        /// </returns>
  -        abstract provideTypeHierarchySubtypes: item: TypeHierarchyItem * token: CancellationToken -> ProviderResult<ResizeArray<TypeHierarchyItem>>
  -
       type [<RequireQualifiedAccess>] LanguageStatusSeverity =
           | Information = 0
           | Warning = 1
           | Error = 2
   
       type [<AllowNullLiteral>] LanguageStatusItem =
  +        abstract id: string
           abstract selector: DocumentSelector with get, set
  +        abstract severity: LanguageStatusSeverity with get, set
  +        abstract name: string option with get, set
           abstract text: string with get, set
  -        abstract detail: U2<string, MarkdownString> with get, set
  -        abstract severity: LanguageStatusSeverity with get, set
  +        abstract detail: string option with get, set
  +        abstract command: Command option with get, set
  +        abstract accessibilityInformation: AccessibilityInformation option with get, set
           abstract dispose: unit -> unit
  +
  +    type [<AllowNullLiteral>] QuickPickItem =
  +        inherit Fable.Import.VSCode.Vscode.QuickPickItem
  +        abstract buttons: ResizeArray<QuickInputButton> option with get, set
  +
  +    type [<AllowNullLiteral>] QuickPickItemButtonEvent<'T when 'T :> QuickPickItem> =
  +        abstract button: QuickInputButton with get, set
  +        abstract item: 'T with get, set
  +
  +    type [<AllowNullLiteral>] MarkdownString =
  +        inherit Fable.Import.VSCode.Vscode.MarkdownString
  +        /// <summary>
  +        /// Indicates that this markdown string can contain raw html tags. Default to false.
  +        /// 
  +        /// When <c>supportHtml</c> is false, the markdown renderer will strip out any raw html tags
  +        /// that appear in the markdown text. This means you can only use markdown syntax for rendering.
  +        /// 
  +        /// When <c>supportHtml</c> is true, the markdown render will also allow a safe subset of html tags
  +        /// and attributes to be rendered. See <see href="https://github.com/microsoft/vscode/blob/6d2920473c6f13759c978dd89104c4270a83422d/src/vs/base/browser/markdownRenderer.ts#L296" />
  +        /// for a list of all supported tags and attributes.
  +        /// </summary>
  +        abstract supportHtml: bool option with get, set
   
       type [<AllowNullLiteral>] ResolvedOptionsExtensionHostEnv =
           [<EmitIndexer>] abstract Item: key: string -> string option with get, set
  
positive.code: module rec Fable.Import.VSCode.Proposed
  
  #nowarn "3390" // disable warnings for invalid XML comments
  
  open System
  open Fable.Core
  open Fable.Core.JS
  
  open Fable.Import.VSCode.Vscode
  
  type Error = System.Exception
  
negative.code:             /// <param name="metadata">Additional information about the opener.</param>
              /// <returns>Disposable that unregisters the opener.</returns>
              abstract registerExternalUriOpener: id: string * opener: ExternalUriOpener * metadata: ExternalUriOpenerMetadata -> Disposable
              /// A list of all opened tabs
              /// Ordered from left to right
              abstract tabs: ResizeArray<Tab>
              /// The currently active tab
              /// Undefined if no tabs are currently opened
              abstract activeTab: Tab option
              /// <summary>
              /// An <see cref="Event" /> which fires when the array of <see cref="window.tabs">tabs</see>
              /// has changed.
              /// </summary>
              abstract onDidChangeTabs: Event<ResizeArray<Tab>>
              /// <summary>
              /// An <see cref="Event" /> which fires when the <see cref="window.activeTab">activeTab</see>
              /// has changed.
              /// </summary>
              abstract onDidChangeActiveTab: Event<Tab option>
              abstract getInlineCompletionItemController: provider: InlineCompletionItemProvider<'T> -> InlineCompletionController<'T> when 'T :> InlineCompletionItem
  
      type [<AllowNullLiteral>] FileSystemProvider =
  