private GenericGFPoly buildGenerator(int degree) {
   if (degree >= cachedGenerators.size()) {
     GenericGFPoly lastGenerator = cachedGenerators.get(cachedGenerators.size() - 1);
     for (int d = cachedGenerators.size(); d <= degree; d++) {
       GenericGFPoly nextGenerator =
           lastGenerator.multiply(new GenericGFPoly(field, new int[] {1, field.exp(d - 1)}));
       cachedGenerators.add(nextGenerator);
       lastGenerator = nextGenerator;
     }
   }
   return cachedGenerators.get(degree);
 }