Adds an item to the beginning or end of the iterable
List<T> copyWithItem(T item, [bool prepend = false]) { return prepend ? [item, ...this] : [...this, item]; }