fSelfInitializing= true;
	public RefactoringStatus initialize(final RefactoringArguments arguments) {		if (arguments instanceof GenericRefactoringArguments) {			final GenericRefactoringArguments generic= (GenericRefactoringArguments) arguments;			final String selection= generic.getAttribute(ATTRIBUTE_SELECTION);			if (selection != null) {				int offset= -1;				int length= -1;				final StringTokenizer tokenizer= new StringTokenizer(selection);				if (tokenizer.hasMoreTokens())					offset= Integer.valueOf(tokenizer.nextToken()).intValue();				if (tokenizer.hasMoreTokens())					length= Integer.valueOf(tokenizer.nextToken()).intValue();				if (offset >= 0 && length >= 0) {					fSelectionStart= offset;					fSelectionLength= length;				} else					return RefactoringStatus.createFatalErrorStatus(NLS.bind(RefactoringCoreMessages.InitializableRefactoring_illegal_argument, new Object[] { selection, ATTRIBUTE_SELECTION}));			} else				return RefactoringStatus.createFatalErrorStatus(NLS.bind(RefactoringCoreMessages.InitializableRefactoring_argument_not_exist, ATTRIBUTE_SELECTION));			final String handle= generic.getAttribute(RefactoringDescriptor.INPUT);			if (handle != null) {				final IJavaElement element= JavaCore.create(handle);				if (element == null || !element.exists())					return RefactoringStatus.createFatalErrorStatus(NLS.bind(RefactoringCoreMessages.InitializableRefactoring_input_not_exists, ID_PROMOTE_TEMP));				else					fCu= (ICompilationUnit) element;			} else				return RefactoringStatus.createFatalErrorStatus(NLS.bind(RefactoringCoreMessages.InitializableRefactoring_argument_not_exist, RefactoringDescriptor.INPUT));			final String visibility= generic.getAttribute(ATTRIBUTE_VISIBILITY);			if (visibility != null && !"".equals(visibility)) {//$NON-NLS-1$				int flag= 0;				try {					flag= Integer.parseInt(visibility);				} catch (NumberFormatException exception) {					return RefactoringStatus.createFatalErrorStatus(NLS.bind(RefactoringCoreMessages.InitializableRefactoring_argument_not_exist, ATTRIBUTE_VISIBILITY));				}				fVisibility= flag;			}			final String initialize= generic.getAttribute(ATTRIBUTE_INITIALIZE);			if (initialize != null && !"".equals(initialize)) {//$NON-NLS-1$				int value= 0;				try {					value= Integer.parseInt(initialize);				} catch (NumberFormatException exception) {					return RefactoringStatus.createFatalErrorStatus(NLS.bind(RefactoringCoreMessages.InitializableRefactoring_argument_not_exist, ATTRIBUTE_INITIALIZE));				}				fInitializeIn= value;			}			final String name= generic.getAttribute(RefactoringDescriptor.NAME);			if (name != null && !"".equals(name)) //$NON-NLS-1$				fFieldName= name;			else				return RefactoringStatus.createFatalErrorStatus(NLS.bind(RefactoringCoreMessages.InitializableRefactoring_argument_not_exist, RefactoringDescriptor.NAME));			final String declareStatic= generic.getAttribute(ATTRIBUTE_STATIC);			if (declareStatic != null) {				fDeclareStatic= Boolean.valueOf(declareStatic).booleanValue();			} else				return RefactoringStatus.createFatalErrorStatus(NLS.bind(RefactoringCoreMessages.InitializableRefactoring_argument_not_exist, ATTRIBUTE_STATIC));			final String declareFinal= generic.getAttribute(ATTRIBUTE_FINAL);			if (declareFinal != null) {				fDeclareFinal= Boolean.valueOf(declareFinal).booleanValue();			} else				return RefactoringStatus.createFatalErrorStatus(NLS.bind(RefactoringCoreMessages.InitializableRefactoring_argument_not_exist, ATTRIBUTE_FINAL));		} else			return RefactoringStatus.createFatalErrorStatus(RefactoringCoreMessages.InitializableRefactoring_inacceptable_arguments);		return new RefactoringStatus();	}    