This is pretty self-explanatory. Since it needs full includes for the type defintions, many uses of it can make the includes circular.