Freeze in Editor when calling Destroy(gameObject) on Object

I made a very simple script to make an object fall and explode in contact with ground. The problem is that after the explosion, when Destroy(gameObject) is called on the script, the editor play window freezes.

var explosion : GameObject;
var damage : float = 10;
// var rendererer : Renderer;
function OnCollisionEnter(other : Collision)
{
		if(other.collider.gameObject.layer == 9 || other.collider.gameObject.layer == 10)
		{
			Collide();
			
		}
}

function ExplosionDamage(center: Vector3, radius: float) 
{	
		var Enemies = Physics.OverlapSphere(center, radius);
		if(Enemies.Length > 0)
		{
			for (var i = 0; i < Enemies.Length; i++) 
			{
				if(Enemies*.transform.tag == "Enemy")*

_ Enemies*.GetComponent(“AIEnemy”).AddHealth(-damage);_
_
}_
_
}_
_
}*_

function Collide ()
{
* if(explosion != null)*
* explosion.SetActive (true);*
* ExplosionDamage(transform.position, 5);*
* yield WaitForSeconds(2);*
Destroy(gameObject);
}

Avoid destroying gameobjects whenever possible! Instead of destroying the objects, create an object pool.

The idea is that you have a script with an internal list or array or what not with pre-instantiated, but hidden objects. When you need one, you pull from this list. When you no longer need it, you add it back to the list.

Don’t destroy; hide and deactivate.

I found the solution. Thanks to everyone who helped me. The problem was a second camera in my Fps Controller which dealt with the rendering of hands/gun so clipping would be avoided near objects. For some reason it caused a freeze when a mesh renderer was disabled while visible to the camera. And it was related to the rendering path for some reason. I had set the rendering path to deferred, same as the main camera, but once i changed it to forward or legacy vertex lit it was fixed. Thanks again to everyone.