anchor.diff:  exit 0
               """
   
  +    let ``Many Instantiations of the same interface`` = """
  +module Program
   
  -    let multiTypedInterfaceSource = """
   open System
  +
   type AnEnum =
       | One
       | Two
  +
  +[<Struct>]
  +type AStructRecord = { Forename:string;  Surname:string }
   
   type AClass =
       val value: int
  
positive.code: assertion 'a'B (fun v -> (x :> IInterface<byte>).GetIt(v) = v)
  assertion "16"B  (fun v -> (x :> IInterface<byte[]>).GetIt(v) = v)
  assertion AnEnum.Two (fun v -> (x :> IInterface<AnEnum>).GetIt(v) = v)
  """
  
      [<Test>]
      let MultipleTypedInterfacesFSharp50() =
          CompilerAssert.PassWithOptions
              [| "--langversion:preview" |]
              multiTypedInterfaceSource
  
      [<Test>]
      let MultipleTypedInterfacesFSharp47() =
          CompilerAssert.TypeCheckWithErrorsAndOptions
              [| "--langversion:4.7" |]
              multiTypedInterfaceSource
              [|
                  (FSharpErrorSeverity.Error, 443, (15,6,15,20), "This type implements the same interface at different generic instantiations 'IInterface<AnEnum>' and 'IInterface<bigint>'. This is not permitted in this version of F#.")
              |]
  
  
negative.code: module InterfaceTests =
  
      [<Test>]
      let ShouldnWork() =
          CompilerAssert.Pass """
  type IGet<'T> =
      abstract member Get : unit -> 'T
      
  