See Ada code in example_7.47-49 and C++ code in example_7.50-53
