/// <summary>
 /// Compare
 /// </summary>
 /// <param name="il"></param>
 /// <param name="pred"></param>
 /// <returns></returns>
 public static ILGenerator Cmp(this ILGenerator il, PredicateType pred)
 {
     switch (pred)
     {
         case PredicateType.Equal:
             return il.Ceq();
         case PredicateType.GreaterThan:
             return il.Cgt();
         case PredicateType.GreaterThanOrEqual:
             return il.Cge();
         case PredicateType.LessThan:
             return il.Clt();
         case PredicateType.LessThanOrEqual:
             return il.Cle();
         case PredicateType.NotEqual:
             return il.Cne();
         case PredicateType.IsFalse:
             return il.Cfalse();
         case PredicateType.IsTrue:
             return il.Ctrue();
         default:
             throw new ArgumentException(@"Invalid Predicate Type", "pred");
     }
 }
 /// <summary>
 /// Greater or equals
 /// </summary>
 /// <param name="il"></param>
 /// <returns></returns>
 public static ILGenerator Cge(this ILGenerator il)
 {
     return il.Clt().Cfalse();
 }