public DataPoint Add(DataPoint point)
        {
            if (Time != point.Time)
                throw new InvalidOperationException("Cannot add datapoints with mismatched times");

            return new DataPoint()
            {
                Time = Time,
                Value = Value + point.Value
            };
        }
 public DataPoint Subtract(DataPoint point)
 {
     return Add(point.Negate());
 }
 // Static Methods
 private static DataPoint Add(DataPoint point1, DataPoint point2)
 {
     return point1.Add(point2);
 }