@Override
    public final V get(long timeout, TimeUnit unit)
        throws InterruptedException, ExecutionException, TimeoutException {
      Iterator<Integer> indexItr = order.iterator();
      V result = initResult();
      for (Future<K> future : futures) {
        // TODO: the max time this can take is actually N * timeout. Consider fixing this.
        result = aggregate(future.get(timeout, unit), indexItr, result);
      }
      return result;
    }
@Override
    public final V get(long timeout, TimeUnit unit)
        throws InterruptedException, ExecutionException, TimeoutException {
      Iterator<Integer> indexItr = order.iterator();
      V result = initResult();
      for (Future<K> future : futures) {
       
        result = aggregate(future.get(timeout, unit), indexItr, result);
      }
      return result;
    }
@override public final v get(long timeout, timeunit unit) throws interruptedexception, executionexception, timeoutexception { iterator<integer> indexitr = order.iterator(); v result = initresult(); for (future<k> future : futures) { result = aggregate(future.get(timeout, unit), indexitr, result); } return result; }