/// <summary>
 /// Adds a requirement to this requirement list
 /// </summary>
 /// <param name="requirement">The requirement to add</param>
 public void Add(AbstractRequirement <TProperty> requirement)
 {
     requirements.Add(requirement);
 }
 /// <summary>
 /// Adds a requirement to this requirement list
 /// </summary>
 /// <param name="requirement">The requirement to add</param>
 public void Add(AbstractRequirement <TValue> requirement)
 {
     requirements.Add(requirement);
 }