public static PersistentHashSet create(ISeq items)
        {
            ITransientSet ret = (ITransientSet)EMPTY.asTransient();

            for (; items != null; items = items.next())
            {
                ret = (ITransientSet)ret.conj(items.first());
            }
            return((PersistentHashSet)ret.persistent());
        }
        public static PersistentHashSet create(IList init)
        {
            ITransientSet ret = (ITransientSet)EMPTY.asTransient();

            foreach (object obj in init)
            {
                ret = (ITransientSet)ret.conj(obj);
            }
            return((PersistentHashSet)ret.persistent());
        }
        public static PersistentHashSet create(params object[] init)
        {
            ITransientSet ret = (ITransientSet)EMPTY.asTransient();

            for (int i = 0; i < init.Length; ++i)
            {
                ret = (ITransientSet)ret.conj(init[i]);
            }
            return((PersistentHashSet)ret.persistent());
        }
        public static PersistentHashSet createWithCheck(params object[] init)
        {
            ITransientSet ret = (ITransientSet)EMPTY.asTransient();

            for (int i = 0; i < init.Length; i++)
            {
                ret = (ITransientSet)ret.conj(init[i]);
                if (ret.count() != i + 1)
                {
                    throw new ArgumentException("Duplicate key: " + init[i]);
                }
            }
            return((PersistentHashSet)ret.persistent());
        }
        public static PersistentHashSet createWithCheck(ISeq items)
        {
            ITransientSet ret = (ITransientSet)EMPTY.asTransient();

            for (int i = 0; items != null; items = items.next(), ++i)
            {
                ret = (ITransientSet)ret.conj(items.first());
                if (ret.count() != i + 1)
                {
                    throw new ArgumentException("Duplicate key: " + items.first());
                }
            }
            return((PersistentHashSet)ret.persistent());
        }
        public static PersistentHashSet createWithCheck(IList init)
        {
            ITransientSet ret = (ITransientSet)EMPTY.asTransient();
            int           i   = 0;

            foreach (Object key in init)
            {
                ret = (ITransientSet)ret.conj(key);
                if (ret.count() != i + 1)
                {
                    throw new ArgumentException("Duplicate key: " + key);
                }
                ++i;
            }
            return((PersistentHashSet)ret.persistent());
        }