 			if (Math.max(tokens.indexOf('?')) >= 0)
 				throw new Error('Invalid conditional branch');
 			
-			// next step: inline functions, right to left
+			// next step: inline functions (headers only), right to left
 			i = tokens.length;
 			while (i--)
 			{
 				if (tokens[i] == FUNCTION)
-					tokens.splice(i, 3, compileOperator(FUNCTION, [tokens[i + 1], tokens[i + 2]]));
+					tokens.splice(i, 2, compileFunctionHeader(FUNCTION, tokens[i + 1]));
 				if (tokens[i] == '=>')
-					tokens.splice(i - 1, 3, compileOperator('=>', [tokens[i - 1], tokens[i + 1]]));
+					tokens.splice(i - 1, 2, compileFunctionHeader('=>', tokens[i - 1]));
 			}
 			
 			// next step: function applications

					tokens.splice(i - 1, 2, new CompiledFunctionCall(tokens[i - 1], call.compiledParams));
			}
			
			// next step: variable assignment, right to left
			while (true)
			{
				i = tokens.length;
				while (i--)
					if (assignmentOperators.hasOwnProperty(tokens[i]))
						break;
				if (i < 0)
					break;
				if (i == 0 || i + 1 == tokens.length)

			return cfc && !cfc.compiledParams;
		}
		
		private function isFunctionHeader(token:Object):Boolean
		{
			var cfc:CompiledFunctionCall = token as CompiledFunctionCall;
			return cfc && (cfc.evaluatedMethod == operators[FUNCTION] || cfc.evaluatedMethod == operators['=>'])
				&& cfc.evaluatedParams[0][FUNCTION_CODE] === undefined;
		}
		
		/**
		 * This will check if the compiled object is a function definition.
		 * @param compiledObject A compiled object returned by compileToObject().
