// Compiler options: -checked

using System;

internal sealed class Alpha
{
	public Alpha (string value)
	{
		m_name = value;
	}

	public override int GetHashCode ()
	{
		return int.MaxValue & m_name.GetHashCode ();
	}

	private string m_name;
}

internal sealed class Beta
{
	public Beta (string value)
	{
		m_address = value;
	}

	public override int GetHashCode ()
	{
		return int.MaxValue & m_address.GetHashCode ();
	}

	private string m_address;
}

internal static class Program
{
	public static int Main ()
	{
		var a = new { First = new Alpha ("joe bob"), Second = new Beta ("main street") };
		Console.WriteLine ("hash = {0}", a.GetHashCode ());
		return 0;
	}
}