/// <summary>
 /// This was moved into its own function that isn't virtual so that it could
 /// be called inside the object's constructor.
 /// </summary>
 /// <returns>The Object's hash code.</returns>
 private int CalculateHashCode()
 {
     unchecked
     {
         var result = (Bucket != null ? Bucket.GetHashCode() : 0);
         result = (result * 397) ^ (Key != null ? Key.GetHashCode() : 0);
         result = (result * 397) ^ (Value != null ? Value.GetHashCode() : 0);
         result = (result * 397) ^ (ContentType != null ? ContentType.GetHashCode() : 0);
         result = (result * 397) ^ (ContentEncoding != null ? ContentEncoding.GetHashCode() : 0);
         result = (result * 397) ^ (CharSet != null ? CharSet.GetHashCode() : 0);
         result = (result * 397) ^ (VectorClock != null ? VectorClock.GetHashCode() : 0);
         result = (result * 397) ^ (UserMetaData != null ? UserMetaData.GetHashCode() : 0);
         result = (result * 397) ^ (BinIndexes != null ? BinIndexes.GetHashCode() : 0);
         result = (result * 397) ^ (IntIndexes != null ? IntIndexes.GetHashCode() : 0);
         result = (result * 397) ^ LastModified.GetHashCode();
         result = (result * 397) ^ LastModifiedUsec.GetHashCode();
         result = (result * 397) ^ (Links != null ? Links.GetHashCode() : 0);
         result = (result * 397) ^ (_vtags != null ? _vtags.GetHashCode() : 0);
         return(result);
     }
 }
 public void AddBinIndex(string index, string key)
 {
     BinIndexes.Add(index.ToBinaryKey(), key);
 }