code: public synchronized ListenableFuture<?> reserveSpill(long bytes)
      {
          checkArgument(bytes >= 0, "bytes is negative");
          if (spillUsed + bytes > maxSpill) {
              throw exceededPerQueryLocalLimit(succinctBytes(maxSpill));
          }
          ListenableFuture<?> future = spillSpaceTracker.reserve(bytes);
          spillUsed += bytes;
          return future;
      }
docs: TODO move spill tracking to the new memory tracking framework