protected RecoveredElement recoverFunctionExpression(RecoveredElement element, AbstractMethodDeclaration method) {
	int start = method.exprStackPtr;
//	int end=this.expressionPtr;
	boolean isAssignment=true;
	Statement expression=null;

    FunctionExpression funcExpr=new FunctionExpression((MethodDeclaration)method);
    funcExpr.sourceEnd=method.declarationSourceEnd;
    funcExpr.sourceStart=method.sourceStart;


	if (isAssignment && start>=0)
	{
		expression=new Assignment(this.expressionStack[start],funcExpr,method.sourceEnd);
	}
	if (expression!=null)
	{
		element = element.add(expression, 1);
		if (method.declarationSourceEnd == 0){
			element = element.add(method, 0);
			this.lastCheckPoint = method.bodyStart;
		} else {
			element = element.add(method, 0);
			this.lastCheckPoint = method.declarationSourceEnd + 1;
		}
		if (element instanceof RecoveredMethod)
			element.add(new Block(0), 0);
	}

	return element;
}