public Integer compare(ValueStore<V> other) {
    if (other.moneySystem != moneySystem) {
      return null;
    }

    V val = moneySystem.subtract(getValue(), other.getValue());
    return (moneySystem.isValueNothing(val) ? 0 : (moneySystem.isValueDeficit(val) ? -1 : 1));
  }
 public boolean equals(ValueStore<V> other) {
   return (other.moneySystem == moneySystem
       && moneySystem.isValueNothing(moneySystem.subtract(getValue(), other.getValue())));
 }
 public boolean subtractValue(V value) {
   return setValue(moneySystem.subtract(getValue(), value));
 }