﻿public class C1 : System.IComparable, System.IDisposable {
	private readonly int Value = 42;
	protected readonly int OtherValue;

	public string Text { get; private set; }

	public C1() {
		OtherValue = 1;
	}

	public C1(int i) {
		OtherValue = i;
	}

	// destructors not yet supported by Roslyn
	// ~C1() { }

	protected virtual void Virtual() {
		System.Console.WriteLine("Virtual");
	}

	public T Get<T>() {
		return default(T);
	}

	internal static void Static(string t, int i = 42) {
		System.Console.WriteLine("{0} : {1}", t, i);
	}

	public void Recursive(int i) {
		System.Console.WriteLine(i);
		if (i > 0) {
			Recursive(--i);
		}
	}

    public int CompareTo(object obj) {
		return 0;
    }

    void System.IDisposable.Dispose() {
        throw new System.NotImplementedException();
    }
}

public class C2 : System.IComparable, System.IDisposable {
	private readonly int Value = 42;
	protected readonly int OtherValue;

	public string Text { get; private set; }

	public C2() {
		OtherValue = 1;
	}

	public C2(int i) {
		OtherValue = i;
	}

	// destructors not yet supported by Roslyn
	// ~C2() { }

	protected virtual void Virtual() {
		System.Console.WriteLine("Virtual");
	}

	public T Get<T>() {
		return default(T);
	}

	internal static void Static(string t, int i = 42) {
		System.Console.WriteLine("{0} : {1}", t, i);
	}

	public void Recursive(int i) {
		System.Console.WriteLine(i);
		if (i > 0) {
			Recursive(--i);
		}
	}

    public int CompareTo(object obj) {
		return 0;
    }

    void System.IDisposable.Dispose() {
        throw new System.NotImplementedException();
    }
}

public class C3 : System.IComparable, System.IDisposable {
	private readonly int Value = 42;
	protected readonly int OtherValue;

	public string Text { get; private set; }

	public C3() {
		OtherValue = 1;
	}

	public C3(int i) {
		OtherValue = i;
	}

	// destructors not yet supported by Roslyn
	// ~C3() { }

	protected virtual void Virtual() {
		System.Console.WriteLine("Virtual");
	}

	public T Get<T>() {
		return default(T);
	}

	internal static void Static(string t, int i = 42) {
		System.Console.WriteLine("{0} : {1}", t, i);
	}

	public void Recursive(int i) {
		System.Console.WriteLine(i);
		if (i > 0) {
			Recursive(--i);
		}
	}

    public int CompareTo(object obj) {
		return 0;
    }

    void System.IDisposable.Dispose() {
        throw new System.NotImplementedException();
    }
}

public class C4 : System.IComparable, System.IDisposable {
	private readonly int Value = 42;
	protected readonly int OtherValue;

	public string Text { get; private set; }

	public C4() {
		OtherValue = 1;
	}

	public C4(int i) {
		OtherValue = i;
	}

	// destructors not yet supported by Roslyn
	// ~C4() { }

	protected virtual void Virtual() {
		System.Console.WriteLine("Virtual");
	}

	public T Get<T>() {
		return default(T);
	}

	internal static void Static(string t, int i = 42) {
		System.Console.WriteLine("{0} : {1}", t, i);
	}

	public void Recursive(int i) {
		System.Console.WriteLine(i);
		if (i > 0) {
			Recursive(--i);
		}
	}

    public int CompareTo(object obj) {
		return 0;
    }

    void System.IDisposable.Dispose() {
        throw new System.NotImplementedException();
    }
}

public class C5 : System.IComparable, System.IDisposable {
	private readonly int Value = 42;
	protected readonly int OtherValue;

	public string Text { get; private set; }

	public C5() {
		OtherValue = 1;
	}

	public C5(int i) {
		OtherValue = i;
	}

	// destructors not yet supported by Roslyn
	// ~C5() { }

	protected virtual void Virtual() {
		System.Console.WriteLine("Virtual");
	}

	public T Get<T>() {
		return default(T);
	}

	internal static void Static(string t, int i = 42) {
		System.Console.WriteLine("{0} : {1}", t, i);
	}

	public void Recursive(int i) {
		System.Console.WriteLine(i);
		if (i > 0) {
			Recursive(--i);
		}
	}

    public int CompareTo(object obj) {
		return 0;
    }

    void System.IDisposable.Dispose() {
        throw new System.NotImplementedException();
    }
}

public class C6 : System.IComparable, System.IDisposable {
	private readonly int Value = 42;
	protected readonly int OtherValue;

	public string Text { get; private set; }

	public C6() {
		OtherValue = 1;
	}

	public C6(int i) {
		OtherValue = i;
	}

	// destructors not yet supported by Roslyn
	// ~C6() { }

	protected virtual void Virtual() {
		System.Console.WriteLine("Virtual");
	}

	public T Get<T>() {
		return default(T);
	}

	internal static void Static(string t, int i = 42) {
		System.Console.WriteLine("{0} : {1}", t, i);
	}

	public void Recursive(int i) {
		System.Console.WriteLine(i);
		if (i > 0) {
			Recursive(--i);
		}
	}

    public int CompareTo(object obj) {
		return 0;
    }

    void System.IDisposable.Dispose() {
        throw new System.NotImplementedException();
    }
}

public class C7 : System.IComparable, System.IDisposable {
	private readonly int Value = 42;
	protected readonly int OtherValue;

	public string Text { get; private set; }

	public C7() {
		OtherValue = 1;
	}

	public C7(int i) {
		OtherValue = i;
	}

	// destructors not yet supported by Roslyn
	// ~C7() { }

	protected virtual void Virtual() {
		System.Console.WriteLine("Virtual");
	}

	public T Get<T>() {
		return default(T);
	}

	internal static void Static(string t, int i = 42) {
		System.Console.WriteLine("{0} : {1}", t, i);
	}

	public void Recursive(int i) {
		System.Console.WriteLine(i);
		if (i > 0) {
			Recursive(--i);
		}
	}

    public int CompareTo(object obj) {
		return 0;
    }

    void System.IDisposable.Dispose() {
        throw new System.NotImplementedException();
    }
}

public class C8 : System.IComparable, System.IDisposable {
	private readonly int Value = 42;
	protected readonly int OtherValue;

	public string Text { get; private set; }

	public C8() {
		OtherValue = 1;
	}

	public C8(int i) {
		OtherValue = i;
	}

	// destructors not yet supported by Roslyn
	// ~C8() { }

	protected virtual void Virtual() {
		System.Console.WriteLine("Virtual");
	}

	public T Get<T>() {
		return default(T);
	}

	internal static void Static(string t, int i = 42) {
		System.Console.WriteLine("{0} : {1}", t, i);
	}

	public void Recursive(int i) {
		System.Console.WriteLine(i);
		if (i > 0) {
			Recursive(--i);
		}
	}

    public int CompareTo(object obj) {
		return 0;
    }

    void System.IDisposable.Dispose() {
        throw new System.NotImplementedException();
    }
}

public class C9 : System.IComparable, System.IDisposable {
	private readonly int Value = 42;
	protected readonly int OtherValue;

	public string Text { get; private set; }

	public C9() {
		OtherValue = 1;
	}

	public C9(int i) {
		OtherValue = i;
	}

	// destructors not yet supported by Roslyn
	// ~C9() { }

	protected virtual void Virtual() {
		System.Console.WriteLine("Virtual");
	}

	public T Get<T>() {
		return default(T);
	}

	internal static void Static(string t, int i = 42) {
		System.Console.WriteLine("{0} : {1}", t, i);
	}

	public void Recursive(int i) {
		System.Console.WriteLine(i);
		if (i > 0) {
			Recursive(--i);
		}
	}

    public int CompareTo(object obj) {
		return 0;
    }

    void System.IDisposable.Dispose() {
        throw new System.NotImplementedException();
    }
}

public class C10 : System.IComparable, System.IDisposable {
	private readonly int Value = 42;
	protected readonly int OtherValue;

	public string Text { get; private set; }

	public C10() {
		OtherValue = 1;
	}

	public C10(int i) {
		OtherValue = i;
	}

	// destructors not yet supported by Roslyn
	// ~C10() { }

	protected virtual void Virtual() {
		System.Console.WriteLine("Virtual");
	}

	public T Get<T>() {
		return default(T);
	}

	internal static void Static(string t, int i = 42) {
		System.Console.WriteLine("{0} : {1}", t, i);
	}

	public void Recursive(int i) {
		System.Console.WriteLine(i);
		if (i > 0) {
			Recursive(--i);
		}
	}

    public int CompareTo(object obj) {
		return 0;
    }

    void System.IDisposable.Dispose() {
        throw new System.NotImplementedException();
    }
}

public class C11 : System.IComparable, System.IDisposable {
	private readonly int Value = 42;
	protected readonly int OtherValue;

	public string Text { get; private set; }

	public C11() {
		OtherValue = 1;
	}

	public C11(int i) {
		OtherValue = i;
	}

	// destructors not yet supported by Roslyn
	// ~C11() { }

	protected virtual void Virtual() {
		System.Console.WriteLine("Virtual");
	}

	public T Get<T>() {
		return default(T);
	}

	internal static void Static(string t, int i = 42) {
		System.Console.WriteLine("{0} : {1}", t, i);
	}

	public void Recursive(int i) {
		System.Console.WriteLine(i);
		if (i > 0) {
			Recursive(--i);
		}
	}

    public int CompareTo(object obj) {
		return 0;
    }

    void System.IDisposable.Dispose() {
        throw new System.NotImplementedException();
    }
}
