docs: @Pure
  	@SuppressWarnings("checkstyle:cyclomaticcomplexity")
  	public static double convertFromTo(double time, TimeUnit source, TimeUnit target) {
  		assert source != null;
  		assert target != null;
  		if (source == target) {
  			return time;
  		}
  		final double millis;
  		switch (source) {
  		case DAYS:
  			millis = time * MILLIS_IN_DAY;
  			break;
  		case HOURS:
  			millis = time * MILLIS_IN_HOUR;
  			break;
  		case MINUTES:
  			millis = time * MILLIS_IN_MINUTE;
  			break;
  		case SECONDS:
  			millis = time * MILLIS_IN_SECOND;
  			break;
  		case MILLISECONDS:
  			millis = time;
  			break;
  		case NANOSECONDS:
  			millis = time * MILLIS_IN_NANOSECOND;
  			break;
  		case MICROSECONDS:
  			millis = time * MILLIS_IN_MICROSECOND;
  			break;
  		default:
  			throw new IllegalArgumentException();
  		}
  		switch (target) {
  		case DAYS:
  			return millis / MILLIS_IN_DAY;
  		case HOURS:
  			return millis / MILLIS_IN_HOUR;
  		case MINUTES:
  			return millis / MILLIS_IN_MINUTE;
  		case SECONDS:
  			return millis / MILLIS_IN_SECOND;
  		case MILLISECONDS:
  			return millis;
  		case NANOSECONDS:
  			return millis / MILLIS_IN_NANOSECOND;
  		case MICROSECONDS:
  			return millis / MILLIS_IN_MICROSECOND;
  		default:
  			throw new IllegalArgumentException();
  		}
  	}