code: public static int hash(int seed, Object o) {
  		int result = seed;
  		//If it was null then this is the result 0
  		if (o == null) {
  			result = hash(result, 0);
  		}
  		//If it wasn't an array then calculate the hashcode
  		else if (!o.getClass().isArray()) {
  			result = hash(result, o.hashCode());
  		}
  		//Otherwise loop &
  		else {
  			int length = Array.getLength(o);
  			for (int i = 0; i < length; i++) {
  				Object item = Array.get(o, i);
  				result = hash(result, item);// recursive call!
  			}
  		}
  		return result;
  	}
docs: <code>o</code> is a possibly-null object field, and possibly an
  array.
  
  If <code>o</code> is an array, then each element may be a primitive
  or a possibly-null object.