Recognition rather than recall: As noted above, an expert
user might make use of any or all of these cases if a user is
aware of the available tools; however, cases 1, 2, and 3 all
require users to overcome errors instead of suggesting
solutions. In each case, the IDE recognizes the error, but
provides a variety of options consistent with the error and not
previous user actions. A better implementation of Case 1, for
example, might identify all implementing classes and suggest
implementation. This theoretical tool might also suggest a
default implementation for non-abstract classes, resolving
corollaries 1.1, 1.2, and 1.3. The tool becomes more valuable
by offering suggestions and default choices rather than forcing
users to synthesize a new solution.