public virtual bool HasSameContentsAs(PropertyBlock other) { // Assumption (which happens to be true) that if a heavy (long string/array) property // changes it will get another id, making the valueBlocks values differ. return(Arrays.Equals(_valueBlocks, other._valueBlocks)); }