Type[] reifyBounds(FieldTypeSignature[] boundASTs) {
   final int length = boundASTs.length;
   final Type[] bounds = new Type[length];
   // iterate over bound trees, reifying each in turn
   for (int i = 0; i < length; i++) {
     Reifier r = getReifier();
     boundASTs[i].accept(r);
     bounds[i] = r.getResult();
   }
   return bounds;
 }
 // produce a reifying visitor (could this be typed as a TypeTreeVisitor?
 protected Reifier getReifier() {
   return Reifier.make(getFactory());
 }