A command handler is responsible for accepting or rejecting commands and turning accepted commands into a list of
events by applying the appropriate business logic and validations based on the current state. To assist in
determining if a command is valid, the command handler has an internal aggregator that parses events as they are
generated. The internal aggregator is guaranteed to be fully up-to-date at the point a new command is interpreted
with the latest aggregate provided as an argument ready to use for validation and business logic.