Mapped class with interface implementation syntax is confusing

Try following NOUGAT codes:

public static class Program
{
    public Int32 Main(String[] args)
    {
        Test(new List1<int>()); // ok
        Test(new List2<int>()); 
        // ok for COOPER/ECHOES, but compile error for NOUGAT: 
        // Parameter 1 is "List2<Foundation.NSNumber<Int32>>", should be "ISequence<T>"
    }

    public void Test<T>(ISequence<T> seq){
    }
}

public __mapped class List1<T> : ISequence<T> => Foundation.NSMutableArray
{
}

public __mapped class List2<T> => Foundation.NSMutableArray
{
}

I have two questions:

  1. What does the interface implementation syntax here mean? I think a mapped class can’t implement other interfaces.
  2. Why can’t List2 convert to ISequence implicitly on NOUGAT, but works on COOPER/ECHOES by mapping to ArrayList/List?

1: ISequence is mapped on Nougat, the underlying interface (INSFastEnumeration) is non generic, mapped types CAN implement mapped interfaces as long as it’ compatible with the underlying type.

2: Basically because of (1), NSMutableArray is not compatible with ISequence.