diff --git a/org.eclipse.jface.text.tests/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.jface.text.tests/.settings/org.eclipse.jdt.ui.prefs
index b73bfac..d4e2e6f 100644
--- a/org.eclipse.jface.text.tests/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.jface.text.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -1,4 +1,5 @@
 eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
 formatter_profile=_JDT UI Code Style Conventions
 formatter_settings_version=12
 org.eclipse.jdt.ui.exception.name=e
@@ -9,3 +10,69 @@
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.overrideannotation=true
 org.eclipse.jdt.ui.staticondemandthreshold=99
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=true
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.number_suffix=false
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.push_down_negation=false
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=true
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_array_creation=true
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.simplify_lambda_expression_and_method_ref=false
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_autoboxing=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_directly_map_method=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_unboxing=false
diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/ContextInformationTest.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/ContextInformationTest.java
index d5c2f2e..f1ce338 100644
--- a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/ContextInformationTest.java
+++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/ContextInformationTest.java
@@ -95,7 +95,7 @@
 	@Test
 	public void testContextInfo_hide_focusOut() throws Exception {
 		assumeFalse("Test fails on Mac: Bug 558989", Platform.OS_MACOSX.equals(Platform.getOS()));
-		
+
 		setupSourceViewer(createBarContentAssist(), BarContentAssistProcessor.PROPOSAL);
 
 		final List<Shell> beforeShells = getCurrentShells();
diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/FilteringAsyncContentAssistTests.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/FilteringAsyncContentAssistTests.java
index 836cfd3..405b41c 100644
--- a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/FilteringAsyncContentAssistTests.java
+++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/contentassist/FilteringAsyncContentAssistTests.java
@@ -313,45 +313,45 @@
 		filteredProposals = getFilteredProposals(ca, p -> p instanceof IncompleteCompletionProposal);
 		assertTrue(filteredProposals == null || filteredProposals.isEmpty());
 	}
-	
+
 	@Test
 	public void testProposalValidation() throws Exception {
 		IDocument document= viewer.getDocument();
 
 		BlockingProcessor processor= new BlockingProcessor("abcd()");
 		ca.addContentAssistProcessor(processor, IDocument.DEFAULT_CONTENT_TYPE);
-		
+
 		ca.install(viewer);
-		
+
 		viewer.setSelectedRange(0, 0);
-		
+
 		ca.showPossibleCompletions();
 		DisplayHelper.sleep(shell.getDisplay(), 50);
-		
+
 		new InsertEdit(0, "a").apply(document);
 		viewer.setSelectedRange(1, 0);
 		new InsertEdit(1, "b").apply(document);
 		viewer.setSelectedRange(2, 0);
-		
+
 		processor.blocked.countDown();
 		DisplayHelper.sleep(shell.getDisplay(), 100);
-		
+
 		new InsertEdit(2, "c").apply(document);
 		viewer.setSelectedRange(3, 0);
 		new InsertEdit(3, "d").apply(document);
 		viewer.setSelectedRange(4, 0);
 
 		DisplayHelper.sleep(shell.getDisplay(), 100);
-		
+
 		List<ICompletionProposal> filteredProposals= getFilteredProposals(ca,
 				p -> p instanceof CompletionProposal);
 		assertTrue(filteredProposals != null);
 		assertEquals(1, filteredProposals.size());
-		
+
 		filteredProposals.get(0).apply(document);
-		
+
 		assertEquals("abcd()", document.get());
-		
+
 	}
 
 	private class ImmediateContentAssistProcessor implements IContentAssistProcessor {
@@ -449,7 +449,7 @@
 			return completionProposals;
 		}
 	}
-	
+
 	private class BlockingProcessor extends ImmediateContentAssistProcessor {
 
 		final CountDownLatch blocked= new CountDownLatch(1);
