public static void HasItems(this ICodeContract c, IEnumerable o, string message = null,
                                    Type exceptionType = null)
        {
            CodeContract.EnsureCodeContract(c);

            c.IsNotNull(o, message, exceptionType);
            IEnumerator e = o.GetEnumerator();

            c.IsNotNull(e, message, exceptionType);

            if (e.Current == null)
            {
                e.Reset();
                throw c.Encapsulate(new ArgumentOutOfRangeException($"Code Contract harmed, {nameof(o)} has no items. {message}"),
                                    exceptionType);
            }

            e.Reset();
        }
 public void UseNull_Test()
 {
     try
     {
         _contract.IsNotNull(null);
     }
     catch (NoNullAllowedException)
     {
     }
 }
        public static void HasAtLeast(this ICodeContract c, IEnumerable o, int items, string message = null,
                                      Type exceptionType = null)
        {
            CodeContract.EnsureCodeContract(c);

            c.IsNotNull(o, message, exceptionType);
            var e = o.GetEnumerator();

            int idx = 0;

            while (e.Current != null && e.MoveNext())
            {
                if (idx >= items)
                {
                    return;
                }
                idx++;
            }

            throw c.Encapsulate(
                      new ArgumentOutOfRangeException(
                          $"Code Contract harmed, has less items than {idx} < {items}. {message}"), exceptionType
                      );
        }