1. Study concurrency features in Ada, and provide a detailed description of the case where any number of consumers (defined by a task type) and one producer may access a given buffer to append characters to it and remove characters. 2. At the turn of the century, much attention was drawn to the so-called Y2K (“year 2000”) problem. Most existing software was designed to handle dates by using two digits to denote the year. This would have generated errors because, for example, “00” could have been interpreted as the year 1900. Discuss the Y2K problem as a problem of software evolution. In particular, address the following issues: What was the source of the problem? Could the problem have been anticipated? Why was it not? How would you detect such errors in a program and how could you solve them?