/// <summary>
 /// Constructs Delphi source code representing a protobuf type.
 /// </summary>
 /// <param name="schema">Protobuf schema definition that this type is part of</param>
 /// <param name="containerType">Representation of the message type that this type is nested in, absent if this is not a nested type</param>
 protected TypeSourceCode(SchemaSourceCode schema, MessageTypeSourceCode?containerType)
 {
     Schema        = schema;
     ContainerType = containerType;
 }
 /// <summary>
 /// Constructs a Delphi identifier for referencing the type, fully qualifying it if required.
 /// </summary>
 /// <param name="referencingSchema">Schema from which the type is referenced</param>
 /// <returns>The Delphi type identifier</returns>
 public string ReferenceDelphiTypeName(SchemaSourceCode referencingSchema) => referencingSchema.Equals(Schema) ? ContainerQualifiedDelphiTypeName
                                                                                                               : $"{Schema.DelphiUnitName}.{ContainerQualifiedDelphiTypeName}";
 /// <summary>
 /// Constructs Delphi source code representing a protobuf enum.
 /// </summary>
 /// <param name="enum">Protobuf enum to generate code for</param>
 /// <param name="schema">Protobuf schema definition that this enum is part of</param>
 /// <param name="containerType">Representation of the message type that this enum is nested in, absent if this is not a nested enum</param>
 public EnumSourceCode(EnumDescriptorProto @enum, SchemaSourceCode schema, MessageTypeSourceCode?containerType) : base(schema, containerType) => Enum = @enum;