###############################################################################
# Copyright (c) 2005, 2017 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
#     Stephan Herrmann <stephan@cs.tu-berlin.de> - [quick fix] Add quick fixes for null annotations - https://bugs.eclipse.org/337977
###############################################################################
StringMultiFix_AddMissingNonNls_description=Add missing '$NON-NLS$' tags
StringMultiFix_RemoveUnnecessaryNonNls_description=Remove unnecessary '$NON-NLS$' tags

UnusedCodeMultiFix_RemoveUnusedVariable_description=Remove unused local variables
UnusedCodeMultiFix_RemoveUnusedField_description=Remove unused private fields
UnusedCodeMultiFix_RemoveUnusedType_description=Remove unused private types
UnusedCodeCleanUp_RemoveUnusedCasts_description=Remove unnecessary casts
UnusedCodeMultiFix_RemoveUnusedConstructor_description=Remove unused private constructors
UnusedCodeMultiFix_RemoveUnusedMethod_description=Remove unused private methods
UnusedCodeMultiFix_RemoveUnusedImport_description=Remove unused imports
 
CodeStyleMultiFix_ChangeNonStaticAccess_description=Change non static accesses to static members using declaring type
ControlStatementsCleanUp_RemoveUnnecessaryBlocks_description=Remove unnecessary blocks
ControlStatementsCleanUp_RemoveUnnecessaryBlocksWithReturnOrThrow_description=Convert control statement bodies to block except for single return or throw statement

UnimplementedCodeCleanUp_AddUnimplementedMethods_description=Add unimplemented methods
UnimplementedCodeCleanUp_MakeAbstract_description=Make classes abstract

CodeStyleMultiFix_ChangeIndirectAccessToStaticToDirect=Change indirect accesses to static members to direct accesses (accesses through subtypes)
CodeStyleCleanUp_addDefaultSerialVersionId_description=Add missing serial version ID (default 1L)
CodeFormatFix_RemoveTrailingWhitespace_changeDescription=Remove trailing whitespace
CodeFormatCleanUp_RemoveTrailingNoEmpty_description=Remove trailing white spaces on non empty lines
CodeStyleCleanUp_QualifyNonStaticMethod_description=Add 'this' qualifier to unqualified method accesses
CodeStyleCleanUp_QualifyStaticMethod_description=Qualify accesses to static methods with declaring class
CodeStyleMultiFix_AddThisQualifier_description=Add 'this' qualifier to unqualified field accesses
CodeFormatCleanUp_RemoveTrailingAll_description=Remove trailing white spaces on all lines
CodeFormatCleanUp_correctIndentation_description=Correct indentation
CodeFormatFix_correctIndentation_changeGroupLabel=Correct indentation
CodeStyleMultiFix_QualifyAccessToStaticField=Qualify accesses to static fields with declaring class
CodeStyleCleanUp_removeFieldThis_description=Remove 'this' qualifier for non static field accesses
CodeStyleCleanUp_removeMethodThis_description=Remove 'this' qualifier for non static method accesses
CodeStyleMultiFix_ConvertSingleStatementInControlBodeyToBlock_description=Convert control statement bodies to block

Java50MultiFix_AddMissingDeprecated_description=Add missing '@Deprecated' annotations
Java50CleanUp_ConvertToEnhancedForLoop_description=Convert 'for' loops to enhanced 'for' loops
Java50CleanUp_AddTypeParameters_description=Add type arguments to raw type references
Java50MultiFix_AddMissingOverride_description=Add missing '@Override' annotations
Java50MultiFix_AddMissingOverride_description2=Add missing '@Override' annotations to implementations of interface methods
SerialVersionCleanUp_Generated_description=Add missing serial version ID (generated)

CleanUpRefactoringWizard_unknownProfile_Name=Unknown
CleanUpRefactoringWizard_use_configured_radio=&Use configured profiles
CleanUpRefactoringWizard_EmptySelection_message=Select at least one clean up.
CleanUpRefactoringWizard_Project_TableHeader=Project
CleanUpRefactoringWizard_Profile_TableHeader=Profile
CleanUpRefactoringWizard_Configure_Button=Confi&gure...
CleanUpRefactoringWizard_use_custom_radio=Use custom &profile
CleanUpRefactoringWizard_HideWizard_Link=Go to the <a>Clean Up</a> preference page to hide this wizard in the future
CleanUpRefactoringWizard_CleaningUp11_Title=Cleaning up 1 file in 1 project
CleanUpRefactoringWizard_CleaningUpN1_Title=Cleaning up {0} files in 1 project
CleanUpRefactoringWizard_CleaningUpNN_Title=Cleaning up {0} files in {1} projects
CleanUpRefactoringWizard_formatterException_errorMessage=The formatter threw an unhandled exception while formatting the preview.
CleanUpRefactoringWizard_WindowTitle=Clean Up
CleanUpRefactoringWizard_PageTitle=Clean Up
ExpressionsCleanUp_addParanoiac_description=Put expressions in parentheses
ExpressionsCleanUp_removeUnnecessary_description=Remove unnecessary parentheses
VariableDeclarationCleanUp_AddFinalField_description=Add final modifier to private fields
VariableDeclarationCleanUp_AddFinalParameters_description=Add final modifier to method parameters
VariableDeclarationCleanUp_AddFinalLocals_description=Add final modifier to local variables

CleanUpRefactoringWizard_CleanUpConfigurationPage_title=Clean Up Configuration
CleanUpRefactoringWizard_UnmanagedProfileWithName_Name=Unmanaged profile ''{0}''
CleanUpRefactoringWizard_ConfigureCustomProfile_button=Confi&gure...
CleanUpRefactoringWizard_XofYCleanUpsSelected_message={0} of {1} clean ups selected
CleanUpRefactoringWizard_CustomCleanUpsDialog_title=Custom Clean Ups

CodeFormatFix_description=Format code
CodeFormatCleanUp_description=Format source code
ImportsCleanUp_OrganizeImports_Description=Organize imports
LambdaExpressionsCleanUp_use_lambda_where_possible=Use lambda where possible
LambdaExpressionsCleanUp_use_anonymous=Use anonymous class creations
SortMembersCleanUp_AllMembers_description=Sort all members
SortMembersCleanUp_Excluding_description=Sort members excluding fields, enum constants, and initializers
SortMembersCleanUp_RemoveMarkersWarning0=The file ''{0}'' in project ''{1}'' contains markers which may be removed by Sort Members

NullAnnotationsCleanUp_add_nullable_annotation=Add missing @Nullable annotation
NullAnnotationsCleanUp_add_nonnull_annotation=Add missing @NonNull annotation
NullAnnotationsCleanUp_add_nonnullbydefault_annotation=Add missing @NonNullByDefault annotation
NullAnnotationsCleanUp_remove_redundant_nullness_annotation=Remove redundant nullness annotation
TypeParametersCleanUp_InsertInferredTypeArguments_description=Insert inferred type arguments
TypeParametersCleanUp_RemoveUnnecessaryTypeArguments_description=Remove redundant type arguments

RedundantModifiersCleanup_description = Remove redundant modifiers
