public void toString(UnitPrinter up) {
   up.startValueBox(this);
   value.toString(up);
   up.endValueBox(this);
 }
 public void setValue(Value value) {
   if (canContainValue(value)) this.value = value;
   else
     throw new RuntimeException(
         "Box " + this + " cannot contain value: " + value + "(" + value.getClass() + ")");
 }