title: Delphi and finalization in a unit
body: <p>I have two units unitA and unitB. 
  Class TFoo is declared in unitB.</p>
  
  <p>Is it allways safe to call B.Free in finalization of unitA?</p>
  
  <p>How does it depend on in which order unitA and unitB are in dpr? </p>
  
  <p>Can I be sure that unitB exists when unitA finalization is executed?</p>
  
  <pre><code>unit unitB;
  interface
  type
   TFoo = class
     // code...
    end;
   // code....
  end;
  
  unit unitA;
  // code..
  implementation
  uses
   unitB;
  var
   A: TStringList;
   B: UnitB.TFoo;
  
  initialization
   A:= TStringList.Create;
   B:= UnitB.TFoo.Create;
  finalization
   A.Free;
   B.Free;  // Is it safe to call?
  end.
  </code></pre>