@Override
 public boolean equals(Object obj) {
   if (this == obj) return true;
   if (obj == null) return false;
   if (getClass() != obj.getClass()) return false;
   GuaguaWritableAdapter<?> other = (GuaguaWritableAdapter<?>) obj;
   if (isHalt() != other.isHalt()) return false;
   if (writable == null) {
     if (other.writable != null) return false;
   } else if (!writable.equals(other.writable)) return false;
   return true;
 }
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }

      Timer<?, ?> timer = (Timer<?, ?>) o;

      return timestamp == timer.timestamp && key.equals(timer.key) && window.equals(timer.window);
    }