@Override
 public boolean equals(Object obj) {
   if (this == obj) return true;
   if (obj == null) return false;
   if (getClass() != obj.getClass()) return false;
   Update other = (Update) obj;
   if (!getOuterType().equals(other.getOuterType())) return false;
   if (key == null) {
     if (other.key != null) return false;
   } else if (!key.equals(other.key)) return false;
   if (type != other.type) return false;
   return true;
 }