public AmpsSignalTable AddSignalTable(AmpsSignalTable signalTable) { // TODO: Make AmpsSignalTables immutable. foreach (var psgPoint in signalTable.Points) { var timePoint = Points.FirstOrDefault(x => x.TimePoint == psgPoint.TimePoint); if (timePoint != null) { foreach (var dcBiasElement in timePoint.DcBiasElements) { if (timePoint.DcBiasElements.FirstOrDefault(x => x.Key.Equals(dcBiasElement.Key)).Key == default(string)) { timePoint.CreateOutput(dcBiasElement.Key, dcBiasElement.Value); } } foreach (var digitalOutputElement in timePoint.DigitalOutputElements) { if ( timePoint.DigitalOutputElements.FirstOrDefault( x => x.Key.Equals(digitalOutputElement.Key)).Key == default(string)) { timePoint.CreateOutput(digitalOutputElement.Key, digitalOutputElement.Value); } } } else { // Time point doesn't exist, add it to the signal table. AddTimePoint(psgPoint); } } return(new AmpsSignalTable(timePoints)); }