anchor.diff:  let textOfArrPath path = String.concat "." (List.ofArray path)
   let textOfLid lid = textOfPath (pathOfLid lid)
   
  -let rangeOfLid (lid: Ident list) = 
  -    match lid with 
  +let rangeOfLid (lid: Ident list) =
  +    match lid with
       | [] -> failwith "rangeOfLid"
       | [id] -> id.idRange
  -    | h::t -> unionRanges h.idRange (List.last t).idRange 
  +    | h::t -> unionRanges h.idRange (List.last t).idRange
   
   [<RequireQualifiedAccess>]
  -type ScopedPragma = 
  +type ScopedPragma =
      | WarningOff of range * int
      // Note: this type may be extended in the future with optimization on/off switches etc.
   
   // These are the results of parsing + folding in the implicit file name
   /// ImplFile(modname,isScript,qualName,hashDirectives,modules,isLastCompiland)
   
  -/// QualifiedNameOfFile acts to fully-qualify module specifications and implementations, 
  -/// most importantly the ones that simply contribute fragments to a namespace (i.e. the ParsedSigFileFragment.NamespaceFragment case) 
  -/// There may be multiple such fragments in a single assembly.  There may thus also 
  -/// be multiple matching pairs of these in an assembly, all contributing types to the same 
  -/// namespace. 
  +/// QualifiedNameOfFile acts to fully-qualify module specifications and implementations,
  +/// most importantly the ones that simply contribute fragments to a namespace (i.e. the ParsedSigFileFragment.NamespaceFragment case)
  +/// There may be multiple such fragments in a single assembly.  There may thus also
  +/// be multiple matching pairs of these in an assembly, all contributing types to the same
  +/// namespace.
   [<NoEquality; NoComparison>]
  -type QualifiedNameOfFile = 
  -    | QualifiedNameOfFile of Ident 
  -    member x.Text = (let (QualifiedNameOfFile(t)) = x in t.idText)
  -    member x.Id = (let (QualifiedNameOfFile(t)) = x in t)
  -    member x.Range = (let (QualifiedNameOfFile(t)) = x in t.idRange)
  +type QualifiedNameOfFile =
  +    | QualifiedNameOfFile of Ident
  +    member x.Text = (let (QualifiedNameOfFile t) = x in t.idText)
  +    member x.Id = (let (QualifiedNameOfFile t) = x in t)
  +    member x.Range = (let (QualifiedNameOfFile t) = x in t.idRange)
   
   [<NoEquality; NoComparison>]
  -type ParsedImplFileInput = 
  -    | ParsedImplFileInput of string * (*isScript: *) bool * QualifiedNameOfFile * ScopedPragma list * ParsedHashDirective list * SynModuleOrNamespace list * (bool * bool)
  +type ParsedImplFileInput =
  +    | ParsedImplFileInput of filename:string * isScript:bool * QualifiedNameOfFile * ScopedPragma list * ParsedHashDirective list * SynModuleOrNamespace list * (bool * bool)
   
   [<NoEquality; NoComparison>]
  -type ParsedSigFileInput = 
  -    | ParsedSigFileInput of string * QualifiedNameOfFile * ScopedPragma list * ParsedHashDirective list * SynModuleOrNamespaceSig list
  +type ParsedSigFileInput =
  +    | ParsedSigFileInput of filename:string * QualifiedNameOfFile * ScopedPragma list * ParsedHashDirective list * SynModuleOrNamespaceSig list
   
   [<NoEquality; NoComparison; RequireQualifiedAccess>]
  -type ParsedInput = 
  +type ParsedInput =
       | ImplFile of ParsedImplFileInput
       | SigFile of ParsedSigFileInput
   
  -    member inp.Range = 
  +    member inp.Range =
           match inp with
           | ParsedInput.ImplFile (ParsedImplFileInput(_,_,_,_,_,(SynModuleOrNamespace(_,_,_,_,_,_,_,m) :: _),_))
           | ParsedInput.SigFile (ParsedSigFileInput(_,_,_,_,(SynModuleOrNamespaceSig(_,_,_,_,_,_,_,m) :: _))) -> m
           | ParsedInput.ImplFile (ParsedImplFileInput(filename,_,_,_,_,[],_))
           | ParsedInput.SigFile (ParsedSigFileInput(filename,_,_,_,[])) ->
  -#if DEBUG      
  +#if DEBUG
               assert("" = "compiler expects ParsedInput.ImplFile and ParsedInput.SigFile to have at least one fragment, 4488")
  -#endif    
  +#endif
               rangeN filename 0 (* There are no implementations, e.g. due to errors, so return a default range for the file *)
   
   
  
positive.code: /// the whitespace.
  [<RequireQualifiedAccess>]
  [<NoComparison; NoEquality>]
  type LexerWhitespaceContinuation = 
      | Token            of LexerIfdefStackEntries
      | IfDefSkip        of LexerIfdefStackEntries * int * range
      | String           of LexerIfdefStackEntries * range
      | VerbatimString   of LexerIfdefStackEntries * range
      | TripleQuoteString of LexerIfdefStackEntries * range
      | Comment          of LexerIfdefStackEntries * int * range
      | SingleLineComment of LexerIfdefStackEntries * int * range
      | StringInComment    of LexerIfdefStackEntries * int * range
      | VerbatimStringInComment   of LexerIfdefStackEntries * int * range
      | TripleQuoteStringInComment   of LexerIfdefStackEntries * int * range
      | MLOnly            of LexerIfdefStackEntries * range
      | EndLine           of LexerEndlineContinuation
      
      member x.LexerIfdefStack =
          match x with 
          | LexCont.Token ifd
          | LexCont.IfDefSkip (ifd,_,_)
          | LexCont.String (ifd,_)
  
negative.code: //-----------------------------------------------------------------------
  
  [<RequireQualifiedAccess>]
  type SynAccess =
      | Public
      | Internal
      | Private
  
  
  type SequencePointInfoForTarget =
      | SequencePointAtTarget
      | SuppressSequencePointAtTarget
  
  type SequencePointInfoForSeq =
      | SequencePointsAtSeq
      // This means "suppress a in 'a;b'" and "suppress b in 'a before b'"
      | SuppressSequencePointOnExprOfSequential
      // This means "suppress b in 'a;b'" and "suppress a in 'a before b'"
      | SuppressSequencePointOnStmtOfSequential
  
  type SequencePointInfoForTry =
      | SequencePointAtTry of range
      // Used for "use" and "for"
      | SequencePointInBodyOfTry
      | NoSequencePointAtTry
  
  type SequencePointInfoForWith =
      | SequencePointAtWith of range
      | NoSequencePointAtWith
  
  type SequencePointInfoForFinally =
      | SequencePointAtFinally of range
      | NoSequencePointAtFinally
  
  type SequencePointInfoForForLoop =
      | SequencePointAtForLoop of range
      | NoSequencePointAtForLoop
  
  type SequencePointInfoForWhileLoop =
      | SequencePointAtWhileLoop of range
      | NoSequencePointAtWhileLoop
  
  type SequencePointInfoForBinding =
      | SequencePointAtBinding of range
      // Indicates the omission of a sequence point for a binding for a 'do expr'
      | NoSequencePointAtDoBinding
      // Indicates the omission of a sequence point for a binding for a 'let e = expr' where 'expr' has immediate control flow
      | NoSequencePointAtLetBinding
  