code: private static void safeSetRemoveOnCancel(ScheduledThreadPoolExecutor executor) {
          try {
              executor.getClass().getMethod("setRemoveOnCancelPolicy", boolean.class).invoke(executor, Boolean.TRUE);
          } catch (IllegalAccessException e) {
              throwSetRemoveOnCancelException(e);
          } catch (IllegalArgumentException e) {
              throwSetRemoveOnCancelException(e);
          } catch (InvocationTargetException e) {
              throwSetRemoveOnCancelException(e.getCause());
          } catch (NoSuchMethodException e) {
              throw new SdkClientException("The request timeout feature is only available for Java 1.7 and above.");
          } catch (SecurityException e) {
              throw new SdkClientException("The request timeout feature needs additional permissions to function.", e);
          }
      }
docs: {@link ScheduledThreadPoolExecutor#setRemoveOnCancelPolicy(boolean)} is not available in Java
  6 so we invoke it with reflection to be able to compile against Java 6.
  
  @param executor