public float getUpper(IndexedZone z) {
   if (z.getEndIndex() >= numZones) {
     throw new IllegalArgumentException("Zone is out of bounds.");
   }
   return z.getEndIndex() * zoneSize + lower;
 }
 public float getWidth(IndexedZone z) {
   return (z.getEndIndex() - z.getStartIndex() + 1) * zoneSize;
 }
 public float getLower(IndexedZone z) {
   return z.getStartIndex() * zoneSize + lower;
 }