if (! isSelectionUsedAsExpression()) return RefactoringStatus.createFatalErrorStatus("An expression must be selected to activate this refactoring.");
if (getSelectedExpression().getParent() instanceof ExpressionStatement) return RefactoringStatus.createFatalErrorStatus("Cannot extract expressions used as statements.");
	private RefactoringStatus checkSelection(IProgressMonitor pm) throws JavaModelException {		try{			pm.beginTask("", 8);				if (analyzeSelection().getSelectedNodes() == null || analyzeSelection().getSelectedNodes().length != 1)				return RefactoringStatus.createFatalErrorStatus("An expression must be selected to activate this refactoring.");			pm.worked(1);						if (isUsedInExplicitConstructorCall())				return RefactoringStatus.createFatalErrorStatus("Code from explicit constructor calls cannot be extracted to a variable.");			pm.worked(1);										if (getSelectedMethodNode() == null)				return RefactoringStatus.createFatalErrorStatus("An expression used in a method must be selected to activate this refactoring.");						pm.worked(1);										if (getSelectedExpression() == null)				return RefactoringStatus.createFatalErrorStatus("An expression must be selected to activate this refactoring.");			pm.worked(1);									if (! isSelectionUsedAsExpression()) //XXX should enable at some point				return RefactoringStatus.createFatalErrorStatus("An expression must be selected to activate this refactoring.");			pm.worked(1);							RefactoringStatus result= new RefactoringStatus();			result.merge(checkExpression());			if (result.hasFatalError())				return result;			pm.worked(1);						result.merge(checkExpressionBinding());							if (result.hasFatalError())				return result;							pm.worked(1);						initializeTempNames(); 			pm.worked(1);			return result;		} finally{			pm.done();		}			}