/**
  * Constructor for creating out of bounds labels.
  *
  * @param builder
  * @param lower
  * @param value
  */
 private Interval(HierarchyBuilderGroupingBased<T> builder, boolean lower, T value) {
   super(
       lower
           ? "<" + ((DataType<T>) builder.getDataType()).format(value)
           : ">=" + ((DataType<T>) builder.getDataType()).format(value));
   this.builder = builder;
   this.min = null;
   this.max = null;
   this.function = null;
   this.lower = lower;
 }
 @Override
 public String toString() {
   DataType<T> type = (DataType<T>) builder.getDataType();
   return "Interval[min="
       + type.format(min)
       + ", max="
       + type.format(max)
       + ", function="
       + function.toString()
       + "]";
 }
 /**
  * Sets the groups on higher levels of the hierarchy.
  *
  * @param levels
  */
 protected void setLevels(List<Level<T>> levels) {
   super.setLevels(levels);
 }
 /**
  * Sets the data array.
  *
  * @param data
  */
 protected void setData(String[] data) {
   super.setData(data);
 }