docs: @CheckForNull
      public Object[] getValues(long timeout) throws InterruptedException {
          if (!isSettled()) {
              synchronized (this) {
                  wait(timeout);
              }
          }
          if (values == null) {
              return null;
          }
          return Arrays.copyOf(values, values.length);
      }