code: @SuppressWarnings({"fallthrough", "PMD.MissingBreakInSwitch",
      "PMD.SwitchStmtsShouldHaveDefault", "NullAway"})
    private @Nullable Expirable<V> postProcess(Expirable<V> expirable,
        EntryProcessorEntry<K, V> entry, long currentTimeMS) {
      switch (entry.getAction()) {
        case NONE:
          if (expirable == null) {
            return null;
          } else if (expirable.isEternal()) {
            return expirable;
          }
          if (currentTimeMS == 0) {
            currentTimeMS = currentTimeMillis();
          }
          if (expirable.hasExpired(currentTimeMS)) {
            dispatcher.publishExpired(this, entry.getKey(), expirable.get());
            statistics.recordEvictions(1);
            return null;
          }
          return expirable;
        case READ: {
          setAccessExpirationTime(expirable, 0L);
          return expirable;
        }
        case CREATED:
          this.publishToCacheWriter(writer::write, () -> entry);
          // fall through
        case LOADED:
          statistics.recordPuts(1L);
          dispatcher.publishCreated(this, entry.getKey(), entry.getValue());
          return new Expirable<>(entry.getValue(), getWriteExpireTimeMS(/* created */ true));
        case UPDATED: {
          statistics.recordPuts(1L);
          publishToCacheWriter(writer::write, () -> entry);
          dispatcher.publishUpdated(this, entry.getKey(), expirable.get(), entry.getValue());
          long expireTimeMS = getWriteExpireTimeMS(/* created */ false);
          if (expireTimeMS == Long.MIN_VALUE) {
            expireTimeMS = expirable.getExpireTimeMS();
          }
          return new Expirable<>(entry.getValue(), expireTimeMS);
        }
        case DELETED:
          statistics.recordRemovals(1L);
          publishToCacheWriter(writer::delete, entry::getKey);
          dispatcher.publishRemoved(this, entry.getKey(), entry.getValue());
          return null;
      }
      throw new IllegalStateException("Unknown state: " + entry.getAction());
    }
docs: Returns the updated expirable value after performing the post processing actions.