/// <summary>Just for testing.</summary>
        public static void Main(string[] args)
        {
            int            x = int.Parse(3);
            int            y = int.Parse(4);
            int            z = int.Parse(5);
            IList <int>    a = Arrays.AsList(new int[] { x, y, z });
            IList <string> b = Arrays.AsList(new string[] { "Larry", "Moe", "Curly" });
            IList <int>    c = Arrays.AsList(new int[] { x, y, z });
            IList <string> d = Arrays.AsList(new string[] { "Larry", "Moe", "Curly" });
            ICollection <IList <object> > hs = Generics.NewHashSet();

            Edu.Stanford.Nlp.Util.IdentityHashSet <IList <object> > ihs = new Edu.Stanford.Nlp.Util.IdentityHashSet <IList <object> >();
            hs.Add(a);
            hs.Add(b);
            ihs.Add(a);
            ihs.Add(b);
            System.Console.Out.WriteLine("List a is " + a);
            System.Console.Out.WriteLine("List b is " + b);
            System.Console.Out.WriteLine("List c is " + c);
            System.Console.Out.WriteLine("List d is " + d);
            System.Console.Out.WriteLine("HashSet hs contains a and b: " + hs);
            System.Console.Out.WriteLine("IdentityHashSet ihs contains a and b: " + ihs);
            System.Console.Out.WriteLine("hs contains a? " + hs.Contains(a));
            System.Console.Out.WriteLine("hs contains b? " + hs.Contains(b));
            System.Console.Out.WriteLine("hs contains c? " + hs.Contains(c));
            System.Console.Out.WriteLine("hs contains d? " + hs.Contains(d));
            System.Console.Out.WriteLine("ihs contains a? " + ihs.Contains(a));
            System.Console.Out.WriteLine("ihs contains b? " + ihs.Contains(b));
            System.Console.Out.WriteLine("ihs contains c? " + ihs.Contains(c));
            System.Console.Out.WriteLine("ihs contains d? " + ihs.Contains(d));
        }
        /// <summary>
        /// Returns a shallow copy of this <code>IdentityHashSet</code> instance:
        /// the elements themselves are not cloned.
        /// </summary>
        /// <returns>a shallow copy of this set.</returns>
        public virtual object Clone()
        {
            IEnumerator <E> it = GetEnumerator();

            Edu.Stanford.Nlp.Util.IdentityHashSet <E> clone = new Edu.Stanford.Nlp.Util.IdentityHashSet <E>(Count * 2);
            while (it.MoveNext())
            {
                clone.InternalAdd(it.Current);
            }
            return(clone);
        }