anchor.diff:          static member instance (_:ToList, x:list<'a>      , _) = fun () -> x
   
       let ToList = ToList()
  -
  -    type ToArrayDefault() =
  -        static member inline instance (_:ToArrayDefault, x:#obj , _) = fun () -> foldr (fun x y -> Array.concat [[|x|];y]) [||] x
  +    let inline toList  value :'t list = Inline.instance (ToList , value) ()
   
       type ToArray() =
  -        inherit ToArrayDefault()
  +        inherit Typ1()
  +        static member inline instance (_:Typ1, x , _) = fun () -> foldr (fun x y -> Array.concat [[|x|];y]) [||] x
           static member instance (_:ToArray, x:seq<'a>       , _) = fun () -> Seq.toArray x
           static member instance (_:ToArray, x:Set<'a>       , _) = fun () -> Set.toArray x
           static member instance (_:ToArray, x:string        , _) = fun () -> x.ToCharArray()
  
positive.code: 
  module Foldable =
  
      type Foldr = Foldr with
          static member instance (Foldr, x:option<_>    , _) = fun (f,z) -> match x with Some t -> f t z | _ -> z
          static member instance (Foldr, x:list<_>      , _) = fun (f,z) -> List.foldBack          f x z
          static member instance (Foldr, x:Set<_>       , _) = fun (f,z) -> Set.foldBack           f x z
          static member instance (Foldr, x:string       , _) = fun (f,z) -> Array.foldBack f (x.ToCharArray()) z
          static member instance (Foldr, x:StringBuilder, _) = fun (f,z) -> Array.foldBack f (x.ToString().ToCharArray()) z
          static member instance (Foldr, x:seq<_>       , _) = fun (f,z) -> List.foldBack  f (Seq.toList x) z
          static member instance (Foldr, x:Id<'a>       , _) = fun (f,z) -> f (Id.run x) z
  
      type DefaultImpl =
          static member inline FoldMapFromFoldr f x = Inline.instance (Foldr, x) (mappend << f, mempty())
  
negative.code: 
  
      type Foldr with
          static member inline instance (_:Foldr, x:array<_>, _) = fun (f,z) -> DefaultImpl.FoldrFromFoldMap f z x
  
      let inline internal foldr (f: 'a -> 'b -> 'b) (z:'b) x :'b = Inline.instance (Foldr, x) (f,z)
  
  