@Override
  public boolean equals(Object o) {
    if (o == null) { // fast fail
      return false;
    }
    if ((o == this) || (o == payload)) { // fast success
      return true;
    }
    if (!(o instanceof CachedValue)) { // cope with non-cached values
      return o.equals(payload);
    }
    return ((CachedValue) o).payload.equals(payload); // cope with cached values
  }