anchor.diff:          | Some v -> f.Invoke v
           | _ -> ()
   
  +    /// Gets the option if Some x, otherwise the supplied default value.
       [<Extension>]
       static member OrElse (o, other) =
           match o with
  
positive.code:         | Some v -> Choice1Of2 v
          | _ -> Choice2Of2 other
  
      [<Extension>]
      static member ToFSharpList o = Option.toList o
  
      [<Extension>]
      static member ToArray o = Option.toArray o
  
      // LINQ
      [<Extension>]
      static member Select (o, f: Func<_,_>) = Option.map f.Invoke o
  
      [<Extension>]
      static member SelectMany (o, f: Func<_,_>) = Option.bind f.Invoke o
  
      [<Extension>]
      static member SelectMany (o, f: Func<_,_>, mapper: Func<_,_,_>) =
        let mapper = Option.lift2 (curry mapper.Invoke)
        let v = Option.bind f.Invoke o
        mapper o v
  
      [<Extension>]
      static member Aggregate (o, state, f: Func<_,_,_>) =
          Option.fold (curry f.Invoke) state o
  
      [<Extension>]
      static member Where (o: _ option, pred: _ Predicate) =
        Option.filter pred.Invoke o
  
negative.code: [<Extension>]
  type FSharpChoice =
  
      /// If Choice is 1Of2, return its value.
      /// Otherwise throw ArgumentException.
      [<Extension>]
      static member Value (c: Choice<_,_>) = Choice.get c
  
      /// Attempts to cast an object.
      /// Stores the cast value in 1Of2 if successful, otherwise stores the exception in 2Of2
      static member Cast (o: obj) = Choice.cast o
  
      [<Extension>]
  