/// <summary>
		/// Does set brittle references.
		/// 
		/// NOTE: For simplicity, this brittle approach is used instead of alternatives;
		/// 		* public transform references, set via dragging from hierarchy items
		/// 		* Inversion Of Control (StrangeIoC) where less GameObject-to-GameObject references are needed.
		/// 		* Manager dynamically spawning via Instantiate()
		/// 		* Etc...
		/// 
		/// 
		/// NOTE: We could shift this code to a newly created GUIManager. For now its fine.
		/// 
		/// 
		/// </summary>
		private void _doSetBrittleReferences()
		{
			//
			_startWaypoint_gameobject 	= _doThrowErrorIfNull (GameObject.Find (MainConstants.StartWaypoint)) as GameObject;
			_player_gameobject 			= _doThrowErrorIfNull (GameObject.Find (MainConstants.PlayerUnPrefab)) as GameObject;

			//
			_playerInputComponent = _player_gameobject.GetComponent<PlayerInputComponent>();
			_characterController2D = _player_gameobject.GetComponent<CharacterController2D>();

		}
		// PUBLIC STATIC
		
		// PRIVATE
		/// <summary>
		/// Does trigger waypoing.
		/// 
		/// NOTE: We crudely evaluate victory here. Todo: More checks could be added (player velocity.y)
		/// 
		/// </summary>
		private void _doTriggerCollisionWithPlayer (PlayerInputComponent aPlayerInputComponent)
		{

			//FLAG THE COLLISION
			_wasTriggered = true;
			//
			if (aPlayerInputComponent.isVulnerableToEnemy) {
				SimpleGameManager.Instance.audioManager.doPlaySound (AudioClipType.ENEMY_KILLS_PLAYER);
				aPlayerInputComponent.doKnockOut();
				//BUT REFRESH QUICKLY COLLISION FLAG FOR ANY SUBSEQUENT INTERACTION
				Invoke ("doRefreshEnemy", 1f);
			} else {
				SimpleGameManager.Instance.audioManager.doPlaySound (AudioClipType.PLAYER_KILLS_ENEMY);
				_enemyAIComponent.doKnockOut();
			}
			
		}