/// <summary>Serves as the default hash function.</summary>
 /// <returns>A hash code for the current object.</returns>
 public override int GetHashCode()
 {
     return(Requirements.Aggregate(0, (current, obj) =>
     {
         unchecked
         {
             var hashCode = current;
             hashCode = (hashCode * 397) ^ (obj.Key?.GetHashCode() ?? 0);
             hashCode = (hashCode * 397) ^ (obj.Value != null ? obj.Value.GetHashCode() : 0);
             return hashCode;
         }
     }));
 }