public bool HasTraitSubset(TraitBasedObject traitSubset)
 {
     for (var i = 0; i < Length; i++)
     {
         var requiredTrait = traitSubset[i];
         if (requiredTrait != Unset && this[i] == Unset)
         {
             return(false);
         }
     }
     return(true);
 }
 public bool HasSameTraits(TraitBasedObject other)
 {
     for (var i = 0; i < Length; i++)
     {
         var traitIndex      = this[i];
         var otherTraitIndex = other[i];
         if (traitIndex == Unset && otherTraitIndex != Unset || traitIndex != Unset && otherTraitIndex == Unset)
         {
             return(false);
         }
     }
     return(true);
 }