code: public ClockSkewAdjustment getAdjustment(AdjustmentRequest adjustmentRequest) {
          ValidationUtils.assertNotNull(adjustmentRequest, "adjustmentRequest");
          ValidationUtils.assertNotNull(adjustmentRequest.exception, "adjustmentRequest.exception");
          ValidationUtils.assertNotNull(adjustmentRequest.clientRequest, "adjustmentRequest.clientRequest");
          ValidationUtils.assertNotNull(adjustmentRequest.serviceResponse, "adjustmentRequest.serviceResponse");
  
          int timeSkewInSeconds = 0;
          boolean isAdjustmentRecommended = false;
  
          try {
              if (isAdjustmentRecommended(adjustmentRequest)) {
                  Date serverDate = getServerDate(adjustmentRequest);
  
                  if (serverDate != null) {
                      timeSkewInSeconds = timeSkewInSeconds(getCurrentDate(adjustmentRequest), serverDate);
                      isAdjustmentRecommended = true;
                  }
              }
          } catch (RuntimeException e) {
              log.warn("Unable to correct for clock skew.", e);
          }
  
          return new ClockSkewAdjustment(isAdjustmentRecommended, timeSkewInSeconds);
      }
docs: Recommend a {@link ClockSkewAdjustment}, based on the provided {@link AdjustmentRequest}.