return new JavaRefactoringDescriptor(ID_PUSH_DOWN, project, fMembersToMove.length == 1 ? NLS.bind(RefactoringCoreMessages.PushDownRefactoring_descriptor_description_full, new String[] { JavaElementLabels.getElementLabel(fMembersToMove[0], JavaElementLabels.ALL_FULLY_QUALIFIED), JavaElementLabels.getElementLabel(declaring, JavaElementLabels.ALL_FULLY_QUALIFIED)}) : NLS.bind(RefactoringCoreMessages.PushDownRefactoring_descriptor_description, new String[] { JavaElementLabels.getElementLabel(declaring, JavaElementLabels.ALL_FULLY_QUALIFIED)}), getComment(), arguments, JavaRefactorings.JAR_IMPORTABLE | RefactoringDescriptor.STRUCTURAL_CHANGE | RefactoringDescriptor.MULTI_CHANGE);
JavaRefactoringDescriptor descriptor= new JavaRefactoringDescriptor(ID_PUSH_DOWN, project, fMembersToMove.length == 1 ? NLS.bind(RefactoringCoreMessages.PushDownRefactoring_descriptor_description_full, new String[] { JavaElementLabels.getElementLabel(fMembersToMove[0], JavaElementLabels.ALL_FULLY_QUALIFIED), JavaElementLabels.getElementLabel(declaring, JavaElementLabels.ALL_FULLY_QUALIFIED)}) : NLS.bind(RefactoringCoreMessages.PushDownRefactoring_descriptor_description, new String[] { JavaElementLabels.getElementLabel(declaring, JavaElementLabels.ALL_FULLY_QUALIFIED)}), getComment(), arguments, JavaRefactorings.JAR_IMPORTABLE | RefactoringDescriptor.STRUCTURAL_CHANGE | RefactoringDescriptor.MULTI_CHANGE); return new RefactoringChangeDescriptor(descriptor);
	public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException {		try {			return new DynamicValidationStateChange(RefactoringCoreMessages.PushDownRefactoring_change_name, fChangeManager.getAllChanges()) {				public final ChangeDescriptor getDescriptor() {					final Map arguments= new HashMap();					if (fDeclaringType != null)						arguments.put(JavaRefactoringDescriptor.INPUT, fDeclaringType.getHandleIdentifier());					for (int index= 0; index < fMembersToMove.length; index++) {						arguments.put(JavaRefactoringDescriptor.ELEMENT + (index + 1), fMembersToMove[index].getHandleIdentifier());						for (int offset= 0; offset < fMemberInfos.length; offset++) {							if (fMemberInfos[offset].getMember().equals(fMembersToMove[index])) {								switch (fMemberInfos[offset].getAction()) {									case MemberActionInfo.PUSH_ABSTRACT_ACTION:										arguments.put(ATTRIBUTE_ABSTRACT + (index + 1), Boolean.valueOf(true).toString());										break;									case MemberActionInfo.PUSH_DOWN_ACTION:										arguments.put(ATTRIBUTE_PUSH + (index + 1), Boolean.valueOf(true).toString());										break;								}							}						}					}					String project= null;					final IType declaring= getDeclaringType();					final IJavaProject javaProject= declaring.getJavaProject();					if (javaProject != null)						project= javaProject.getElementName();					return new JavaRefactoringDescriptor(ID_PUSH_DOWN, project, fMembersToMove.length == 1 ? NLS.bind(RefactoringCoreMessages.PushDownRefactoring_descriptor_description_full, new String[] { JavaElementLabels.getElementLabel(fMembersToMove[0], JavaElementLabels.ALL_FULLY_QUALIFIED), JavaElementLabels.getElementLabel(declaring, JavaElementLabels.ALL_FULLY_QUALIFIED)}) : NLS.bind(RefactoringCoreMessages.PushDownRefactoring_descriptor_description, new String[] { JavaElementLabels.getElementLabel(declaring, JavaElementLabels.ALL_FULLY_QUALIFIED)}), getComment(), arguments, JavaRefactorings.JAR_IMPORTABLE | RefactoringDescriptor.STRUCTURAL_CHANGE | RefactoringDescriptor.MULTI_CHANGE);				}			};		} finally {			pm.done();			clearCaches();		}	}