text: template <typename T> void RegisterUnityClass(const char*);
  template <typename T> void RegisterStrippedType(int, const char*, const char*);
  
  void InvokeRegisterStaticallyLinkedModuleClasses()
  {
  	// Do nothing (we're in stripping mode)
  }
  
  void RegisterStaticallyLinkedModulesGranular()
  {
  	void RegisterModule_SharedInternals();
  	RegisterModule_SharedInternals();
  
  	void RegisterModule_Core();
  	RegisterModule_Core();
  
  	void RegisterModule_Audio();
  	RegisterModule_Audio();
  
  	void RegisterModule_CloudWebServices();
  	RegisterModule_CloudWebServices();
  
  	void RegisterModule_Physics();
  	RegisterModule_Physics();
  
  	void RegisterModule_UnityConnect();
  	RegisterModule_UnityConnect();
  
  	void RegisterModule_UnityWebRequest();
  	RegisterModule_UnityWebRequest();
  
  	void RegisterModule_JSONSerialize();
  	RegisterModule_JSONSerialize();
  
  	void RegisterModule_UnityAnalytics();
  	RegisterModule_UnityAnalytics();
  
  	void RegisterModule_TLS();
  	RegisterModule_TLS();
  
  	void RegisterModule_WebGL();
  	RegisterModule_WebGL();
  
  }
  
  class EditorExtension; template <> void RegisterUnityClass<EditorExtension>(const char*);
  namespace Unity { class Component; } template <> void RegisterUnityClass<Unity::Component>(const char*);
  class Behaviour; template <> void RegisterUnityClass<Behaviour>(const char*);
  class Animation; 
  class Animator; 
  class AudioBehaviour; template <> void RegisterUnityClass<AudioBehaviour>(const char*);
  class AudioListener; template <> void RegisterUnityClass<AudioListener>(const char*);
  class AudioSource; template <> void RegisterUnityClass<AudioSource>(const char*);
  class AudioFilter; 
  class AudioChorusFilter; 
  class AudioDistortionFilter; 
  class AudioEchoFilter; 
  class AudioHighPassFilter; 
  class AudioLowPassFilter; 
  class AudioReverbFilter; 
  class AudioReverbZone; 
  class Camera; template <> void RegisterUnityClass<Camera>(const char*);
  namespace UI { class Canvas; } 
  namespace UI { class CanvasGroup; } 
  namespace Unity { class Cloth; } 
  class Collider2D; 
  class BoxCollider2D; 
  class CapsuleCollider2D; 
  class CircleCollider2D; 
  class CompositeCollider2D; 
  class EdgeCollider2D; 
  class PolygonCollider2D; 
  class TilemapCollider2D; 
  class ConstantForce; 
  class Effector2D; 
  class AreaEffector2D; 
  class BuoyancyEffector2D; 
  class PlatformEffector2D; 
  class PointEffector2D; 
  class SurfaceEffector2D; 
  class FlareLayer; 
  class GUIElement; template <> void RegisterUnityClass<GUIElement>(const char*);
  namespace TextRenderingPrivate { class GUIText; } 
  class GUITexture; 
  class GUILayer; template <> void RegisterUnityClass<GUILayer>(const char*);
  class GridLayout; 
  class Grid; 
  class Tilemap; 
  class Halo; 
  class HaloLayer; 
  class IConstraint; 
  class AimConstraint; 
  class LookAtConstraint; 
  class ParentConstraint; 
  class PositionConstraint; 
  class RotationConstraint; 
  class ScaleConstraint; 
  class Joint2D; 
  class AnchoredJoint2D; 
  class DistanceJoint2D; 
  class FixedJoint2D; 
  class FrictionJoint2D; 
  class HingeJoint2D; 
  class SliderJoint2D; 
  class SpringJoint2D; 
  class WheelJoint2D; 
  class RelativeJoint2D; 
  class TargetJoint2D; 
  class LensFlare; 
  class Light; template <> void RegisterUnityClass<Light>(const char*);
  class LightProbeGroup; 
  class LightProbeProxyVolume; 
  class MonoBehaviour; template <> void RegisterUnityClass<MonoBehaviour>(const char*);
  class NavMeshAgent; 
  class NavMeshObstacle; 
  class OffMeshLink; 
  class PhysicsUpdateBehaviour2D; 
  class ConstantForce2D; 
  class PlayableDirector; 
  class Projector; 
  class ReflectionProbe; template <> void RegisterUnityClass<ReflectionProbe>(const char*);
  class Skybox; 
  class SortingGroup; 
  class StreamingController; 
  class Terrain; 
  class VideoPlayer; 
  class WindZone; 
  namespace UI { class CanvasRenderer; } 
  class Collider; template <> void RegisterUnityClass<Collider>(const char*);
  class BoxCollider; template <> void RegisterUnityClass<BoxCollider>(const char*);
  class CapsuleCollider; 
  class CharacterController; 
  class MeshCollider; 
  class SphereCollider; 
  class TerrainCollider; 
  class WheelCollider; 
  namespace Unity { class Joint; } 
  namespace Unity { class CharacterJoint; } 
  namespace Unity { class ConfigurableJoint; } 
  namespace Unity { class FixedJoint; } 
  namespace Unity { class HingeJoint; } 
  namespace Unity { class SpringJoint; } 
  class LODGroup; 
  class MeshFilter; template <> void RegisterUnityClass<MeshFilter>(const char*);
  class OcclusionArea; 
  class OcclusionPortal; 
  class ParticleAnimator; 
  class ParticleEmitter; 
  class EllipsoidParticleEmitter; 
  class MeshParticleEmitter; 
  class ParticleSystem; 
  class Renderer; template <> void RegisterUnityClass<Renderer>(const char*);
  class BillboardRenderer; 
  class LineRenderer; 
  class MeshRenderer; template <> void RegisterUnityClass<MeshRenderer>(const char*);
  class ParticleRenderer; 
  class ParticleSystemRenderer; 
  class SkinnedMeshRenderer; 
  class SpriteMask; 
  class SpriteRenderer; 
  class SpriteShapeRenderer; 
  class TilemapRenderer; 
  class TrailRenderer; 
  class Rigidbody; 
  class Rigidbody2D; 
  namespace TextRenderingPrivate { class TextMesh; } 
  class Transform; template <> void RegisterUnityClass<Transform>(const char*);
  namespace UI { class RectTransform; } template <> void RegisterUnityClass<UI::RectTransform>(const char*);
  class Tree; 
  class WorldParticleCollider; 
  class GameObject; template <> void RegisterUnityClass<GameObject>(const char*);
  class NamedObject; template <> void RegisterUnityClass<NamedObject>(const char*);
  class AssetBundle; 
  class AssetBundleManifest; 
  class ScriptedImporter; 
  class AssetImporterLog; 
  class AudioMixer; 
  class AudioMixerController; 
  class AudioMixerGroup; 
  class AudioMixerGroupController; 
  class AudioMixerSnapshot; 
  class AudioMixerSnapshotController; 
  class Avatar; 
  class AvatarMask; 
  class BillboardAsset; 
  class ComputeShader; 
  class Flare; 
  namespace TextRendering { class Font; } 
  class GameObjectRecorder; 
  class LightProbes; 
  class LocalizationAsset; 
  class Material; template <> void RegisterUnityClass<Material>(const char*);
  class ProceduralMaterial; 
  class Mesh; template <> void RegisterUnityClass<Mesh>(const char*);
  class Motion; 
  class AnimationClip; 
  class PreviewAnimationClip; 
  class NavMeshData; 
  class OcclusionCullingData; 
  class PhysicMaterial; 
  class PhysicsMaterial2D; 
  class PreloadData; template <> void RegisterUnityClass<PreloadData>(const char*);
  class RuntimeAnimatorController; 
  class AnimatorController; 
  class AnimatorOverrideController; 
  class SampleClip; template <> void RegisterUnityClass<SampleClip>(const char*);
  class AudioClip; template <> void RegisterUnityClass<AudioClip>(const char*);
  class Shader; template <> void RegisterUnityClass<Shader>(const char*);
  class ShaderVariantCollection; 
  class SpeedTreeWindAsset; 
  class Sprite; template <> void RegisterUnityClass<Sprite>(const char*);
  class SpriteAtlas; 
  class SubstanceArchive; 
  class TerrainData; 
  class TextAsset; template <> void RegisterUnityClass<TextAsset>(const char*);
  class CGProgram; 
  class MonoScript; template <> void RegisterUnityClass<MonoScript>(const char*);
  class Texture; template <> void RegisterUnityClass<Texture>(const char*);
  class BaseVideoTexture; 
  class WebCamTexture; 
  class CubemapArray; 
  class LowerResBlitTexture; template <> void RegisterUnityClass<LowerResBlitTexture>(const char*);
  class ProceduralTexture; 
  class RenderTexture; template <> void RegisterUnityClass<RenderTexture>(const char*);
  class CustomRenderTexture; 
  class SparseTexture; 
  class Texture2D; template <> void RegisterUnityClass<Texture2D>(const char*);
  class Cubemap; template <> void RegisterUnityClass<Cubemap>(const char*);
  class Texture2DArray; template <> void RegisterUnityClass<Texture2DArray>(const char*);
  class Texture3D; template <> void RegisterUnityClass<Texture3D>(const char*);
  class VideoClip; 
  class GameManager; template <> void RegisterUnityClass<GameManager>(const char*);
  class GlobalGameManager; template <> void RegisterUnityClass<GlobalGameManager>(const char*);
  class AudioManager; template <> void RegisterUnityClass<AudioManager>(const char*);
  class BuildSettings; template <> void RegisterUnityClass<BuildSettings>(const char*);
  class CloudWebServicesManager; template <> void RegisterUnityClass<CloudWebServicesManager>(const char*);
  class CrashReportManager; 
  class DelayedCallManager; template <> void RegisterUnityClass<DelayedCallManager>(const char*);
  class GraphicsSettings; template <> void RegisterUnityClass<GraphicsSettings>(const char*);
  class InputManager; template <> void RegisterUnityClass<InputManager>(const char*);
  class MonoManager; template <> void RegisterUnityClass<MonoManager>(const char*);
  class NavMeshProjectSettings; 
  class PerformanceReportingManager; 
  class Physics2DSettings; 
  class PhysicsManager; template <> void RegisterUnityClass<PhysicsManager>(const char*);
  class PlayerSettings; template <> void RegisterUnityClass<PlayerSettings>(const char*);
  class QualitySettings; template <> void RegisterUnityClass<QualitySettings>(const char*);
  class ResourceManager; template <> void RegisterUnityClass<ResourceManager>(const char*);
  class RuntimeInitializeOnLoadManager; template <> void RegisterUnityClass<RuntimeInitializeOnLoadManager>(const char*);
  class ScriptMapper; template <> void RegisterUnityClass<ScriptMapper>(const char*);
  class StreamingManager; 
  class TagManager; template <> void RegisterUnityClass<TagManager>(const char*);
  class TimeManager; template <> void RegisterUnityClass<TimeManager>(const char*);
  class UnityAnalyticsManager; template <> void RegisterUnityClass<UnityAnalyticsManager>(const char*);
  class UnityConnectSettings; template <> void RegisterUnityClass<UnityConnectSettings>(const char*);
  class LevelGameManager; template <> void RegisterUnityClass<LevelGameManager>(const char*);
  class LightmapSettings; template <> void RegisterUnityClass<LightmapSettings>(const char*);
  class NavMeshSettings; 
  class OcclusionCullingSettings; 
  class RenderSettings; template <> void RegisterUnityClass<RenderSettings>(const char*);
  class RenderPassAttachment; 
  
  void RegisterAllClasses()
  {
  void RegisterBuiltinTypes();
  RegisterBuiltinTypes();
  	//Total: 59 non stripped classes
  	//0. Behaviour
  	RegisterUnityClass<Behaviour>("Core");
  	//1. Unity::Component
  	RegisterUnityClass<Unity::Component>("Core");
  	//2. EditorExtension
  	RegisterUnityClass<EditorExtension>("Core");
  	//3. Camera
  	RegisterUnityClass<Camera>("Core");
  	//4. LowerResBlitTexture
  	RegisterUnityClass<LowerResBlitTexture>("Core");
  	//5. Texture
  	RegisterUnityClass<Texture>("Core");
  	//6. NamedObject
  	RegisterUnityClass<NamedObject>("Core");
  	//7. PreloadData
  	RegisterUnityClass<PreloadData>("Core");
  	//8. GameObject
  	RegisterUnityClass<GameObject>("Core");
  	//9. QualitySettings
  	RegisterUnityClass<QualitySettings>("Core");
  	//10. GlobalGameManager
  	RegisterUnityClass<GlobalGameManager>("Core");
  	//11. GameManager
  	RegisterUnityClass<GameManager>("Core");
  	//12. Material
  	RegisterUnityClass<Material>("Core");
  	//13. MeshFilter
  	RegisterUnityClass<MeshFilter>("Core");
  	//14. MeshRenderer
  	RegisterUnityClass<MeshRenderer>("Core");
  	//15. Renderer
  	RegisterUnityClass<Renderer>("Core");
  	//16. GUIElement
  	RegisterUnityClass<GUIElement>("Core");
  	//17. GUILayer
  	RegisterUnityClass<GUILayer>("Core");
  	//18. Mesh
  	RegisterUnityClass<Mesh>("Core");
  	//19. MonoBehaviour
  	RegisterUnityClass<MonoBehaviour>("Core");
  	//20. ReflectionProbe
  	RegisterUnityClass<ReflectionProbe>("Core");
  	//21. Cubemap
  	RegisterUnityClass<Cubemap>("Core");
  	//22. Texture2D
  	RegisterUnityClass<Texture2D>("Core");
  	//23. Texture3D
  	RegisterUnityClass<Texture3D>("Core");
  	//24. Texture2DArray
  	RegisterUnityClass<Texture2DArray>("Core");
  	//25. RenderTexture
  	RegisterUnityClass<RenderTexture>("Core");
  	//26. UI::RectTransform
  	RegisterUnityClass<UI::RectTransform>("Core");
  	//27. Transform
  	RegisterUnityClass<Transform>("Core");
  	//28. Sprite
  	RegisterUnityClass<Sprite>("Core");
  	//29. AudioClip
  	RegisterUnityClass<AudioClip>("Audio");
  	//30. SampleClip
  	RegisterUnityClass<SampleClip>("Audio");
  	//31. AudioListener
  	RegisterUnityClass<AudioListener>("Audio");
  	//32. AudioBehaviour
  	RegisterUnityClass<AudioBehaviour>("Audio");
  	//33. AudioSource
  	RegisterUnityClass<AudioSource>("Audio");
  	//34. TagManager
  	RegisterUnityClass<TagManager>("Core");
  	//35. GraphicsSettings
  	RegisterUnityClass<GraphicsSettings>("Core");
  	//36. DelayedCallManager
  	RegisterUnityClass<DelayedCallManager>("Core");
  	//37. InputManager
  	RegisterUnityClass<InputManager>("Core");
  	//38. TimeManager
  	RegisterUnityClass<TimeManager>("Core");
  	//39. BuildSettings
  	RegisterUnityClass<BuildSettings>("Core");
  	//40. PlayerSettings
  	RegisterUnityClass<PlayerSettings>("Core");
  	//41. ResourceManager
  	RegisterUnityClass<ResourceManager>("Core");
  	//42. RuntimeInitializeOnLoadManager
  	RegisterUnityClass<RuntimeInitializeOnLoadManager>("Core");
  	//43. ScriptMapper
  	RegisterUnityClass<ScriptMapper>("Core");
  	//44. Shader
  	RegisterUnityClass<Shader>("Core");
  	//45. PhysicsManager
  	RegisterUnityClass<PhysicsManager>("Physics");
  	//46. MonoManager
  	RegisterUnityClass<MonoManager>("Core");
  	//47. MonoScript
  	RegisterUnityClass<MonoScript>("Core");
  	//48. TextAsset
  	RegisterUnityClass<TextAsset>("Core");
  	//49. AudioManager
  	RegisterUnityClass<AudioManager>("Audio");
  	//50. UnityConnectSettings
  	RegisterUnityClass<UnityConnectSettings>("UnityConnect");
  	//51. CloudWebServicesManager
  	RegisterUnityClass<CloudWebServicesManager>("CloudWebServices");
  	//52. UnityAnalyticsManager
  	RegisterUnityClass<UnityAnalyticsManager>("UnityAnalytics");
  	//53. BoxCollider
  	RegisterUnityClass<BoxCollider>("Physics");
  	//54. Collider
  	RegisterUnityClass<Collider>("Physics");
  	//55. LevelGameManager
  	RegisterUnityClass<LevelGameManager>("Core");
  	//56. LightmapSettings
  	RegisterUnityClass<LightmapSettings>("Core");
  	//57. RenderSettings
  	RegisterUnityClass<RenderSettings>("Core");
  	//58. Light
  	RegisterUnityClass<Light>("Core");
  
  }
  