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

	public string Text { get; private set; }

	public C() {
		OtherValue = 1;
	}

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

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

	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();
    }
}