public void reserveTicket(Ticket ticket) {
    if (ticket == null) {
      throw new CashOfficeManipulationException("Cannot reserve NULL ticket");
    }
    if (ticket.getStatus() != TicketStatus.ENABLE) {
      throw new CashOfficeManipulationException("Cannot reserve ticket with status != ENABLE");
    }
    ticket.changeStatus(TicketStatus.RESERVED);
    if ( !exists(ticket)) {
      addTicket(ticket);
    }
  }