anchor.diff:      
       member this.Repository<'TEntity, 'TDTO when 'TEntity : not struct and 'TEntity : equality and 'TEntity : null and 'TDTO : equality and 'TDTO : null and 'TDTO : not struct>() = 
           this.Repository<BaseRepository<'TEntity, 'TDTO>>()
  -    member this.ListRepository<'TEntity, 'TDTO, 'TListDTO when 'TEntity : not struct and 'TEntity : equality and 'TEntity : null and 'TDTO : equality and 'TDTO : null and 'TDTO : not struct and 'TListDTO : equality and 'TListDTO : null>() = 
  +    member this.Repository<'TEntity, 'TDTO, 'TListDTO when 'TEntity : not struct and 'TEntity : equality and 'TEntity : null and 'TDTO : equality and 'TDTO : null and 'TDTO : not struct and 'TListDTO : equality and 'TListDTO : null and 'TListDTO : not struct>() = 
           this.Repository<BaseListRepository<'TEntity, 'TDTO, 'TListDTO>>()
       member __.Dispose() = ()
       interface IDisposable with
  
positive.code: 
  open System
  open System.Data.Entity
  open System.Collections.Generic
  open System.Linq
  open System.Reflection
  open Caelan.Frameworks.BIZ.Interfaces
  
negative.code: 
  and [<Sealed; AbstractClass>] GenericRepository() = 
      
      static let findRepository ([<ParamArray>] args : obj []) (baseType, baseGenericType : Type) = 
          let findRepository (assembly : Assembly) = 
              match assembly with
              | null -> None
              | _ -> 
                  match assembly.GetTypes() |> Seq.tryFind (fun t -> t.BaseType = baseType) with
                  | Some(repoType) -> Some(Activator.CreateInstance(repoType, args) :?> 'TRepository)
                  | None -> None
          
          let rec getRepository asmList = 
              match asmList with
              | head :: tail -> 
                  match head |> findRepository with
                  | Some(repo) -> repo
                  | None -> tail |> getRepository
              | [] -> 
                  (match baseType.IsGenericTypeDefinition with
                   | true -> Activator.CreateInstance(baseGenericType)
                   | _ -> Activator.CreateInstance(baseType, args)) :?> 'TRepository
          
          [ Assembly.GetExecutingAssembly()
            Assembly.GetEntryAssembly()
            Assembly.GetCallingAssembly() ]
          |> getRepository
      
      static member CreateGenericRepository<'TEntity, 'TDTO when 'TEntity : not struct and 'TEntity : equality and 'TEntity : null and 'TDTO : equality and 'TDTO : null and 'TDTO : not struct>(manager : BaseUnitOfWork) = 
          let baseType = typeof<BaseRepository<'TEntity, 'TDTO>>
          (baseType, baseType.MakeGenericType(typeof<'TEntity>, typeof<'TDTO>)) |> findRepository [| manager |]
      
      static member CreateGenericListRepository<'TEntity, 'TDTO, 'TListDTO when 'TEntity : not struct and 'TEntity : equality and 'TEntity : null and 'TDTO : equality and 'TDTO : null and 'TDTO : not struct and 'TListDTO : equality and 'TListDTO : null and 'TListDTO : not struct>(manager : BaseUnitOfWork) = 
          let baseType = typeof<BaseListRepository<'TEntity, 'TDTO, 'TListDTO>>
          (baseType, baseType.MakeGenericType(typeof<'TEntity>, typeof<'TDTO>, typeof<'TListDTO>)) 
          |> findRepository [| manager |]
  