public override bool Equals(object obj)
{
if (this == obj)
{
return true;
}
if ((obj == null) || (obj.GetType() != this.GetType()))
{
return false;
}
var test = (TermsFilter)obj;
// first check the fields before even comparing the bytes
if (test.hashCode_Renamed == hashCode_Renamed && Arrays.Equals(termsAndFields, test.termsAndFields))
{
int lastOffset = termsAndFields[termsAndFields.Length - 1].end;
// compare offsets since we sort they must be identical
if (ArrayUtil.Equals(offsets, 0, test.offsets, 0, lastOffset + 1))
{
// straight byte comparison since we sort they must be identical
return ArrayUtil.Equals(termsBytes, 0, test.termsBytes, 0, offsets[lastOffset]);
}
}
return false;
}