@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + id; result = prime * result + ((type == null) ? 0 : type.hashCode()); if (type == Type.OPAQUE) { // Custom hashcode to handle byte arrays result = prime * result + ((value == null) ? 0 : Arrays.hashCode((byte[]) value)); } else { result = prime * result + ((value == null) ? 0 : value.hashCode()); } return result; }