code: synchronized int decodevs_add(float[] a, int offset, Buffer b, int n) {
          int step = n / dim;
          int entry;
          int i, j, o;
  
          if (t.length < step) {
              t = new int[step];
          }
  
          for (i = 0; i < step; i++) {
              entry = decode(b);
              if (entry == -1) {
                  return (-1);
              }
              t[i] = entry * dim;
          }
          for (i = 0, o = 0; i < dim; i++, o += step) {
              for (j = 0; j < step; j++) {
                  a[offset + o + j] += valuelist[t[j] + i];
              }
          }
  
          return (0);
      }
docs: decodevs_add is synchronized for re-using t.