anchor.diff:  
   open System.Collections.Generic
   open Microsoft.FSharp.Compiler 
  +open Microsoft.FSharp.Compiler.AbstractIL.IL
   open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library
   open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics 
   open Microsoft.FSharp.Compiler.Range
  
positive.code:     | PathExnConstr(p1,_,n1), PathExnConstr(p2,_,n2) -> (n1 = n2) && pathEq p1 p2
      | PathEmpty(_), PathEmpty(_) -> true
      | _ -> false
  
  
  //---------------------------------------------------------------------------
  
negative.code:             | Some c ->
                  match tryDestAppTy g ty with
                  | Some tcref when tcref.IsEnumTycon ->
                      let enumValues =
                          if tcref.IsILEnumTycon then
                              let (TILObjectReprData(_, _, tdef)) = tcref.ILTyconInfo
                              tdef.Fields.AsList
                              |> Seq.choose (fun ilField ->
                                  if ilField.IsStatic then
                                      ilField.LiteralValue |> Option.map (fun ilValue ->
                                          ilField.Name, TcFieldInit ilValue)
                                  else None)
                          else
                              tcref.AllFieldsArray |> Seq.choose (fun fsField ->
                                  match fsField.rfield_const, fsField.rfield_static with
                                  | Some fsFieldValue, true -> Some (fsField.rfield_id.idText, fsFieldValue)
                                  | _ -> None)
  
                      let nonCoveredEnumValues = Seq.tryFind (fun (_, fldValue) -> not (consts.Contains fldValue)) enumValues
                            
                      match nonCoveredEnumValues with
                      | None -> Expr.Const(c,m,ty), true
                      | Some (fldName, _) ->
                          let v = RecdFieldRef.RFRef(tcref, fldName)
                          Expr.Op(TOp.ValFieldGet v, [ty], [], m), false
                  | _ -> Expr.Const(c,m,ty), false
              
  