new NLSSourceModifier(defaultSubstitution, substitutionPattern, substitutionPrefix);
new NLSSourceModifier(defaultSubstitution, substitutionPattern);
	public static Change create(			ICompilationUnit cu, 			NLSSubstitution[] subs, 			String defaultSubstitution,			String substitutionPattern, 			String substitutionPrefix, 			boolean willCreateAccessor, 			IPackageFragment accessorPackage,			String accessorClassName) throws CoreException {		NLSSourceModifier sourceModification= 		    new NLSSourceModifier(defaultSubstitution, substitutionPattern, substitutionPrefix);		String message= NLSMessages.getFormattedString("NLSRefactoring.externalize_strings", //$NON-NLS-1$			cu.getElementName());		TextChange change= new CompilationUnitChange(message, cu);		MultiTextEdit multiTextEdit= new MultiTextEdit();		change.setEdit(multiTextEdit);		if (willCreateAccessor) {			accessorClassName= sourceModification.createImportForAccessor(multiTextEdit, accessorClassName, accessorPackage, cu);		}				for (int i = 0; i < subs.length; i++) {            NLSSubstitution substitution = subs[i];            if (substitution.hasChanged()) {                if (substitution.getState() == NLSSubstitution.EXTERNALIZED) {                    if (substitution.getOldState() == NLSSubstitution.INTERNALIZED) {                         sourceModification.addNLS(substitution, change, accessorClassName, substitutionPrefix);                    } else if (substitution.getOldState() == NLSSubstitution.IGNORED) {                        sourceModification.addAccessor(substitution, change, accessorClassName, substitutionPrefix);                                      }                } else if (substitution.getState() == NLSSubstitution.INTERNALIZED) {                    if (substitution.getOldState() == NLSSubstitution.IGNORED) {                        sourceModification.deleteTag(substitution, change);                    } else if (substitution.getOldState() == NLSSubstitution.EXTERNALIZED) {                        sourceModification.deleteAccessor(substitution, change);                        sourceModification.deleteTag(substitution, change);                    }                } else if (substitution.getState() == NLSSubstitution.IGNORED) {                    if (substitution.getOldState() == NLSSubstitution.INTERNALIZED) {                        sourceModification.addNLS(substitution, change, accessorClassName, substitutionPrefix);                                            } else if (substitution.getOldState() == NLSSubstitution.EXTERNALIZED) {                        sourceModification.deleteAccessor(substitution, change);                    }                                    }            }        }   		return change;	}