"A constructor definition.
 
 A constructor may be either a [[callable constructor|CallableConstructorDefinition]] or a [[value constructor|ValueConstructorDefinition]].
 
 Examples (multi-line):
 
     // 2D point
     shared new polar(r, φ) {
         Float r;
         Float φ;
         this.x = r * cos(φ);
         this.y = r * sin(φ);
         this.r = r;
         this.φ = φ;
     }
 
     shared new origin {
         x = 0.0; y = 0.0;
         r = 0.0; φ = 0.0;
     }"
shared abstract class ConstructorDefinition()
        of CallableConstructorDefinition | ValueConstructorDefinition
        extends Declaration() {
    
    "The name of the constructor, if present.
     
     An absent name is only allowed for a callable constructor,
     in which case it is the default constructor."
    shared actual formal LIdentifier? name;
    "The parameters of the constructor, if applicable.
     
     Callable constructors have parameters, value constructors do not."
    shared formal Parameters? parameters;
    "The block of the constructor."
    shared formal Block block;
    "The extended type of the constructor, if present."
    shared formal ExtendedType? extendedType;
    
    shared actual formal <Annotations|LIdentifier|Parameters|ExtendedType|Block>[] children;
}