# Functions
NewDownCounter creates a new DownCounter with the specified starting count.
NewUpCounter creates a new UpCounter with the specified upper limit.
# Structs
DownCounter represents a counter that decrements downwards until it reaches zero.
UpCounter represents a counter that increments upwards until it reaches an upper limit.