anchor.diff:      static member inline instance (MonadPlus.Mplus, OptionT x, _) = fun (OptionT y) -> OptionT <| do'() {
               let! maybe_value = x
               return! match maybe_value with Some value -> x | _ -> y}
  +
   
   type ListT<'Ma> = ListT of 'Ma
   
  
positive.code: 
  module MonadTrans = 
      type Lift = Lift with
          static member inline instance (Lift, _:OptionT<'m_a>) = OptionT << (liftM Some)       :'ma -> OptionT<'m_a>
          static member inline instance (Lift, _: ListT<'m_a> ) = ListT << (liftM List.singleton):'ma ->  ListT<'m_a> 
          static member inline instance (Lift, _: SeqT<'m_a> ) = SeqT << (liftM Seq.singleton):'ma ->  SeqT<'m_a> 
  
      let inline internal lift (x:'ma) = Inline.instance Lift x
  
  
negative.code:     type LiftAsync = LiftAsync with  
          static member inline instance (LiftAsync, _:OptionT<'U>) = fun (x :Async<'a>) -> lift (Inline.instance LiftAsync x)
          static member inline instance (LiftAsync, _:ListT< 'U> ) = fun (x :Async<'a>) -> lift (Inline.instance LiftAsync x)
          static member inline instance (LiftAsync, _:SeqT< 'U>  ) = fun (x :Async<'a>) -> lift (Inline.instance LiftAsync x)
          static member        instance (LiftAsync, _:Async<'a>  ) = fun (x :Async<'a>) -> x
  
      let inline internal liftAsync (x: Async<'a>) = Inline.instance LiftAsync x
  