public override bool CanStackWith(Thing other)
        {
            if (other is GenomeSequence otherGenome &&
                sourceName == otherGenome.sourceName &&
                pawnKindDef == otherGenome.pawnKindDef &&
                gender == otherGenome.gender &&
                bodyType == otherGenome.bodyType &&
                crownType == otherGenome.crownType &&
                hairColor == otherGenome.hairColor &&
                skinMelanin == otherGenome.skinMelanin &&
                isAlien == otherGenome.isAlien &&
                skinColor == otherGenome.skinColor &&
                skinColorSecond == otherGenome.skinColorSecond &&
                hairColorSecond == otherGenome.hairColorSecond &&
                crownTypeAlien == otherGenome.crownTypeAlien &&
                (hair != null && otherGenome.hair != null && hair.ToString() == otherGenome.hair.ToString() ||
                 hair == null && otherGenome.hair == null) &&
                traits.SequenceEqual(otherGenome.traits) &&
                (hediffInfos != null && otherGenome.hediffInfos != null &&
                 hediffInfos.OrderBy(h => h.def.LabelCap).SequenceEqual(otherGenome.hediffInfos.OrderBy(h => h.def.LabelCap)) ||
                 hediffInfos == null && otherGenome.hediffInfos == null))
            {
                return(base.CanStackWith(other));
            }

            return(false);
        }