public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = (Resting != null ? Resting.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ Squeezing.GetHashCode();
         hashCode = (hashCode * 397) ^ (QualificationsOfTree != null ? QualificationsOfTree.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (int)HandSide;
         return(hashCode);
     }
 }
        public IAnimatedBehavior Remapping(Dictionary <QualifiedAnimation, AnimationClip> remapping, Dictionary <BlendTree, BlendTree> blendRemapping)
        {
            var newQualificationsOfTree = QualificationsOfTree
                                          .Select(qualification => remapping.ContainsKey(qualification)
                    ? qualification.NewInstanceWithClip(remapping[qualification])
                    : qualification)
                                          .ToList();
            var newSqueezing      = remapping.ContainsKey(Squeezing) ? Squeezing.NewInstanceWithClip(remapping[Squeezing]) : Squeezing;
            var newBlendRemapping = blendRemapping.ContainsKey(Resting) ? blendRemapping[Resting] : Resting;

            return(Of(newBlendRemapping, newSqueezing, newQualificationsOfTree, HandSide));
        }