public void Remove(ValueTuple values)
        {
            var value = values.Value0;
            var weight = values.Value1;

            _sum -= value * weight;
            _weightSum -= weight;
        }
        public void Add(ValueTuple values)
        {
            var value = values.Value0;
            var weight = values.Value1;

            _sum += value * weight;
            _weightSum += weight;
        }
        public void Update(ValueTuple oldValues, PropertyMetadata property, decimal newValue)
        {
            Debug.Assert(property == _valueProperty || property == _weightProperty);

            var oldValue = oldValues.Value0;
            var oldWeight = oldValues.Value1;

            if (property == _valueProperty) {
                _sum += (newValue - oldValue) * oldWeight;
            }
            else {
                _sum += oldValue * (newValue - oldWeight);
                _weightSum += newValue - oldWeight;
            }
        }
 public void Update(ValueTuple oldValues, PropertyMetadata property, decimal newValue)
 {
     Debug.Assert(_property == property);
     Value = Value - oldValues.Value0 + newValue;
 }
 public void Remove(ValueTuple values)
 {
     Value -= values.Value0;
 }
 public void Add(ValueTuple values)
 {
     Value += values.Value0;
 }
 public void Remove(ValueTuple values)
 {
     _sum -= values.Value0;
     _count--;
 }
 public void Add(ValueTuple values)
 {
     _sum += values.Value0;
     _count++;
 }