// Compiler options: -r:test-anon-94-lib.dll

using System;

class Program
{
	public class BaseClass
	{
		public int i;
		public virtual void Print () { Console.WriteLine ("BaseClass.Print"); i = 90; }
		public virtual void TestOut (out int arg) { arg = 4; }
	}

	public class Derived : BaseClass
	{
		public override void Print ()
		{
			Action a = () => base.Print ();
			a ();
		}
		
		public override void TestOut (out int arg)
		{
			int p = 9;
			Action a = () => {
				base.TestOut (out p);
				Console.WriteLine (p);
			};
			
			a ();
			arg = p;
		}
	}
	
	public class DerivedLibrary : BaseClassLibrary
	{
		public override void Print (int arg)
		{
			Action a = () => base.Print (30);
			a ();
		}
	}

	public static int Main ()
	{
		var d = new Derived ();
		d.Print ();

		if (d.i != 90)
			return 1;
		
		int arg;
		d.TestOut (out arg);
		if (arg != 4)
			return 2;

		var d2 = new DerivedLibrary ();
		d2.Print (0);

		if (d2.i != 30)
			return 3;

		return 0;
	}
}