anchor.diff:  
   open System
   open System.Diagnostics
  +
  +
  +[<AutoOpen>]
  +module Prelude =
  +    /// obj.ReferenceEquals
  +    let inline (==) a b = obj.ReferenceEquals(a, b)
  +    /// LanguagePrimitives.PhysicalEquality
  +    let inline (===) a b = LanguagePrimitives.PhysicalEquality a b
  +    let inline debug msg = Printf.kprintf Debug.WriteLine msg
  +    let inline fail msg = Printf.kprintf Debug.Fail msg
  +    let inline isNull v = match v with | null -> true | _ -> false
  +    let inline isNotNull v = v |> (not << isNull)
   
   [<RequireQualifiedAccess>]
   [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
  
positive.code:     Debug.Listeners.Add(new TextWriterTraceListener(System.Console.Out)) |> ignore
      Debug.AutoFlush <- true
  #endif
      /// obj.ReferenceEquals
      let inline (==) a b = obj.ReferenceEquals(a, b)
      /// LanguagePrimitives.PhysicalEquality
      let inline (===) a b = LanguagePrimitives.PhysicalEquality a b
      let inline debug msg = Printf.kprintf Debug.WriteLine msg
      let inline fail msg = Printf.kprintf Debug.Fail msg
      let inline isNull v = match v with | null -> true | _ -> false
      let inline isNotNull v = v |> (not << isNull)
  
      let maybe = MaybeBuilder()
      let asyncMaybe = AsyncMaybeBuilder()
  
negative.code:         | null -> nullArg argName 
          | _ -> ()
  
      /// Optimized arrays equality. ~100x faster than `array1 = array2` on strings.
      /// ~2x faster for floats
      /// ~0.80% for ints
      let inline areEqual (x: 'a[]) (y: 'a[]) =
          match x, y with
          | null, null -> true
  