This folder contains private include files.

These include files are part of the private implementation details of
various framework components.  Use at your peril.
