class TimeSpan implements Comparable<TimeSpan>, Serializable, TimeSpanProvider, SizeProvider {

    public List<TimeSpan> subtract(Collection<? extends TimeSpan> others)
    {
        List<TimeSpan> results = Collections.singletonList(this);
        for (TimeSpan other : others)
        {
            List<TimeSpan> newResults = new ArrayList<>(results.size() + 1);
            for (TimeSpan result : results)
            {
                newResults.addAll(result.subtract(other));
            }
            results = newResults;
        }
        return results;
    }

}