anchor.diff:          | CurlyBrackets.OpenCharacter -> ParenthesisCompletionSession() :> IEditorBraceCompletionSession
           | SquareBrackets.OpenCharacter -> ParenthesisCompletionSession() :> IEditorBraceCompletionSession
           | VerticalBar.OpenCharacter -> VerticalBarCompletionSession() :> IEditorBraceCompletionSession
  +        | AngleBrackets.OpenCharacter -> AngleBracketCompletionSession() :> IEditorBraceCompletionSession
           | DoubleQuote.OpenCharacter -> DoubleQuoteCompletionSession() :> IEditorBraceCompletionSession
  +        | Asterisk.OpenCharacter -> DoubleQuoteCompletionSession() :> IEditorBraceCompletionSession
           | _ -> null
   
       interface IEditorBraceCompletionSessionFactory with
  
positive.code:         member this.AllowOverType(_session, _cancellationToken) = 
              // TODO: Implement this for F#
              true
  
          member this.CheckOpeningPoint(_session, _cancellationToken) = 
              let sourceCode = _session.TextView.TextSnapshot
              //let document = _session.TextView.TextSnapshot.GetOpenDocumentInCurrentContextWithChanges()
              let position = _session.TextView.Caret.Position.BufferPosition.Position
              let ret = sourceCode.GetText(position-2,1) = "{" && sourceCode.GetText(position,1) = "}"
                          || sourceCode.GetText(position-2,1) = "[" && sourceCode.GetText(position,1) = "]"
              ret
              
  [<ExportLanguageService(typeof<IEditorBraceCompletionSessionFactory>, FSharpConstants.FSharpLanguageName)>]
  type internal FSharpEditorBraceCompletionSessionFactory () =
      inherit ForegroundThreadAffinitizedObject ()
  
negative.code:     [<Literal>]
      let CloseCharacter = '"'
  
  (* This is for [| |] and {| |} , since the implementation deals with chars only. 
     We have to test if there is a { or [ before the cursor position and insert the closing '|'. *)
  module private VerticalBar =
  
      [<Literal>]
  