// Compiler options: -unsafe

// Cloning tests

using System;

unsafe class UnsafeClass
{
	public int* GetUnsafeValue ()
	{
		return null;
	}
}

public class C
{
	delegate void D ();
	
	static void Test (D d)
	{
	}
	
	unsafe static void UnsafeTests ()
	{
		UnsafeClass v = new UnsafeClass ();
		Test (delegate () {
			int i = *v.GetUnsafeValue ();
		});

		Test (delegate () {
			byte* buffer = stackalloc byte[8192];
		});
	}
	
	public static void Main ()
	{
		Exception diffException;
		
		Test (delegate () {
			diffException = null;
					try {
					} catch (Exception ex) {
						diffException = ex;
					} finally {
					}
					
					try {
					} catch {
					}
				});
				
		int[] i_a = new int [] { 1,2,3 };
		
		Test (delegate () {
				foreach (int t in i_a) {
				}
			});
			
		Test (delegate () {
			Console.WriteLine (typeof (void));
		});

	}
}