docs: private TimedPhase getTimedPhase(final List<TimedPhase> timedPhases, final DateTime effectiveDate, final WhichPhase which) {
          TimedPhase cur = null;
          TimedPhase next = null;
          for (final TimedPhase phase : timedPhases) {
              if (phase.getStartPhase().isAfter(effectiveDate)) {
                  next = phase;
                  break;
              }
              cur = phase;
          }
  
          switch (which) {
              case CURRENT:
                  return cur;
              case NEXT:
                  return next;
              default:
                  throw new SubscriptionBaseError(String.format("Unexpected %s TimedPhase", which));
          }
      }