class Value implements Monetary, Comparable<Value>, Serializable {

    public Value subtract(final Value value) {
        checkArgument(type.equals(value.type), "Cannot subtract a different type");
        return new Value(this.type, LongMath.checkedSubtract(this.value, value.value));
    }

      Value(final ValueType type, final long units);

}