return new JavaRefactoringDescriptor(ID_EXTRACT_METHOD, project, Messages.format(RefactoringCoreMessages.ExtractMethodRefactoring_descriptor_description, new String[] {getSignature(), method != null ? BindingLabelProvider.getBindingLabel(method, JavaElementLabels.ALL_FULLY_QUALIFIED) : '{' + JavaElementLabels.ELLIPSIS_STRING + '}', BindingLabelProvider.getBindingLabel(type, JavaElementLabels.ALL_FULLY_QUALIFIED)}), getComment(), arguments, RefactoringDescriptor.STRUCTURAL_CHANGE);
JavaRefactoringDescriptor descriptor= new JavaRefactoringDescriptor(ID_EXTRACT_METHOD, project, Messages.format(RefactoringCoreMessages.ExtractMethodRefactoring_descriptor_description, new String[] {getSignature(), method != null ? BindingLabelProvider.getBindingLabel(method, JavaElementLabels.ALL_FULLY_QUALIFIED) : '{' + JavaElementLabels.ELLIPSIS_STRING + '}', BindingLabelProvider.getBindingLabel(type, JavaElementLabels.ALL_FULLY_QUALIFIED)}), getComment(), arguments, RefactoringDescriptor.STRUCTURAL_CHANGE); return new RefactoringChangeDescriptor(descriptor);
			public final ChangeDescriptor getDescriptor() {				final Map arguments= new HashMap();				arguments.put(JavaRefactoringDescriptor.INPUT, fCUnit.getHandleIdentifier());				arguments.put(JavaRefactoringDescriptor.NAME, fMethodName);				arguments.put(ATTRIBUTE_SELECTION, new Integer(fSelectionStart).toString() + " " + new Integer(fSelectionLength).toString()); //$NON-NLS-1$				arguments.put(ATTRIBUTE_VISIBILITY, new Integer(fVisibility).toString());				arguments.put(ATTRIBUTE_DESTINATION, new Integer(fDestinationIndex).toString());				arguments.put(ATTRIBUTE_EXCEPTIONS, Boolean.valueOf(fThrowRuntimeExceptions).toString());				arguments.put(ATTRIBUTE_COMMENTS, Boolean.valueOf(fGenerateJavadoc).toString());				arguments.put(ATTRIBUTE_REPLACE, Boolean.valueOf(fReplaceDuplicates).toString());				String project= null;				IJavaProject javaProject= fCUnit.getJavaProject();				if (javaProject != null)					project= javaProject.getElementName();				ITypeBinding type= null;				if (fDestination instanceof AbstractTypeDeclaration) {					final AbstractTypeDeclaration decl= (AbstractTypeDeclaration) fDestination;					type= decl.resolveBinding();				} else if (fDestination instanceof AnonymousClassDeclaration) {					final AnonymousClassDeclaration decl= (AnonymousClassDeclaration) fDestination;					type= decl.resolveBinding();				}				IMethodBinding method= null;				final BodyDeclaration enclosing= fAnalyzer.getEnclosingBodyDeclaration();				if (enclosing instanceof MethodDeclaration) {					final MethodDeclaration node= (MethodDeclaration) enclosing;					method= node.resolveBinding();				}				return new JavaRefactoringDescriptor(ID_EXTRACT_METHOD, project, Messages.format(RefactoringCoreMessages.ExtractMethodRefactoring_descriptor_description, new String[] {getSignature(), method != null ? BindingLabelProvider.getBindingLabel(method, JavaElementLabels.ALL_FULLY_QUALIFIED) : '{' + JavaElementLabels.ELLIPSIS_STRING + '}', BindingLabelProvider.getBindingLabel(type, JavaElementLabels.ALL_FULLY_QUALIFIED)}), getComment(), arguments, RefactoringDescriptor.STRUCTURAL_CHANGE);			}