trim method
Removes periods that do not overlap with this period and trims the ones that do overlap and are not fully contained by this period.
Implementation
List<Period> trim(List<Period> periods) {
final localPeriods = [...periods];
for (final period in [...periods]) {
if (period.doesNotOverlapWith(this)) {
localPeriods.remove(period);
} else if (containsPartially(period)) {
final index = localPeriods.indexOf(period);
localPeriods
..removeAt(index)
..insert(index, getIntersection(period)!);
}
}
return localPeriods;
}