return new JavaRefactoringDescriptor(ID_EXTRACT_INTERFACE, project, Messages.format(RefactoringCoreMessages.ExtractInterfaceProcessor_descriptor_description, new String[] { fSuperName, JavaElementLabels.getElementLabel(fSubType, JavaElementLabels.ALL_FULLY_QUALIFIED)}), getComment(), arguments, JavaRefactorings.JAR_IMPORTABLE | RefactoringDescriptor.STRUCTURAL_CHANGE | RefactoringDescriptor.MULTI_CHANGE);
JavaRefactoringDescriptor descriptor= new JavaRefactoringDescriptor(ID_EXTRACT_INTERFACE, project, Messages.format(RefactoringCoreMessages.ExtractInterfaceProcessor_descriptor_description, new String[] { fSuperName, JavaElementLabels.getElementLabel(fSubType, JavaElementLabels.ALL_FULLY_QUALIFIED)}), getComment(), arguments, JavaRefactorings.JAR_IMPORTABLE | RefactoringDescriptor.STRUCTURAL_CHANGE | RefactoringDescriptor.MULTI_CHANGE); return new RefactoringChangeDescriptor(descriptor);
	public final Change createChange(final IProgressMonitor monitor) throws CoreException, OperationCanceledException {		Assert.isNotNull(monitor);		try {			monitor.beginTask("", 6); //$NON-NLS-1$			monitor.setTaskName(RefactoringCoreMessages.ExtractInterfaceProcessor_creating);			final DynamicValidationStateChange change= new DynamicValidationStateChange(RefactoringCoreMessages.ExtractInterfaceRefactoring_name, fChangeManager.getAllChanges()) {				public ChangeDescriptor getDescriptor() {					final Map arguments= new HashMap();					arguments.put(JavaRefactoringDescriptor.INPUT, fSubType.getHandleIdentifier());					arguments.put(JavaRefactoringDescriptor.NAME, fSuperName);					for (int index= 0; index < fMembers.length; index++)						arguments.put(JavaRefactoringDescriptor.ELEMENT + (index + 1), fMembers[index].getHandleIdentifier());					arguments.put(ATTRIBUTE_ABSTRACT, Boolean.valueOf(fAbstract).toString());					arguments.put(ATTRIBUTE_COMMENTS, Boolean.valueOf(fComments).toString());					arguments.put(ATTRIBUTE_PUBLIC, Boolean.valueOf(fPublic).toString());					arguments.put(ATTRIBUTE_REPLACE, Boolean.valueOf(fReplace).toString());					arguments.put(ATTRIBUTE_INSTANCEOF, Boolean.valueOf(fInstanceOf).toString());					String project= null;					final IJavaProject javaProject= fSubType.getJavaProject();					if (javaProject != null)						project= javaProject.getElementName();					return new JavaRefactoringDescriptor(ID_EXTRACT_INTERFACE, project, Messages.format(RefactoringCoreMessages.ExtractInterfaceProcessor_descriptor_description, new String[] { fSuperName, JavaElementLabels.getElementLabel(fSubType, JavaElementLabels.ALL_FULLY_QUALIFIED)}), getComment(), arguments, JavaRefactorings.JAR_IMPORTABLE | RefactoringDescriptor.STRUCTURAL_CHANGE | RefactoringDescriptor.MULTI_CHANGE);				}			};			final IFile file= ResourceUtil.getFile(fSubType.getCompilationUnit());			if (fSuperSource != null && fSuperSource.length() > 0)				change.add(new CreateTextFileChange(file.getFullPath().removeLastSegments(1).append(JavaModelUtil.getRenamedCUName(fSubType.getCompilationUnit(), fSuperName)), fSuperSource, file.getCharset(false), "java")); //$NON-NLS-1$			return change;		} finally {			monitor.done();		}	}