I'm still pretty new to AS3, and I keep getting this satanic error in my code

Code:

Code:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
	at V2_Gem_Game_fla::MainTimeline/run_mc()[V2_Gem_Game_fla.MainTimeline::frame4:78]
I've been at this for hours and I can't seem to figure it out for the life of me

it's a game where I have animated gems spawning through a timer at the top of the screen, and the character has to catch them
Catching a certain gem will cause the character to lose life and when all are gone the game ends going to the end game frame and the error pops up with the gems still spawning, but no longer falling
I'm pretty sure it's the timer that's giving me the problems, but I still can't figure out how to fix it

Here is the Code:

Code:
////////////////////////Variables//////////////////////////////////

var pems: Array = new Array();
var score: int = 0;
var lives: int = 3;

var rightKeyPressed: Boolean;
var leftKeyPressed: Boolean;

var right: int = 68;
var left: int = 65;
var change: int = 32;

var mcSpeed: int = 20;
var gemspeed: Number = 0

scoreTEXT.text = "Score:"
livesTEXT.text = "Lives:"


var isBig: Boolean = false;

////////////////////////TheCode/////////////////////////////////

function run_mc(e: Event): void {
	if (rightKeyPressed) {
		cyn_mc.x += mcSpeed;
		if (isBig) {
			cyn_mc.gotoAndStop("moveR");
			avi_mc.gotoAndStop("Z");
		} else {
			cyn_mc.gotoAndStop("runright");
			avi_mc.gotoAndStop("C");
		}
	}
	if (leftKeyPressed) {
		cyn_mc.x -= mcSpeed;
		if (isBig) {
			cyn_mc.gotoAndStop("moveL");
			avi_mc.gotoAndStop("Z");
		} else {
			cyn_mc.gotoAndStop("runleft");
			avi_mc.gotoAndStop("C");
		}
	}

	for each(var gem in pems) {
		gem.y = gem.y + gem.speed + gemspeed;
		gem.speed += 0.3
		if (cyn_mc.hit.hitTestObject(gem)) {
			trace("hit");
			//transform//
			if (gem.value < -11) {
				if (isBig) {
					cyn_mc.gotoAndStop("stillL");
					avi_mc.gotoAndStop("Z");
					isBig = false
					mcSpeed = 20;
					channels.stop()
					song3.play()
					channels = song1.play(0, 999)
				} else {
					cyn_mc.gotoAndStop("standL");
					avi_mc.gotoAndStop("C");
					isBig = true;
					mcSpeed = 28;
					channels.stop()
					song3.play()
					channels = song2.play(0, 999)
				}
				gem.parent.removeChild(gem);
				pems.splice(pems.indexOf(gem), 1);
			} else if (gem.value < 0) {
				score += gem.value;
				lives--;
				gem.parent.removeChild(gem);
				pems.splice(pems.indexOf(gem), 1);
				livesTEXT.text = "Lives:" + lives;
				song4.play()
				if (lives < 1) {
					gameover();
				}
			} else {
				score += gem.value;
				gemspeed += score / 9000;
				gem.parent.removeChild(gem);
				pems.splice(pems.indexOf(gem), 1);
				song3.play()
			}
		}

		//end hit test code//
		if (gem.y > 700) {
			gem.parent.removeChild(gem);
			pems.splice(pems.indexOf(gem), 1);
		}
	}
	if (score < 0) {
		score = 0;
	}
	trace(score);
	scoreTEXT.text = "Score:" + score;

}

function handleDown(e: KeyboardEvent): void {
	if (e.keyCode == right) {
		rightKeyPressed = true;
	}

	if (e.keyCode == left) {
		leftKeyPressed = true;
	}

}


function handleUp(e: KeyboardEvent): void {
	if (e.keyCode == right) {
		rightKeyPressed = false;
	}

	if (isBig) {
		cyn_mc.gotoAndStop("standR");
	} else {

	}
	cyn_mc.gotoAndStop("stillR");


	if (e.keyCode == left) {
		leftKeyPressed = false;
	}
	if (isBig) {
		cyn_mc.gotoAndStop("standL");
	} else {

		cyn_mc.gotoAndStop("stillL");
	}
}

////////////////////////GameTimer//////////////////////////////////

var gemTimer: Timer = new Timer(150 + 1000 * Math.random());
gemTimer.addEventListener(TimerEvent.TIMER, timerListener);
function timerListener(e: TimerEvent): void {
	var pgem: gem_mc = new gem_mc();
	pems.push(pgem);
	addChild(pgem);
	pgem.x = Math.random() * stage.stageWidth;
	gemTimer = new Timer(150 + 1000 * Math.random());
}
gemTimer.start();

//////////////////////////GameOver////////////////////////////////

function gameover(): void {

	if (pems.length > 0) {

		gemTimer.removeEventListener(TimerEvent.TIMER, timerListener);
		stage.removeEventListener(Event.ENTER_FRAME, run_mc);
		stage.removeEventListener(KeyboardEvent.KEY_DOWN, handleDown);
		stage.removeEventListener(KeyboardEvent.KEY_UP, handleUp);
		gemTimer.stop();
		gotoAndStop(5);
	}

}
Anyone know how to fix this?