docs: @Override
      public synchronized void updateLifecycleState(
              PortletLifecycleState lifecycleState, IPerson user, Date timestamp) {
  
          /*
           * Lifecycle entries that are scheduled for an instant
           * on or after the new entry must be cleared.
           */
          final Set<IPortletLifecycleEntry> canceledStateChanges =
                  lifecycleEntries.stream()
                          // NB:  entry.getDate.equals(timestamp) does not work as expected.
                          .filter(entry -> entry.getDate().compareTo(timestamp) >= 0)
                          .collect(Collectors.toSet());
          lifecycleEntries.removeAll(canceledStateChanges);
  
          final IPortletLifecycleEntry newEntry =
                  new PortletLifecycleEntryImpl(user.getID(), lifecycleState, timestamp);
          lifecycleEntries.add(newEntry);
      }