public Resolution(ExtendedResolver eres, Message query) {
   List l = eres.resolvers;
   resolvers = (Resolver[]) l.toArray(new Resolver[l.size()]);
   if (eres.loadBalance) {
     int nresolvers = resolvers.length;
     /*
      * Note: this is not synchronized, since the
      * worst thing that can happen is a random
      * ordering, which is ok.
      */
     int start = eres.lbStart++ % nresolvers;
     if (eres.lbStart > nresolvers) eres.lbStart %= nresolvers;
     if (start > 0) {
       Resolver[] shuffle = new Resolver[nresolvers];
       for (int i = 0; i < nresolvers; i++) {
         int pos = (i + start) % nresolvers;
         shuffle[i] = resolvers[pos];
       }
       resolvers = shuffle;
     }
   }
   sent = new int[resolvers.length];
   inprogress = new Object[resolvers.length];
   retries = eres.retries;
   this.query = query;
 }