Why are all the internal members all private? This makes it impossible to chnage functionality without being forced to stay up to date with master which is a waste of time for testing changes.
I would like to push a change of unrelated changes(scrollRect, static variable unique names to work with haxe) but would also like to change all privates to protected. Would you accept a change of private to protected? There is absolutely no reason to indiscriminately use private in an open source project.
Having private members destroys any possibility for fast testing with dependency injection/service location binding. You're forced to do it with git branches instead because you're forced to changing core files. It definitely needs to be changed.
Perhaps you prefer (protected) accessors. Accessors are slower, and probably shouldn't be used in a core library in performance critical (main loop) parts and having accessible protected members adds an additional level of flexibility when needed. A possibly mutated value of public accessor is not what is always needed in a member access.