/*******************************************************************************
 * Copyright (c) 2000, 2012 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     Benjamin Muskalla <b.muskalla@gmx.net> - [quick fix] Quick fix for missing synchronized modifier - https://bugs.eclipse.org/bugs/show_bug.cgi?id=245250
 *******************************************************************************/
package org.eclipse.jdt.internal.ui.text.correction;

import org.eclipse.osgi.util.NLS;

/**
 * Helper class to get NLSed messages.
 */
public final class CorrectionMessages extends NLS {

	private static final String BUNDLE_NAME= CorrectionMessages.class.getName();

	private CorrectionMessages() {
		// Do not instantiate
	}

	public static String FixCorrectionProposal_WarningAdditionalProposalInfo;
	public static String JavadocTagsSubProcessor_document_exception_description;
	public static String JavadocTagsSubProcessor_document_parameter_description;
	public static String LocalCorrectionsSubProcessor_renaming_duplicate_method;
	public static String LocalCorrectionsSubProcessor_replacefieldaccesswithmethod_description;
	public static String ModifierCorrectionSubProcessor_addstatic_description;
	public static String ModifierCorrectionSubProcessor_addstatictoparenttype_description;
	public static String ModifierCorrectionSubProcessor_addsynchronized_description;
	public static String ModifierCorrectionSubProcessor_changefieldmodifiertononstatic_description;
	public static String ModifierCorrectionSubProcessor_changemodifiertostaticfinal_description;
	public static String ModifierCorrectionSubProcessor_overrides_deprecated_description;
	public static String ModifierCorrectionSubProcessor_remove_override;
	public static String ModifierCorrectionSubProcessor_removefinal_description;
	public static String ModifierCorrectionSubProcessor_removevolatile_description;
	public static String QuickAssistProcessor_convert_anonym_to_nested;
	public static String QuickAssistProcessor_convert_local_to_field_description;
	public static String QuickAssistProcessor_convert_to_indexed_for_loop;
	public static String QuickAssistProcessor_convert_to_iterator_for_loop;
	public static String QuickAssistProcessor_convert_to_message_format;
	public static String QuickAssistProcessor_convert_to_multiple_singletype_catch_blocks;
	public static String QuickAssistProcessor_convert_to_single_multicatch_block;
	public static String QuickAssistProcessor_convert_to_string_buffer_description;
	public static String QuickAssistProcessor_exceptiontothrows_description;
	public static String QuickAssistProcessor_extract_to_constant_description;
	public static String QuickAssistProcessor_infer_diamond_description;
	public static String QuickAssistProcessor_inline_local_description;
	public static String QuickAssistProcessor_name_extension_from_class;
	public static String QuickAssistProcessor_name_extension_from_interface;
	public static String SerialVersionHashOperation_computing_id;
	public static String SerialVersionHashOperation_error_classnotfound;
	public static String SerialVersionHashOperation_save_caption;
	public static String SerialVersionHashOperation_save_message;
	public static String SerialVersionDefaultProposal_message_default_info;
	public static String SerialVersionHashProposal_message_generated_info;
	public static String SerialVersionHashOperation_dialog_error_caption;
	public static String SerialVersionHashOperation_dialog_error_message;
	public static String CorrectPackageDeclarationProposal_name;
	public static String CorrectPackageDeclarationProposal_remove_description;
	public static String CorrectPackageDeclarationProposal_add_description;
	public static String CorrectPackageDeclarationProposal_change_description;

	public static String ChangeCorrectionProposal_error_title;
	public static String ChangeCorrectionProposal_error_message;
	public static String ChangeCorrectionProposal_name_with_shortcut;
	public static String CUCorrectionProposal_error_title;
	public static String CUCorrectionProposal_error_message;
	public static String ReorgCorrectionsSubProcessor_renametype_description;
	public static String ReorgCorrectionsSubProcessor_renamecu_description;
	public static String ReorgCorrectionsSubProcessor_movecu_default_description;
	public static String ReorgCorrectionsSubProcessor_movecu_description;
	public static String ReorgCorrectionsSubProcessor_organizeimports_description;
	public static String ReorgCorrectionsSubProcessor_addcp_project_description;
	public static String ReorgCorrectionsSubProcessor_addcp_archive_description;
	public static String ReorgCorrectionsSubProcessor_addcp_classfolder_description;
	public static String ReorgCorrectionsSubProcessor_change_project_compliance_description;
	public static String ReorgCorrectionsSubProcessor_change_workspace_compliance_description;
	public static String ReorgCorrectionsSubProcessor_addcp_variable_description;
	public static String ReorgCorrectionsSubProcessor_addcp_library_description;
	public static String LocalCorrectionsSubProcessor_surroundwith_trycatch_description;
	public static String LocalCorrectionsSubProcessor_surroundwith_trymulticatch_description;
	public static String LocalCorrectionsSubProcessor_add_default_case_description;
	public static String LocalCorrectionsSubProcessor_add_missing_cases_description;
	public static String LocalCorrectionsSubProcessor_addthrows_description;
	public static String ClasspathFixProcessorDescriptor_error_processing_processors;
	public static String LocalCorrectionsSubProcessor_addadditionalcatch_description;
	public static String LocalCorrectionsSubProcessor_addadditionalmulticatch_description;
	public static String LocalCorrectionsSubProcessor_addexceptiontoexistingcatch_description;
	public static String LocalCorrectionsSubProcessor_addexceptionstoexistingcatch_description;
	public static String LocalCorrectionsSubProcessor_unnecessaryinstanceof_description;
	public static String LocalCorrectionsSubProcessor_unnecessarythrow_description;
	public static String LocalCorrectionsSubProcessor_classtointerface_description;
	public static String LocalCorrectionsSubProcessor_externalizestrings_description;
	public static String LocalCorrectionsSubProcessor_extendstoimplements_description;
	public static String LocalCorrectionsSubProcessor_setparenteses_bitop_description;
	public static String LocalCorrectionsSubProcessor_uninitializedvariable_description;
	public static String LocalCorrectionsSubProcessor_removesemicolon_description;
	public static String LocalCorrectionsSubProcessor_removeunreachablecode_description;
	public static String LocalCorrectionsSubProcessor_removeunreachablecode_including_condition_description;
	public static String LocalCorrectionsSubProcessor_removeelse_description;
	public static String LocalCorrectionsSubProcessor_hiding_local_label;
	public static String LocalCorrectionsSubProcessor_hiding_field_label;
	public static String LocalCorrectionsSubProcessor_rename_var_label;
	public static String LocalCorrectionsSubProcessor_hiding_argument_label;
	public static String LocalCorrectionsSubProcessor_setparenteses_description;
	public static String LocalCorrectionsSubProcessor_setparenteses_instanceof_description;
	public static String LocalCorrectionsSubProcessor_InferGenericTypeArguments;
	public static String LocalCorrectionsSubProcessor_InferGenericTypeArguments_description;
	public static String TypeMismatchSubProcessor_addcast_description;
	public static String TypeMismatchSubProcessor_changecast_description;
	public static String TypeMismatchSubProcessor_changereturntype_description;
	public static String TypeMismatchSubProcessor_changereturnofoverridden_description;
	public static String TypeMismatchSubProcessor_changereturnofimplemented_description;
	public static String TypeMismatchSubProcessor_removeexceptions_description;
	public static String TypeMismatchSubProcessor_addexceptions_description;
	public static String TypeMismatchSubProcessor_incompatible_for_each_type_description;
	public static String TypeMismatchSubProcessor_insertnullcheck_description;
	public static String RemoveDeclarationCorrectionProposal_removeunusedfield_description;
	public static String RemoveDeclarationCorrectionProposal_removeunusedmethod_description;
	public static String RemoveDeclarationCorrectionProposal_removeunusedconstructor_description;
	public static String RemoveDeclarationCorrectionProposal_removeunusedtype_description;
	public static String RemoveDeclarationCorrectionProposal_removeunusedvar_description;
	public static String RenameRefactoringProposal_additionalInfo;
	public static String RenameRefactoringProposal_name;
	public static String ModifierCorrectionSubProcessor_changemodifiertostatic_description;
	public static String ModifierCorrectionSubProcessor_changemodifiertononstatic_description;
	public static String ModifierCorrectionSubProcessor_changemodifiertofinal_description;
	public static String ModifierCorrectionSubProcessor_changemodifiertononfinal_description;
	public static String ModifierCorrectionSubProcessor_changevisibility_description;
	public static String ModifierCorrectionSubProcessor_removeabstract_description;
	public static String ModifierCorrectionSubProcessor_removebody_description;
	public static String ModifierCorrectionSubProcessor_default;
	public static String ModifierCorrectionSubProcessor_addabstract_description;
	public static String ModifierCorrectionSubProcessor_removenative_description;
	public static String ModifierCorrectionSubProcessor_addmissingbody_description;
	public static String ModifierCorrectionSubProcessor_setmethodabstract_description;
	public static String ModifierCorrectionSubProcessor_changemethodtononfinal_description;
	public static String ModifierCorrectionSubProcessor_changeoverriddenvisibility_description;
	public static String ModifierCorrectionSubProcessor_changemethodvisibility_description;
	public static String ModifierCorrectionSubProcessor_changemethodtononstatic_description;
	public static String ModifierCorrectionSubProcessor_removeinvalidmodifiers_description;
	public static String ReturnTypeSubProcessor_constrnamemethod_description;
	public static String ReturnTypeSubProcessor_voidmethodreturns_description;
	public static String ReturnTypeSubProcessor_removereturn_description;
	public static String ReturnTypeSubProcessor_missingreturntype_description;
	public static String ReturnTypeSubProcessor_wrongconstructorname_description;
	public static String ReturnTypeSubProcessor_changetovoid_description;
	public static String MissingReturnTypeCorrectionProposal_addreturnstatement_description;
	public static String MissingReturnTypeCorrectionProposal_changereturnstatement_description;
	public static String TypeArgumentMismatchSubProcessor_removeTypeArguments;
	public static String UnimplementedMethodsCorrectionProposal_description;
	public static String UnimplementedMethodsCorrectionProposal_enum_info;
	public static String UnimplementedMethodsCorrectionProposal_info_singular;
	public static String UnimplementedMethodsCorrectionProposal_info_plural;

	public static String UnimplementedCodeFix_DependenciesErrorMessage;
	public static String UnimplementedCodeFix_DependenciesStatusMessage;
	public static String UnimplementedCodeFix_MakeAbstractFix_label;
	public static String UnimplementedCodeFix_TextEditGroup_label;

	public static String UnresolvedElementsSubProcessor_swaparguments_description;
	public static String UnresolvedElementsSubProcessor_add_annotation_bundle_description;
	public static String UnresolvedElementsSubProcessor_add_annotation_bundle_info;
	public static String UnresolvedElementsSubProcessor_add_static_import_description;
	public static String UnresolvedElementsSubProcessor_addargumentcast_description;
	public static String UnresolvedElementsSubProcessor_changemethod_description;
	public static String UnresolvedElementsSubProcessor_changetoouter_description;
	public static String UnresolvedElementsSubProcessor_changetomethod_description;
	public static String UnresolvedElementsSubProcessor_createmethod_description;
	public static String UnresolvedElementsSubProcessor_createmethod_other_description;
	public static String UnresolvedElementsSubProcessor_createconstructor_description;
	public static String UnresolvedElementsSubProcessor_changetype_description;
	public static String UnresolvedElementsSubProcessor_changetype_nopack_description;
	public static String UnresolvedElementsSubProcessor_importtype_description;
	public static String UnresolvedElementsSubProcessor_changevariable_description;
	public static String UnresolvedElementsSubProcessor_createfield_description;
	public static String UnresolvedElementsSubProcessor_createfield_other_description;
	public static String UnresolvedElementsSubProcessor_createlocal_description;
	public static String UnresolvedElementsSubProcessor_createparameter_description;
	public static String UnresolvedElementsSubProcessor_createconst_description;
	public static String UnresolvedElementsSubProcessor_createenum_description;
	public static String UnresolvedElementsSubProcessor_createconst_other_description;
	public static String UnresolvedElementsSubProcessor_removestatement_description;
	public static String UnresolvedElementsSubProcessor_changeparamsignature_description;
	public static String UnresolvedElementsSubProcessor_changemethodtargetcast_description;
	public static String UnresolvedElementsSubProcessor_changeparamsignature_constr_description;
	public static String UnresolvedElementsSubProcessor_swapparams_description;
	public static String UnresolvedElementsSubProcessor_swapparams_constr_description;
	public static String UnresolvedElementsSubProcessor_removeparam_description;
	public static String UnresolvedElementsSubProcessor_removeparams_description;
	public static String UnresolvedElementsSubProcessor_removeparam_constr_description;
	public static String UnresolvedElementsSubProcessor_removeparams_constr_description;
	public static String UnresolvedElementsSubProcessor_addargument_description;
	public static String UnresolvedElementsSubProcessor_addarguments_description;
	public static String UnresolvedElementsSubProcessor_removeargument_description;
	public static String UnresolvedElementsSubProcessor_removearguments_description;
	public static String UnresolvedElementsSubProcessor_addparam_description;
	public static String UnresolvedElementsSubProcessor_addparams_description;
	public static String UnresolvedElementsSubProcessor_addparam_constr_description;
	public static String UnresolvedElementsSubProcessor_addparams_constr_description;
	public static String UnresolvedElementsSubProcessor_importexplicit_description;
	public static String UnresolvedElementsSubProcessor_missingcastbrackets_description;
	public static String UnresolvedElementsSubProcessor_methodtargetcast2_description;
	public static String UnresolvedElementsSubProcessor_changemethodtargetcast2_description;
	public static String UnresolvedElementsSubProcessor_methodtargetcast_description;
	public static String UnresolvedElementsSubProcessor_arraychangetomethod_description;
	public static String UnresolvedElementsSubProcessor_arraychangetolength_description;
	public static String UnresolvedElementsSubProcessor_addnewkeyword_description;
	public static String JavadocTagsSubProcessor_addjavadoc_method_description;
	public static String JavadocTagsSubProcessor_addjavadoc_type_description;
	public static String JavadocTagsSubProcessor_addjavadoc_field_description;
	public static String JavadocTagsSubProcessor_addjavadoc_paramtag_description;
	public static String JavadocTagsSubProcessor_addjavadoc_throwstag_description;
	public static String JavadocTagsSubProcessor_addjavadoc_returntag_description;
	public static String JavadocTagsSubProcessor_addjavadoc_enumconst_description;
	public static String JavadocTagsSubProcessor_addjavadoc_allmissing_description;
	public static String JavadocTagsSubProcessor_qualifylinktoinner_description;
	public static String JavadocTagsSubProcessor_removetag_description;
	public static String NoCorrectionProposal_description;
	public static String MarkerResolutionProposal_additionaldesc;
	public static String NewCUCompletionUsingWizardProposal_createclass_description;
	public static String NewCUCompletionUsingWizardProposal_createenum_description;
	public static String NewCUCompletionUsingWizardProposal_createclass_inpackage_description;
	public static String NewCUCompletionUsingWizardProposal_createinnerclass_description;
	public static String NewCUCompletionUsingWizardProposal_createinnerenum_description;
	public static String NewCUCompletionUsingWizardProposal_createannotation_description;
	public static String NewCUCompletionUsingWizardProposal_createinnerclass_intype_description;
	public static String NewCUCompletionUsingWizardProposal_createinnerenum_intype_description;
	public static String NewCUCompletionUsingWizardProposal_createinterface_description;
	public static String NewCUCompletionUsingWizardProposal_createinterface_inpackage_description;
	public static String NewCUCompletionUsingWizardProposal_createinnerinterface_description;
	public static String NewCUCompletionUsingWizardProposal_createenum_inpackage_description;
	public static String NewCUCompletionUsingWizardProposal_createinnerannotation_description;
	public static String NewCUCompletionUsingWizardProposal_createinnerinterface_intype_description;
	public static String NewCUCompletionUsingWizardProposal_createinnerannotation_intype_description;
	public static String NewCUCompletionUsingWizardProposal_createannotation_inpackage_description;
	public static String NewCUCompletionUsingWizardProposal_createclass_info;
	public static String NewCUCompletionUsingWizardProposal_createenum_info;
	public static String NewCUCompletionUsingWizardProposal_createinterface_info;
	public static String NewCUCompletionUsingWizardProposal_createannotation_info;
	public static String ConstructorFromSuperclassProposal_description;
	public static String AssignToVariableAssistProposal_assigntolocal_description;
	public static String AssignToVariableAssistProposal_assigntofield_description;
	public static String AssignToVariableAssistProposal_assignparamtofield_description;
	public static String QuickAssistProcessor_catchclausetothrows_description;
	public static String QuickAssistProcessor_removecatchclause_description;
	public static String QuickAssistProcessor_removeexception_description;
	public static String QuickAssistProcessor_unwrap_ifstatement;
	public static String QuickAssistProcessor_unwrap_whilestatement;
	public static String QuickAssistProcessor_unwrap_forstatement;
	public static String QuickAssistProcessor_unwrap_dostatement;
	public static String QuickAssistProcessor_unwrap_trystatement;
	public static String QuickAssistProcessor_unwrap_anonymous;
	public static String QuickAssistProcessor_unwrap_block;
	public static String QuickAssistProcessor_unwrap_labeledstatement;
	public static String QuickAssistProcessor_unwrap_methodinvocation;
	public static String QuickAssistProcessor_unwrap_synchronizedstatement;
	public static String QuickAssistProcessor_splitdeclaration_description;
	public static String QuickAssistProcessor_joindeclaration_description;
	public static String QuickAssistProcessor_addfinallyblock_description;
	public static String QuickAssistProcessor_addelseblock_description;
	public static String QuickAssistProcessor_replacethenwithblock_description;
	public static String QuickAssistProcessor_replaceelsewithblock_description;
	public static String QuickAssistProcessor_replacethenelsewithblock_description;
	public static String QuickAssistProcessor_replacebodywithblock_description;
	public static String QuickAssistProcessor_invertequals_description;
	public static String QuickAssistProcessor_typetoarrayInitializer_description;
	public static String QuickAssistProcessor_createmethodinsuper_description;
	public static String LinkedNamesAssistProposal_proposalinfo;
	public static String LinkedNamesAssistProposal_description;
	public static String QuickTemplateProcessor_surround_label;
	public static String NewCUCompletionUsingWizardProposal_dialogtitle;
	public static String NewCUCompletionUsingWizardProposal_tooltip_enclosingtype;
	public static String NewCUCompletionUsingWizardProposal_tooltip_package;

	public static String JavaCorrectionProcessor_addquote_description;
	public static String JavaCorrectionProcessor_error_quickfix_message;
	public static String JavaCorrectionProcessor_error_status;
	public static String JavaCorrectionProcessor_error_quickassist_message;
	public static String JavaCorrectionProcessor_go_to_closest_using_menu;
	public static String JavaCorrectionProcessor_go_to_closest_using_key;
	public static String JavaCorrectionProcessor_go_to_original_using_menu;
	public static String JavaCorrectionProcessor_go_to_original_using_key;

	public static String TaskMarkerProposal_description;
	public static String TypeChangeCompletionProposal_field_name;
	public static String TypeChangeCompletionProposal_variable_name;
	public static String TypeChangeCompletionProposal_param_name;
	public static String TypeChangeCompletionProposal_method_name;
	public static String ImplementInterfaceProposal_name;
	public static String AddUnimplementedMethodsOperation_AddMissingMethod_group;
	public static String AdvancedQuickAssistProcessor_convertToIfElse_description;
	public static String AdvancedQuickAssistProcessor_inverseIf_description;
	public static String AdvancedQuickAssistProcessor_inverseBooleanVariable;
	public static String AdvancedQuickAssistProcessor_castAndAssign;
	public static String AdvancedQuickAssistProcessor_pullNegationUp;
	public static String AdvancedQuickAssistProcessor_joinIfSequence;
	public static String AdvancedQuickAssistProcessor_pickSelectedString;
	public static String AdvancedQuickAssistProcessor_negatedVariableName;
	public static String AdvancedQuickAssistProcessor_pushNegationDown;
	public static String AdvancedQuickAssistProcessor_putConditionalExpressionInParentheses;
	public static String AdvancedQuickAssistProcessor_convertSwitchToIf;
	public static String AdvancedQuickAssistProcessor_convertIfElseToSwitch;
	public static String AdvancedQuickAssistProcessor_inverseIfContinue_description;
	public static String AdvancedQuickAssistProcessor_inverseIfToContinue_description;
	public static String AdvancedQuickAssistProcessor_exchangeInnerAndOuterIfConditions_description;
	public static String AdvancedQuickAssistProcessor_inverseConditions_description;
	public static String AdvancedQuickAssistProcessor_inverseConditionalExpression_description;
	public static String AdvancedQuickAssistProcessor_replaceIfWithConditional;
	public static String AdvancedQuickAssistProcessor_replaceConditionalWithIf;
	public static String AdvancedQuickAssistProcessor_joinWithOuter_description;
	public static String AdvancedQuickAssistProcessor_joinWithInner_description;
	public static String AdvancedQuickAssistProcessor_splitAndCondition_description;
	public static String AdvancedQuickAssistProcessor_joinWithOr_description;
	public static String AdvancedQuickAssistProcessor_splitOrCondition_description;
	public static String AdvancedQuickAssistProcessor_exchangeOperands_description;
	public static String AddTypeParameterProposal_method_label;
	public static String AddTypeParameterProposal_type_label;

	static {
		NLS.initializeMessages(BUNDLE_NAME, CorrectionMessages.class);
	}

	public static String LocalCorrectionsSubProcessor_externalizestrings_additional_info;
	public static String LocalCorrectionsSubProcessor_generate_hashCode_equals_additional_info;
	public static String LocalCorrectionsSubProcessor_generate_hashCode_equals_description;
	public static String AssignToVariableAssistProposal_assigntoexistingfield_description;
	public static String ReorgCorrectionsSubProcessor_50_compliance_operation;
	public static String ReorgCorrectionsSubProcessor_no_required_jre_title;
	public static String ReorgCorrectionsSubProcessor_no_required_jre_message;
	public static String ReorgCorrectionsSubProcessor_required_compliance_changeworkspace_description;
	public static String ReorgCorrectionsSubProcessor_required_compliance_changeproject_description;
	public static String GetterSetterCorrectionSubProcessor_creategetterunsingencapsulatefield_description;
	public static String GetterSetterCorrectionSubProcessor_encapsulate_field_error_message;
	public static String GetterSetterCorrectionSubProcessor_additional_info;
	public static String GetterSetterCorrectionSubProcessor_encapsulate_field_error_title;
	public static String GetterSetterCorrectionSubProcessor_replacewithgetter_description;
	public static String GetterSetterCorrectionSubProcessor_replacewithsetter_description;
	public static String ReorgCorrectionsSubProcessor_50_compliance_changeProjectJREToDefault_description;
	public static String ReorgCorrectionsSubProcessor_50_compliance_changeWorkspaceJRE_description;
	public static String ReorgCorrectionsSubProcessor_50_compliance_changeProjectJRE_description;
	public static String ModifierCorrectionSubProcessor_default_visibility_label;
	public static String UnresolvedElementsSubProcessor_change_to_static_import_description;
	public static String ReorgCorrectionsSubProcessor_configure_buildpath_label;
	public static String ReorgCorrectionsSubProcessor_configure_buildpath_description;
	public static String QuickAssistProcessor_extract_to_local_all_description;
	public static String QuickAssistProcessor_extract_to_local_description;
	public static String QuickAssistProcessor_extractmethod_description;
	public static String QuickAssistProcessor_move_exception_to_separate_catch_block;
	public static String QuickAssistProcessor_move_exceptions_to_separate_catch_block;
	public static String SuppressWarningsSubProcessor_suppress_warnings_label;
	public static String ReorgCorrectionsSubProcessor_accessrules_description;
	public static String ReorgCorrectionsSubProcessor_project_seup_fix_description;
	public static String ReorgCorrectionsSubProcessor_project_seup_fix_info;
	public static String UnresolvedElementsSubProcessor_change_full_type_description;
	public static String UnresolvedElementsSubProcessor_copy_annotation_jar_description;
	public static String UnresolvedElementsSubProcessor_copy_annotation_jar_info;
	public static String LocalCorrectionsSubProcessor_remove_allocated_description;
	public static String LocalCorrectionsSubProcessor_remove_redundant_superinterface;
	public static String LocalCorrectionsSubProcessor_remove_type_arguments;
	public static String LocalCorrectionsSubProcessor_return_allocated_description;
	public static String LocalCorrectionsSubProcessor_qualify_left_hand_side_description;
	public static String LocalCorrectionsSubProcessor_LocalCorrectionsSubProcessor_qualify_right_hand_side_description;
	public static String UnresolvedElementsSubProcessor_UnresolvedElementsSubProcessor_changetoattribute_description;
	public static String UnresolvedElementsSubProcessor_UnresolvedElementsSubProcessor_createattribute_description;
	public static String MissingAnnotationAttributesProposal_add_missing_attributes_label;
	public static String FixCorrectionProposal_ErrorAdditionalProposalInfo;
	public static String FixCorrectionProposal_MultiFixChange_label;
	public static String FixCorrectionProposal_HitCtrlEnter_description;
	public static String FixCorrectionProposal_hitCtrlEnter_variable_description;
	public static String LocalCorrectionsSubProcessor_insert_break_statement;
	public static String LocalCorrectionsSubProcessor_insert_cases_omitted;
	public static String LocalCorrectionsSubProcessor_insert_fall_through;
	public static String LocalCorrectionsSubProcessor_override_hashCode_description;
	public static String LocalCorrectionsSubProcessor_throw_allocated_description;
	public static String SuppressWarningsSubProcessor_fix_suppress_token_label;
	public static String SuppressWarningsSubProcessor_remove_annotation_label;
	public static String VarargsWarningsSubProcessor_add_safevarargs_label;
	public static String VarargsWarningsSubProcessor_add_safevarargs_to_method_label;
	public static String VarargsWarningsSubProcessor_remove_safevarargs_label;
}
