// Compiler options: -warnaserror

using System;
using System.Reflection;

sealed class X
{
	~X ()
	{
		Foo ();
	}
	
	public void Foo ()
	{
	}
	
	public static int Main ()
	{
		foreach (var m in typeof (X).GetMethods (BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly)) {
			Console.WriteLine (m.Name);
			Console.WriteLine (m.Attributes);
			if (m.Attributes != (MethodAttributes.Virtual | MethodAttributes.Family | MethodAttributes.HideBySig))
				return 1;
		}
		
		return 0;
	}
}