code: static CompletableFuture<Void> andTree(CompletableFuture<?>[] cfs, int lo, int hi) {
      CompletableFuture<Void> d = new CompletableFuture<Void>();
      if (lo > hi) // empty
        d.result = NIL;
      else {
        CompletableFuture<?> a, b;
        Object r, s, z;
        Throwable x;
        int mid = (lo + hi) >>> 1;
        if ((a = (lo == mid ? cfs[lo] : andTree(cfs, lo, mid))) == null
            || (b = (lo == hi ? a : (hi == mid + 1) ? cfs[hi] : andTree(cfs, mid + 1, hi))) == null)
          throw new NullPointerException();
        if ((r = a.result) == null || (s = b.result) == null)
          a.bipush(b, new BiRelay(d, a, b));
        else if ((r instanceof AltResult && (x = ((AltResult) (z = r)).ex) != null)
            || (s instanceof AltResult && (x = ((AltResult) (z = s)).ex) != null))
          d.result = encodeThrowable(x, z);
        else
          d.result = NIL;
      }
      return d;
    }
docs: Recursively constructs a tree of completions.