private int hashFunction() { /* Set up the internal state */ int a = unchecked ((int)0x9e3779b9); /* the golden ratio; an arbitrary value */ int b = unchecked ((int)0x9e3779b9); /* the golden ratio; an arbitrary value */ int c = 3; /* the previous hash value */ /*------------------------------------- handle the last 11 bytes */ a += (getAnnotations().GetHashCode() << 16); a += (next.GetHashCode() << 8); a += (first.GetHashCode()); a -= b; a -= c; a ^= (c >> 13); b -= c; b -= a; b ^= (a << 8); c -= a; c -= b; c ^= (b >> 13); a -= b; a -= c; a ^= (c >> 12); b -= c; b -= a; b ^= (a << 16); c -= a; c -= b; c ^= (b >> 5); a -= b; a -= c; a ^= (c >> 3); b -= c; b -= a; b ^= (a << 10); c -= a; c -= b; c ^= (b >> 15); /*-------------------------------------------- report the result */ return(c); }