title: Private types are visible to everyone?
body: <p>During program development I accidentally noticed that all types that are declared within a classes has global visibility.</p>
  
  <p>I have always thought that their visibility is restricted to class unless type is referred with class type name like TMyClass.TMytype.Value;</p>
  
  <p>Am I doing something really wrong here, as structures like following:</p>
  
  <pre><code>unit MyTest;
  
  interface
  
  type TMyTest  = class
      constructor Create;
  
      strict private
          type TMyType = ( NUL, SLEEP );
  
  end;
  
  implementation
  
  // ...
  </code></pre>
  
  <p>causes conflicts in other units that uses this (MyTest) unit.</p>
  
  <p>If unit has Sleep( 100 ); call, it will conflict with TMyTest.TMyType.SLEEP and prevention of conflicts was why I encapsulated SLEEP inside class and TMyType at the first place.</p>
  
  <p>Any suggestion for a workarounds?</p>