title: Unit Initialization order not as indicated in source
body: <p>I have a project where multiple units have Initialization sections. I would like to control the order in which this blocks are executed. </p>
  
  <p>According to the following <a href="https://stackoverflow.com/questions/2925472/add-code-before-initialization-of-units-in-delphi">question</a>, this is based on the order in which the units were compiled, so ultimately the order should be based on the arrangement of units in the uses clause of the source DPR.</p>
  
  <p>The following is the DPR source of my project:</p>
  
  <pre><code>program X;
  
  uses
    Vcl.Forms,
    uMain in 'uMain.pas' {MainForm},
    uFooA in 'uFooA.pas',
    uFooB in 'uFooB.pas';
  
  {$R *.res}
  
  begin
    Application.Initialize;
    Application.MainFormOnTaskbar := True;
    Application.CreateForm(TMainForm, MainForm);
    Application.Run;
  
  end.
  </code></pre>
  
  <p>My issue is that this simply isn't the order in which Initialization blocks are executed.</p>
  
  <pre><code>How it should be |  How it actually is
                   | 
    1. uMain       |     1.uFooA
    2. uFooA       |     2.uFooB  
    3. uFooB       |     3.uMain
  </code></pre>
  
  <p>I would love to provide a SSCCE but I simply am not able to re-produce this issue on a fresh project.</p>
  
  <p>I've tried re-building the project with no success.</p>
  
  <p>What am I missing?</p>