using System.Collections.Generic;
using System.Collections;
public static void Main()
Console.WriteLine("Hello World");
List<B> blist = new List<B>();
for(int i = 0; i < bs.Length; i++) {
bs[i] = new B("b: " + i, i*5);
for(int i = 0; i < bs.Length; i++) {
Console.WriteLine(bs[i]);
for(int i = 0; i < l.Count; i++) {
var genericDefinition = blist.GetType().GetGenericTypeDefinition();
Console.WriteLine("is IList<A>: " +typeof(IList<A>).IsAssignableFrom(t));
Console.WriteLine("is IList: " +typeof(IList).IsAssignableFrom(t));
Console.WriteLine("is A[]: " +typeof(A[]).IsAssignableFrom(t));
Console.WriteLine("generic definition: " + genericDefinition);
Console.WriteLine("generic definition assignable from: " +typeof(IList<>).IsAssignableFrom(genericDefinition));
Console.WriteLine("is IList<A>: " +typeof(IList<A>).IsAssignableFrom(blist.GetType()));
Console.WriteLine("is IList<B>: " +typeof(IList<B>).IsAssignableFrom(blist.GetType()));
Console.WriteLine("is IList<B>: " +typeof(IList).IsAssignableFrom(blist.GetType()));
public B(string b, int a) {
public override string ToString(){