public BitArrayState(BitArrayState other)
 {
     this.value = new int[other.value.Length];
     for (var i = 0; i < other.value.Length; i++)
     {
         this.value[i] = other.value[i];
     }
 }
        protected bool Equals(BitArrayState other)
        {
            if (ReferenceEquals(null, this.value))
            {
                return(false);
            }
            if (ReferenceEquals(null, other.value))
            {
                return(false);
            }
            if (this.value.Length != other.value.Length)
            {
                return(false);
            }
            for (var i = 0; i < this.value.Length; i++)
            {
                if (this.value[i] != other.value[i])
                {
                    return(false);
                }
            }

            return(true);
        }