Reversion to the Ada 83 rule was deemed appropriate because allowing just trailing underlines did not achieve the flexibility desired for wide compatibility with other languages such as C. Permitting leading underlines and multiple embedded underlines would have given greater compatibility but was considered unacceptable given the strength of concern for readability of program text. Wraparound on conversion no longer occurs. The ancestor part can now be a subtype name as an alternative to an expression. This enables an extension aggregate to be written even when the ancestor is abstract such as in the case of controlled types. The package Ada.
Finalization is restructured.
The previous problem with writing aggregates for types derived from abstract types is now overcome by the new form of extension aggregate mentioned above. The procedure Split is now called Adjust. The procedures Adjust and Finalize are no longer abstract but have null bodies like Initialize. This pragma is placed in the task specification and could thus depend on the value of a task discriminant. It is no longer necessary for a child of a generic unit to be instantiated as a child of an instantiation of its parent.