/// <summary>
 /// Requires a string is not null or empty
 /// </summary>
 /// <param name="val"></param>
 /// <param name="key"></param>
 /// <returns></returns>
 public Contract <T> IsNotNullOrEmpty(string val, string key) =>
 IsNotNullOrEmpty(val, key, FluntErrorMessages.IsNotNullOrEmptyErrorMessage(key));