protected Quantity Convert(Quantity q, UnitOfMeasure targetUnit) {
     if (q.Unit != targetUnit)
         throw _imiplicitConversionErr;
     return q;
 }
 public Quantity(double amount, UnitOfMeasure unit) {
     _amount = amount;
     _unit = unit;
 }
 protected abstract Quantity Create(double amount, UnitOfMeasure unit);