Bug 481272 - attempting to fix "display" of data.

This commit is admittedly an "experiment", trying to put back one case
of using underscore, instead of hypen. Will require new data and
database. 

diff --git a/bundles/org.eclipse.build.tools/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.build.tools/.settings/org.eclipse.jdt.core.prefs
index be69670..014d7f3 100644
--- a/bundles/org.eclipse.build.tools/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.build.tools/.settings/org.eclipse.jdt.core.prefs
@@ -161,6 +161,7 @@
 org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line_on_wrap
@@ -176,10 +177,10 @@
 org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
 org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
 org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.line_length=132
 org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
 org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true
 org.eclipse.jdt.core.formatter.compact_else_if=true
 org.eclipse.jdt.core.formatter.continuation_indentation=2
 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
@@ -197,7 +198,7 @@
 org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.indentation.size=2
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
@@ -206,8 +207,9 @@
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
@@ -253,6 +255,7 @@
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -330,6 +333,7 @@
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -384,14 +388,14 @@
 org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
 org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
 org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=132
+org.eclipse.jdt.core.formatter.lineSplit=256
 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
 org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
 org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
 org.eclipse.jdt.core.formatter.tabulation.char=space
-org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.tabulation.size=2
 org.eclipse.jdt.core.formatter.use_on_off_tags=false
 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
 org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
diff --git a/bundles/org.eclipse.releng.build.tools.comparator/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.releng.build.tools.comparator/.settings/org.eclipse.jdt.core.prefs
index 6586a1f..7a6c7de 100644
--- a/bundles/org.eclipse.releng.build.tools.comparator/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.releng.build.tools.comparator/.settings/org.eclipse.jdt.core.prefs
@@ -59,6 +59,7 @@
 org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line_on_wrap
@@ -74,10 +75,10 @@
 org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
 org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
 org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.line_length=132
 org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
 org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true
 org.eclipse.jdt.core.formatter.compact_else_if=true
 org.eclipse.jdt.core.formatter.continuation_indentation=2
 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
@@ -95,7 +96,7 @@
 org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.indentation.size=2
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
@@ -104,8 +105,9 @@
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
@@ -151,6 +153,7 @@
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -228,6 +231,7 @@
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -282,14 +286,14 @@
 org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
 org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
 org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=132
+org.eclipse.jdt.core.formatter.lineSplit=256
 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
 org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
 org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
 org.eclipse.jdt.core.formatter.tabulation.char=space
-org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.tabulation.size=2
 org.eclipse.jdt.core.formatter.use_on_off_tags=false
 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
 org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
diff --git a/bundles/org.eclipse.releng.build.tools.convert.application/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.releng.build.tools.convert.application/.settings/org.eclipse.jdt.core.prefs
index 6586a1f..7a6c7de 100644
--- a/bundles/org.eclipse.releng.build.tools.convert.application/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.releng.build.tools.convert.application/.settings/org.eclipse.jdt.core.prefs
@@ -59,6 +59,7 @@
 org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line_on_wrap
@@ -74,10 +75,10 @@
 org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
 org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
 org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.line_length=132
 org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
 org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true
 org.eclipse.jdt.core.formatter.compact_else_if=true
 org.eclipse.jdt.core.formatter.continuation_indentation=2
 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
@@ -95,7 +96,7 @@
 org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.indentation.size=2
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
@@ -104,8 +105,9 @@
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
@@ -151,6 +153,7 @@
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -228,6 +231,7 @@
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -282,14 +286,14 @@
 org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
 org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
 org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=132
+org.eclipse.jdt.core.formatter.lineSplit=256
 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
 org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
 org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
 org.eclipse.jdt.core.formatter.tabulation.char=space
-org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.tabulation.size=2
 org.eclipse.jdt.core.formatter.use_on_off_tags=false
 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
 org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
diff --git a/bundles/org.eclipse.releng.build.tools.convert/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.releng.build.tools.convert/.settings/org.eclipse.jdt.core.prefs
index da10cbc..f5b49f5 100644
--- a/bundles/org.eclipse.releng.build.tools.convert/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.releng.build.tools.convert/.settings/org.eclipse.jdt.core.prefs
@@ -151,6 +151,7 @@
 org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line_on_wrap
@@ -166,10 +167,10 @@
 org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
 org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
 org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.line_length=132
 org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
 org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true
 org.eclipse.jdt.core.formatter.compact_else_if=true
 org.eclipse.jdt.core.formatter.continuation_indentation=2
 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
@@ -187,7 +188,7 @@
 org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.indentation.size=2
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
@@ -196,8 +197,9 @@
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
@@ -243,6 +245,7 @@
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -320,6 +323,7 @@
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -374,14 +378,14 @@
 org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
 org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
 org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=132
+org.eclipse.jdt.core.formatter.lineSplit=256
 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
 org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
 org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
 org.eclipse.jdt.core.formatter.tabulation.char=space
-org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.tabulation.size=2
 org.eclipse.jdt.core.formatter.use_on_off_tags=false
 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
 org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
diff --git a/bundles/org.eclipse.test.performance.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.test.performance.ui/.settings/org.eclipse.jdt.core.prefs
index d4cf1ee..f90bc36 100644
--- a/bundles/org.eclipse.test.performance.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.test.performance.ui/.settings/org.eclipse.jdt.core.prefs
@@ -152,6 +152,7 @@
 org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
 org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line_on_wrap
@@ -167,10 +168,10 @@
 org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
 org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
 org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.line_length=132
 org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
 org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true
 org.eclipse.jdt.core.formatter.compact_else_if=true
 org.eclipse.jdt.core.formatter.continuation_indentation=2
 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
@@ -188,7 +189,7 @@
 org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.indentation.size=2
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
@@ -197,8 +198,9 @@
 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
@@ -244,6 +246,7 @@
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -321,6 +324,7 @@
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -375,16 +379,17 @@
 org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
 org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
 org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=132
+org.eclipse.jdt.core.formatter.lineSplit=256
 org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
 org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
 org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
 org.eclipse.jdt.core.formatter.tabulation.char=space
-org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.tabulation.size=2
 org.eclipse.jdt.core.formatter.use_on_off_tags=false
 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
 org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
 org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=false
 org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/bundles/org.eclipse.test.performance.ui/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.test.performance.ui/.settings/org.eclipse.jdt.ui.prefs
index 1739f43..75aabbe 100644
--- a/bundles/org.eclipse.test.performance.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/bundles/org.eclipse.test.performance.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -11,10 +11,12 @@
 cleanup.always_use_parentheses_in_expressions=true
 cleanup.always_use_this_for_non_static_field_access=false
 cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_functional_interfaces=false
 cleanup.convert_to_enhanced_for_loop=false
 cleanup.correct_indentation=true
 cleanup.format_source_code=true
 cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
 cleanup.make_local_variable_final=true
 cleanup.make_parameters_final=true
 cleanup.make_private_fields_final=true
@@ -29,6 +31,7 @@
 cleanup.qualify_static_member_accesses_with_declaring_class=true
 cleanup.qualify_static_method_accesses_with_declaring_class=false
 cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
 cleanup.remove_trailing_whitespaces=true
 cleanup.remove_trailing_whitespaces_all=true
 cleanup.remove_trailing_whitespaces_ignore_empty=false
@@ -42,13 +45,16 @@
 cleanup.remove_unused_private_types=true
 cleanup.sort_members=true
 cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
 cleanup.use_blocks=true
 cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
 cleanup.use_parentheses_in_expressions=true
 cleanup.use_this_for_non_static_field_access=true
 cleanup.use_this_for_non_static_field_access_only_if_necessary=true
 cleanup.use_this_for_non_static_method_access=true
 cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
 cleanup_profile=_Eclipse Releng
 cleanup_settings_version=2
 eclipse.preferences.version=1
@@ -63,4 +69,4 @@
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.overrideannotation=true
 org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\n * \n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\n * \n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/ConfigResults.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/ConfigResults.java
index a3de5ea..dcebb0d 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/ConfigResults.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/ConfigResults.java
@@ -15,6 +15,7 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+
 import org.eclipse.test.internal.performance.InternalDimensions;
 import org.eclipse.test.internal.performance.results.utils.Util;
 
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/DB_Results.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/DB_Results.java
index 101c2bb..a17f6ee 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/DB_Results.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/DB_Results.java
@@ -25,13 +25,13 @@
 import java.util.Map;
 import java.util.StringTokenizer;
 
+import org.eclipse.core.runtime.Assert;
 import org.eclipse.test.internal.performance.PerformanceTestPlugin;
 import org.eclipse.test.internal.performance.data.Dim;
 import org.eclipse.test.internal.performance.db.DB;
 import org.eclipse.test.internal.performance.results.utils.IPerformancesConstants;
 import org.eclipse.test.internal.performance.results.utils.Util;
 import org.eclipse.test.performance.Dimension;
-import org.eclipse.core.runtime.Assert;
 
 /**
  * Specific and private implementation of {@link org.eclipse.test.internal.performance.db.DB} class
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/PerformanceResults.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/PerformanceResults.java
index f689257..e9f47f7 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/PerformanceResults.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/PerformanceResults.java
@@ -20,7 +20,16 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/SQL_Results.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/SQL_Results.java
index a108ae8..a360207 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/SQL_Results.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/SQL_Results.java
@@ -187,7 +187,7 @@
 	// UTC? Location of previous performance machines? 
 	// But, should not be required, AFAIK. 
 	// Timestamp timestamp = new Timestamp(lastBuildTime+(5*3600L*1000)); // create a time-stamp 5h after the given build time
-	Timestamp timestamp = new Timestamp(lastBuildTime - (5*3600L*1000)); 
+	Timestamp timestamp = new Timestamp(lastBuildTime); 
 	this.queryScenarioTimestampDataPoints.setTimestamp(2, timestamp);
 	ResultSet resultSet =  this.queryScenarioTimestampDataPoints.executeQuery();
 	if (DB_Results.LOG) DB_Results.LOG_WRITER.ends(")"); //$NON-NLS-1$
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/BuildResultsElement.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/BuildResultsElement.java
index 4fb226d..1892e75 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/BuildResultsElement.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/BuildResultsElement.java
@@ -16,7 +16,9 @@
 
 import org.eclipse.test.internal.performance.data.Dim;
 import org.eclipse.test.internal.performance.eval.StatisticsUtil;
-import org.eclipse.test.internal.performance.results.db.*;
+import org.eclipse.test.internal.performance.results.db.AbstractResults;
+import org.eclipse.test.internal.performance.results.db.BuildResults;
+import org.eclipse.test.internal.performance.results.db.ConfigResults;
 import org.eclipse.test.internal.performance.results.utils.Util;
 import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;
 import org.eclipse.ui.views.properties.IPropertyDescriptor;
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/ConfigResultsElement.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/ConfigResultsElement.java
index e6d199b..7ff902a 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/ConfigResultsElement.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/ConfigResultsElement.java
@@ -14,7 +14,8 @@
 import java.util.List;
 import java.util.Vector;
 
-import org.eclipse.test.internal.performance.results.db.*;
+import org.eclipse.test.internal.performance.results.db.AbstractResults;
+import org.eclipse.test.internal.performance.results.db.ConfigResults;
 import org.eclipse.test.internal.performance.results.utils.IPerformancesConstants;
 import org.eclipse.test.internal.performance.results.utils.Util;
 import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/DimResultsElement.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/DimResultsElement.java
index 3a3b88d..219e0b0 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/DimResultsElement.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/DimResultsElement.java
@@ -13,7 +13,8 @@
 import java.util.Vector;
 
 import org.eclipse.test.internal.performance.data.Dim;
-import org.eclipse.test.internal.performance.results.db.*;
+import org.eclipse.test.internal.performance.results.db.AbstractResults;
+import org.eclipse.test.internal.performance.results.db.BuildResults;
 import org.eclipse.ui.views.properties.IPropertyDescriptor;
 import org.eclipse.ui.views.properties.PropertyDescriptor;
 import org.eclipse.ui.views.properties.TextPropertyDescriptor;
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/PerformanceResultsElement.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/PerformanceResultsElement.java
index f70cc84..f671edc 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/PerformanceResultsElement.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/PerformanceResultsElement.java
@@ -18,8 +18,11 @@
 import java.io.IOException;
 import java.io.PrintStream;
 import java.util.Arrays;
+
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.test.internal.performance.results.db.*;
+import org.eclipse.test.internal.performance.results.db.AbstractResults;
+import org.eclipse.test.internal.performance.results.db.DB_Results;
+import org.eclipse.test.internal.performance.results.db.PerformanceResults;
 import org.eclipse.test.internal.performance.results.ui.BuildsComparisonTable;
 import org.eclipse.test.internal.performance.results.utils.IPerformancesConstants;
 import org.eclipse.test.internal.performance.results.utils.Util;
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/ScenarioResultsElement.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/ScenarioResultsElement.java
index 40daddd..0efd5cd 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/ScenarioResultsElement.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/model/ScenarioResultsElement.java
@@ -14,7 +14,8 @@
 
 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
 import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.test.internal.performance.results.db.*;
+import org.eclipse.test.internal.performance.results.db.AbstractResults;
+import org.eclipse.test.internal.performance.results.db.ScenarioResults;
 import org.eclipse.test.internal.performance.results.utils.IPerformancesConstants;
 import org.eclipse.test.internal.performance.results.utils.Util;
 import org.eclipse.ui.views.properties.IPropertyDescriptor;
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/BuildsComparisonView.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/BuildsComparisonView.java
index 4fe09fa..975c268 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/BuildsComparisonView.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/BuildsComparisonView.java
@@ -11,6 +11,7 @@
 package org.eclipse.test.internal.performance.results.ui;
 
 import java.io.File;
+
 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/ComponentResultsView.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/ComponentResultsView.java
index d166c3d..f5275a2 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/ComponentResultsView.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/ComponentResultsView.java
@@ -11,9 +11,9 @@
 package org.eclipse.test.internal.performance.results.ui;
 
 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.InstanceScope;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
+import org.eclipse.core.runtime.preferences.InstanceScope;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.IMenuManager;
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/ComponentsView.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/ComponentsView.java
index 2e7f64f..cd1f798 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/ComponentsView.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/ComponentsView.java
@@ -14,8 +14,8 @@
 import java.util.Iterator;
 import java.util.Set;
 
-import org.eclipse.core.runtime.preferences.InstanceScope;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
+import org.eclipse.core.runtime.preferences.InstanceScope;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.IMenuManager;
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/PerformanceResultsPreferencePage.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/PerformanceResultsPreferencePage.java
index 72e691e..9fd1964 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/PerformanceResultsPreferencePage.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/PerformanceResultsPreferencePage.java
@@ -13,14 +13,11 @@
 import java.io.File;
 import java.util.Iterator;
 
-import org.osgi.service.prefs.BackingStoreException;
-
-import org.eclipse.test.internal.performance.PerformanceTestPlugin;
-import org.eclipse.test.internal.performance.results.db.DB_Results;
-import org.eclipse.test.internal.performance.results.utils.IPerformancesConstants;
-import org.eclipse.test.internal.performance.results.utils.Util;
-import org.eclipse.test.performance.ui.UiPlugin;
-
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferencePage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CCombo;
 import org.eclipse.swt.events.ModifyEvent;
@@ -38,16 +35,14 @@
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.List;
 import org.eclipse.swt.widgets.Text;
-
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
-
+import org.eclipse.test.internal.performance.PerformanceTestPlugin;
+import org.eclipse.test.internal.performance.results.db.DB_Results;
+import org.eclipse.test.internal.performance.results.utils.IPerformancesConstants;
+import org.eclipse.test.internal.performance.results.utils.Util;
+import org.eclipse.test.performance.ui.UiPlugin;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.osgi.service.prefs.BackingStoreException;
 
 /**
  * Defines the 'Performances' preferences page.
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/PerformancesView.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/PerformancesView.java
index bd2d9bc..82e9f07 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/PerformancesView.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/PerformancesView.java
@@ -20,9 +20,9 @@
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
 import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.IMenuListener;
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/LineGraph.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/LineGraph.java
index b7e7eeb..f5e498e 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/LineGraph.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/LineGraph.java
@@ -10,7 +10,8 @@
  *******************************************************************************/
 package org.eclipse.test.performance.ui;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.GC;
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/ScenarioData.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/ScenarioData.java
index 113280a..787e1e1 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/ScenarioData.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/ScenarioData.java
@@ -21,8 +21,6 @@
 import java.util.Iterator;
 import java.util.List;
 
-import junit.framework.AssertionFailedError;
-
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.swt.SWT;
@@ -40,6 +38,8 @@
 import org.eclipse.test.internal.performance.results.db.ScenarioResults;
 import org.eclipse.test.internal.performance.results.utils.Util;
 
+import junit.framework.AssertionFailedError;
+
 /**
  * Class used to print scenario all builds data.
  */
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/TimeLineGraph.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/TimeLineGraph.java
index 85bff50..8b2f9e5 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/TimeLineGraph.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/TimeLineGraph.java
@@ -10,7 +10,12 @@
  *******************************************************************************/
 package org.eclipse.test.performance.ui;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.List;
 
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.GC;
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/Utils.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/Utils.java
index b4d8141..7d54acc 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/Utils.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/performance/ui/Utils.java
@@ -1,12 +1,9 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 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
+ * Copyright (c) 2000, 2009 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
+ * Contributors: IBM Corporation - initial API and implementation
  *******************************************************************************/
 
 package org.eclipse.test.performance.ui;
@@ -24,6 +21,8 @@
 import java.util.Calendar;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
@@ -38,383 +37,431 @@
 
 public class Utils {
 
-    public final static double STANDARD_ERROR_THRESHOLD = 0.03;                             // 3%
-    static final NumberFormat  PERCENT_FORMAT           = NumberFormat.getPercentInstance();
-    static {
-        PERCENT_FORMAT.setMaximumFractionDigits(1);
+  public final static double STANDARD_ERROR_THRESHOLD = 0.03;                                                                                                                                                 // 3%
+  static final NumberFormat  PERCENT_FORMAT           = NumberFormat.getPercentInstance();
+  static {
+    PERCENT_FORMAT.setMaximumFractionDigits(1);
+  }
+  static final DecimalFormat DEVIATION_FORMAT = (DecimalFormat) NumberFormat.getPercentInstance();
+  static {
+    DEVIATION_FORMAT.setMaximumFractionDigits(1);
+    DEVIATION_FORMAT.setMinimumFractionDigits(1);
+    DEVIATION_FORMAT.setPositivePrefix("+");
+    DEVIATION_FORMAT.setNegativePrefix("- ");
+  }
+  static final DecimalFormat STDERR_FORMAT = (DecimalFormat) NumberFormat.getNumberInstance();
+  static {
+    STDERR_FORMAT.setMaximumFractionDigits(1);
+    STDERR_FORMAT.setMinimumFractionDigits(1);
+    STDERR_FORMAT.setMultiplier(100);
+  }
+  public final static String STANDARD_ERROR_THRESHOLD_STRING = PERCENT_FORMAT.format(STANDARD_ERROR_THRESHOLD);
+
+  // Image files
+  public final static String UNKNOWN_IMAGE                   = "images/Unknown.gif";
+  public final static String OK_IMAGE                        = "images/OK.gif";
+  public final static String OK_IMAGE_WARN                   = "images/OK_caution.gif";
+  public final static String FAIL_IMAGE                      = "images/FAIL.gif";
+  public final static String FAIL_IMAGE_WARN                 = "images/FAIL_caution.gif";
+  public final static String FAIL_IMAGE_EXPLAINED            = "images/FAIL_greyed.gif";
+  public final static String LIGHT                           = "images/light.gif";
+  public final static String WARNING_OBJ                     = "images/warning_obj.gif";
+
+  // Java script files
+  public final static String TOOLTIP_SCRIPT                  = "scripts/ToolTip.js";
+  public final static String TOOLTIP_STYLE                   = "scripts/ToolTip.css";
+  public final static String FINGERPRINT_SCRIPT              = "scripts/Fingerprints.js";
+
+  // Doc files
+  public final static String HELP                            = "doc/help.html";
+
+  // Status
+  public final static int    OK                              = 0;
+  public final static int    NAN                             = 0x1;
+  public final static int    ERR                             = 0x2;
+
+  /**
+   * Return &lt;html&gt;&lt;head&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&gt;
+   */
+  public final static String HTML_OPEN                       = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n";
+
+  /**
+   * Return "&lt;/html&gt;".
+   */
+  public final static String HTML_CLOSE                      = "</html>\n";
+
+  /**
+   * Default style-sheet used on eclipse.org
+   */
+  public final static String HTML_DEFAULT_CSS                = "<style type=\"text/css\">" + "p, table, td, th {  font-family: arial, helvetica, geneva; font-size: 10pt}\n" + "pre {  font-family: \"Courier New\", Courier, mono; font-size: 10pt}\n"
+      + "h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}\n" + "code {  font-family: \"Courier New\", Courier, mono; font-size: 10pt}\n" + "sup {  font-family: arial,helvetica,geneva; font-size: 10px}\n"
+      + "h3 {  font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}\n" + "li {  font-family: arial, helvetica, geneva; font-size: 10pt}\n" + "h1 {  font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}\n"
+      + "body {  font-family: arial, helvetica, geneva; font-size: 10pt; clip:   rect(   ); margin-top: 5mm; margin-left: 3mm}\n" + ".indextop { font-size: x-large;; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold}\n"
+      + ".indexsub { font-size: xx-small;; font-family: Arial, Helvetica, sans-serif; color: #8080FF}\n" + "</style>\n\n";
+
+  /**
+   * Creates a Variations object using build id pattern, config and jvm.
+   *
+   * @param buildIdPattern
+   * @param config
+   * @param jvm
+   */
+  public static Variations getVariations(String buildIdPattern, String config, String jvm) {
+    String buildIdPatterns = buildIdPattern.replace(',', '%');
+    Variations variations = new Variations();
+    variations.put(PerformanceTestPlugin.CONFIG, config);
+    variations.put(PerformanceTestPlugin.BUILD, buildIdPatterns);
+    variations.put("jvm", jvm);
+    return variations;
+  }
+
+  /**
+   * Copy all bundle files contained in the given path
+   */
+  public static void copyBundleFiles(Bundle bundle, String path, String pattern, File output) {
+    Enumeration imageFiles = bundle.findEntries(path, pattern, false);
+    while (imageFiles.hasMoreElements()) {
+      URL url = (URL) imageFiles.nextElement();
+      try {
+        File outputFile = new File(output, url.getFile());
+        if (!outputFile.getParentFile().exists()) {
+          outputFile.getParentFile().mkdirs();
+        }
+        Util.copyStream(url.openStream(), outputFile);
+      } catch (IOException e) {
+        // TODO Auto-generated catch block
+        e.printStackTrace();
+      }
     }
-    static final DecimalFormat DEVIATION_FORMAT = (DecimalFormat) NumberFormat.getPercentInstance();
-    static {
-        DEVIATION_FORMAT.setMaximumFractionDigits(1);
-        DEVIATION_FORMAT.setMinimumFractionDigits(1);
-        DEVIATION_FORMAT.setPositivePrefix("+");
-        DEVIATION_FORMAT.setNegativePrefix("- ");
+  }
+
+  /**
+   * Downsample Image to 8 bit depth format so that the resulting image data can be saved to GIF. Note. If the source image contains
+   * photo quality content with more than 256 colours, resulting data will look very poor.
+   */
+  static int closest(RGB[] rgbs, int n, RGB rgb) {
+    int minDist = 256 * 256 * 3;
+    int minIndex = 0;
+    for (int i = 0; i < n; ++i) {
+      RGB rgb2 = rgbs[i];
+      int da = rgb2.red - rgb.red;
+      int dg = rgb2.green - rgb.green;
+      int db = rgb2.blue - rgb.blue;
+      int dist = da * da + dg * dg + db * db;
+      if (dist < minDist) {
+        minDist = dist;
+        minIndex = i;
+      }
     }
-    static final DecimalFormat STDERR_FORMAT = (DecimalFormat) NumberFormat.getNumberInstance();
-    static {
-        STDERR_FORMAT.setMaximumFractionDigits(1);
-        STDERR_FORMAT.setMinimumFractionDigits(1);
-        STDERR_FORMAT.setMultiplier(100);
+    return minIndex;
+  }
+
+  static class ColorCounter implements Comparable {
+
+    RGB rgb;
+
+    int count;
+
+    public int compareTo(Object o) {
+      return ((ColorCounter) o).count - this.count;
     }
-    public final static String STANDARD_ERROR_THRESHOLD_STRING = PERCENT_FORMAT.format(STANDARD_ERROR_THRESHOLD);
+  }
 
-    // Image files
-    public final static String UNKNOWN_IMAGE                   = "images/Unknown.gif";
-    public final static String OK_IMAGE                        = "images/OK.gif";
-    public final static String OK_IMAGE_WARN                   = "images/OK_caution.gif";
-    public final static String FAIL_IMAGE                      = "images/FAIL.gif";
-    public final static String FAIL_IMAGE_WARN                 = "images/FAIL_caution.gif";
-    public final static String FAIL_IMAGE_EXPLAINED            = "images/FAIL_greyed.gif";
-    public final static String LIGHT                           = "images/light.gif";
-    public final static String WARNING_OBJ                     = "images/warning_obj.gif";
+  public static ImageData downSample(Image image) {
+    ImageData data = image.getImageData();
+    if (!data.palette.isDirect && data.depth <= 8)
+      return data;
 
-    // Java script files
-    public final static String TOOLTIP_SCRIPT                  = "scripts/ToolTip.js";
-    public final static String TOOLTIP_STYLE                   = "scripts/ToolTip.css";
-    public final static String FINGERPRINT_SCRIPT              = "scripts/Fingerprints.js";
-
-    // Doc files
-    public final static String HELP                            = "doc/help.html";
-
-    // Status
-    public final static int    OK                              = 0;
-    public final static int    NAN                             = 0x1;
-    public final static int    ERR                             = 0x2;
-
-    /**
-     * Return &lt;html&gt;&lt;head&gt;&lt;meta http-equiv="Content-Type"
-     * content="text/html; charset=iso-8859-1"&gt;
-     */
-    public final static String HTML_OPEN                       = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n";
-
-    /**
-     * Return "&lt;/html&gt;".
-     */
-    public final static String HTML_CLOSE                      = "</html>\n";
-
-    /**
-     * Default style-sheet used on eclipse.org
-     */
-	public final static String HTML_DEFAULT_CSS = "<style type=\"text/css\">" + "p, table, td, th {  font-family: arial, helvetica, geneva; font-size: 10pt}\n"
-			+ "pre {  font-family: \"Courier New\", Courier, mono; font-size: 10pt}\n" + "h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}\n"
-			+ "code {  font-family: \"Courier New\", Courier, mono; font-size: 10pt}\n" + "sup {  font-family: arial,helvetica,geneva; font-size: 10px}\n"
-			+ "h3 {  font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}\n" + "li {  font-family: arial, helvetica, geneva; font-size: 10pt}\n"
-            + "h1 {  font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}\n"
-            + "body {  font-family: arial, helvetica, geneva; font-size: 10pt; clip:   rect(   ); margin-top: 5mm; margin-left: 3mm}\n"
-            + ".indextop { font-size: x-large;; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold}\n"
-            + ".indexsub { font-size: xx-small;; font-family: Arial, Helvetica, sans-serif; color: #8080FF}\n" + "</style>\n\n";
-
-    /**
-     * Creates a Variations object using build id pattern, config and jvm.
-     *
-     * @param buildIdPattern
-     * @param config
-     * @param jvm
-     */
-    public static Variations getVariations(String buildIdPattern, String config, String jvm) {
-        String buildIdPatterns = buildIdPattern.replace(',', '%');
-        Variations variations = new Variations();
-        variations.put(PerformanceTestPlugin.CONFIG, config);
-        variations.put(PerformanceTestPlugin.BUILD, buildIdPatterns);
-        variations.put("jvm", jvm);
-        return variations;
+    // compute a histogram of color frequencies
+    HashMap freq = new HashMap();
+    int width = data.width;
+    int[] pixels = new int[width];
+    int[] maskPixels = new int[width];
+    for (int y = 0, height = data.height; y < height; ++y) {
+      data.getPixels(0, y, width, pixels, 0);
+      for (int x = 0; x < width; ++x) {
+        RGB rgb = data.palette.getRGB(pixels[x]);
+        ColorCounter counter = (ColorCounter) freq.get(rgb);
+        if (counter == null) {
+          counter = new ColorCounter();
+          counter.rgb = rgb;
+          freq.put(rgb, counter);
+        }
+        counter.count++;
+      }
     }
 
-    /**
-     * Copy all bundle files contained in the given path
-     */
-    public static void copyBundleFiles(Bundle bundle, String path, String pattern, File output) {
-        Enumeration imageFiles = bundle.findEntries(path, pattern, false);
-        while (imageFiles.hasMoreElements()) {
-            URL url = (URL) imageFiles.nextElement();
-            try {
-                File outputFile = new File(output, url.getFile());
-                if (!outputFile.getParentFile().exists()) {
-                    outputFile.getParentFile().mkdirs();
-                }
-                Util.copyStream(url.openStream(), outputFile);
-			} catch (IOException e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
-            }
-        }
+    // sort colors by most frequently used
+    ColorCounter[] counters = new ColorCounter[freq.size()];
+    freq.values().toArray(counters);
+    Arrays.sort(counters);
+
+    // pick the most frequently used 256 (or fewer), and make a palette
+    ImageData mask = null;
+    if (data.transparentPixel != -1 || data.maskData != null) {
+      mask = data.getTransparencyMask();
     }
-
-    /**
-     * Downsample Image to 8 bit depth format so that the resulting image data
-     * can be saved to GIF. Note. If the source image contains photo quality
-     * content with more than 256 colours, resulting data will look very poor.
-     */
-    static int closest(RGB[] rgbs, int n, RGB rgb) {
-        int minDist = 256 * 256 * 3;
-        int minIndex = 0;
-        for (int i = 0; i < n; ++i) {
-            RGB rgb2 = rgbs[i];
-            int da = rgb2.red - rgb.red;
-            int dg = rgb2.green - rgb.green;
-            int db = rgb2.blue - rgb.blue;
-            int dist = da * da + dg * dg + db * db;
-            if (dist < minDist) {
-                minDist = dist;
-                minIndex = i;
-            }
-        }
-        return minIndex;
+    int n = Math.min(256, freq.size());
+    RGB[] rgbs = new RGB[n + (mask != null ? 1 : 0)];
+    for (int i = 0; i < n; ++i)
+      rgbs[i] = counters[i].rgb;
+    if (mask != null) {
+      rgbs[rgbs.length - 1] = data.transparentPixel != -1 ? data.palette.getRGB(data.transparentPixel) : new RGB(255, 255, 255);
     }
+    PaletteData palette = new PaletteData(rgbs);
 
-    static class ColorCounter implements Comparable {
-
-        RGB rgb;
-
-        int count;
-
-        public int compareTo(Object o) {
-            return ((ColorCounter) o).count - this.count;
-        }
-    }
-
-    public static ImageData downSample(Image image) {
-        ImageData data = image.getImageData();
-        if (!data.palette.isDirect && data.depth <= 8)
-            return data;
-
-        // compute a histogram of color frequencies
-        HashMap freq = new HashMap();
-        int width = data.width;
-        int[] pixels = new int[width];
-        int[] maskPixels = new int[width];
-        for (int y = 0, height = data.height; y < height; ++y) {
-            data.getPixels(0, y, width, pixels, 0);
-            for (int x = 0; x < width; ++x) {
-                RGB rgb = data.palette.getRGB(pixels[x]);
-                ColorCounter counter = (ColorCounter) freq.get(rgb);
-                if (counter == null) {
-                    counter = new ColorCounter();
-                    counter.rgb = rgb;
-                    freq.put(rgb, counter);
-                }
-                counter.count++;
-            }
-        }
-
-        // sort colors by most frequently used
-        ColorCounter[] counters = new ColorCounter[freq.size()];
-        freq.values().toArray(counters);
-        Arrays.sort(counters);
-
-        // pick the most frequently used 256 (or fewer), and make a palette
-        ImageData mask = null;
-        if (data.transparentPixel != -1 || data.maskData != null) {
-            mask = data.getTransparencyMask();
-        }
-        int n = Math.min(256, freq.size());
-        RGB[] rgbs = new RGB[n + (mask != null ? 1 : 0)];
-        for (int i = 0; i < n; ++i)
-            rgbs[i] = counters[i].rgb;
-        if (mask != null) {
-			rgbs[rgbs.length - 1] = data.transparentPixel != -1 ? data.palette.getRGB(data.transparentPixel) : new RGB(255, 255, 255);
-        }
-        PaletteData palette = new PaletteData(rgbs);
-
-        // create a new image using the new palette:
-        // for each pixel in the old image, look up the best matching
-        // index in the new palette
-        ImageData newData = new ImageData(width, data.height, 8, palette);
-        if (mask != null)
-            newData.transparentPixel = rgbs.length - 1;
-        for (int y = 0, height = data.height; y < height; ++y) {
-            data.getPixels(0, y, width, pixels, 0);
-            if (mask != null)
-                mask.getPixels(0, y, width, maskPixels, 0);
-            for (int x = 0; x < width; ++x) {
-                if (mask != null && maskPixels[x] == 0) {
-                    pixels[x] = rgbs.length - 1;
-                } else {
-                    RGB rgb = data.palette.getRGB(pixels[x]);
-                    pixels[x] = closest(rgbs, n, rgb);
-                }
-            }
-            newData.setPixels(0, y, width, pixels, 0);
-        }
-        return newData;
-    }
-
-    /**
-     * Returns the date/time from the build id in format yyyymmddhm
-     *
-     * @param buildId
-     * @return date/time in format YYYYMMDDHHMM, ie. 200504060010
-     */
-    public static long getDateFromBuildID(String buildId) {
-        return getDateFromBuildID(buildId, false);
-    }
-
-    public static long getDateFromBuildID(String buildId, boolean matchLast) {
-        Calendar calendar = Calendar.getInstance();
-
-        try {
-            if (buildId.indexOf('-') > -1) {
-                // if regular build, expect <buildType><date>-<time> format
-                String[] buildIdParts = buildId.split("-");
-                // two parts are from IDs such as I20140606-1215, so skip first
-                // char, and hour and second are in second part.
-                if (buildIdParts.length == 2) {
-                    int year = Integer.parseInt(buildIdParts[0].substring(1, 5));
-                    int month = Integer.parseInt(buildIdParts[0].substring(5, 7));
-                    int date = Integer.parseInt(buildIdParts[0].substring(7, 9));
-                    int hours = Integer.parseInt(buildIdParts[1].substring(0, 2));
-                    int min = Integer.parseInt(buildIdParts[1].substring(2, 4));
-                    calendar.set(year, month, date, hours, min);
-                } else if (buildIdParts.length == 3) {
-                    // three parts, such a from R-4.5-201506032000, so only
-                    // part[2] is date
-                    int year = Integer.parseInt(buildIdParts[2].substring(0, 4));
-                    int month = Integer.parseInt(buildIdParts[2].substring(4, 6));
-                    int date = Integer.parseInt(buildIdParts[2].substring(6, 8));
-                    int hours = Integer.parseInt(buildIdParts[2].substring(8, 10));
-                    int min = Integer.parseInt(buildIdParts[2].substring(10, 12));
-                    calendar.set(year, month, date, hours, min);
-                } else {
-                    System.err.println("ERROR: BuildId where number of build parts (based on split(\"-\")) was neither 2 nor 3 parts. Unexpected data. BuildId: biuldId");
-                }
-                return calendar.getTimeInMillis();
-            }
-            System.err.println("ERROR: BuildId with on '-' found. BuildId: buildId. Unexpected data.");
-        }
-        catch (StringIndexOutOfBoundsException e) {
-            System.err.println("ERROR: StringIndexOutofBoundsExeception while processing Date part of buildId, " + buildId
-                    + ". Probably due to error in data in database?");
-            // Do nothing, but return '-1'
-        }
-        return -1;
-    }
-
-    /**
-     * Returns a message corresponding to given statistics.
-     *
-	 * @param resultStats The value with its standard error
-     * @param full
-     * @return The failure message. May be empty if stats are good...
-     */
-    public static String failureMessage(double[] resultStats, boolean full) {
-        StringBuffer buffer = new StringBuffer();
-        int level = confidenceLevel(resultStats);
-        // boolean isWarn = (level & WARN) != 0;
-        boolean isErr = (level & ERR) != 0;
-        if (full) {
-            if (isErr) {
-                buffer.append("*** WARNING ***  ");
-	 			buffer.append(Messages.bind(Messages.standardError, PERCENT_FORMAT.format(resultStats[1]), STANDARD_ERROR_THRESHOLD_STRING));
-            }
-            return buffer.toString();
-        }
-        if (resultStats != null) {
-            double deviation = resultStats[0];
-            buffer.append("<font color=\"#0000FF\" size=\"1\">");
-            if (Double.isNaN(deviation) || Double.isInfinite(deviation)) {
-                buffer.append(" [n/a]");
-            } else {
-                double stderr = resultStats[1];
-                deviation = Math.abs(deviation) < 0.001 ? 0 : -deviation;
-                if (Double.isNaN(stderr) || Double.isInfinite(stderr)) {
-                    buffer.append(DEVIATION_FORMAT.format(deviation));
-                    buffer.append("</font><font color=\"#DDDD00\" size=\"1\"> ");
-                    buffer.append(" [n/a]");
-                } else {
-                    buffer.append(DEVIATION_FORMAT.format(deviation));
-                    buffer.append(" [&#177;");
-                    buffer.append(STDERR_FORMAT.format(Math.abs(stderr)));
-                    buffer.append(']');
-                }
-            }
-            buffer.append("</font>");
-        }
-        return buffer.toString();
-    }
-
-    /**
-     * Returns the confidence level for given statistics:
-     * <ul>
-     * <li>{@link #NAN}: if the value is infinite or not a number</li>
-	 * <li>{@link #ERR}: if the standard error is over the expected threshold ({@link #STANDARD_ERROR_THRESHOLD})</li>
-     * <li>{@link #OK}: in all other cases</li>
-     * </ul>
-     *
-	 * @param resultStats array of 2 doubles, the former is the average value and
-	 * 	the latter is the standard error made while computing the average.
-	 * @return a value telling caller the level of confidence of the provided value
-     */
-    public static int confidenceLevel(double[] resultStats) {
-        int level = OK;
-        if (resultStats != null) {
-            if (Double.isNaN(resultStats[0]) || Double.isInfinite(resultStats[0])) {
-                level = NAN;
-            } else {
-//	 			if (resultStats[1] >= (STANDARD_ERROR_THRESHOLD/2)) { // warns standard error higher than the half of authorized threshold
-                // level |= WARN;
-                // }
-	 			if (resultStats[1] >= STANDARD_ERROR_THRESHOLD) { // standard error higher than the authorized threshold
-                    level = ERR;
-                }
-            }
-        }
-        return level;
-    }
-
-    /**
-	 * Get an icon image corresponding to a given level of confidence and explanation.
-     *
-	 * @param confidence the confiden level
-	 * @param hasExplanation flags indicates whether the confidence may be tempered by an explanation
-     * @return Corresponding image
-     */
-    public static String getImage(int confidence, boolean scenarioFailed, boolean hasExplanation) {
-        String image = null;
-
-        if (scenarioFailed) {
-            if (hasExplanation) {
-                image = FAIL_IMAGE_EXPLAINED;
-            } else if ((confidence & ERR) != 0) {
-                image = FAIL_IMAGE_WARN;
-            } else {
-                image = FAIL_IMAGE;
-            }
-        } else if ((confidence & NAN) != 0) {
-            image = UNKNOWN_IMAGE;
-        } else if ((confidence & ERR) != 0) {
-            image = OK_IMAGE_WARN;
+    // create a new image using the new palette:
+    // for each pixel in the old image, look up the best matching
+    // index in the new palette
+    ImageData newData = new ImageData(width, data.height, 8, palette);
+    if (mask != null)
+      newData.transparentPixel = rgbs.length - 1;
+    for (int y = 0, height = data.height; y < height; ++y) {
+      data.getPixels(0, y, width, pixels, 0);
+      if (mask != null)
+        mask.getPixels(0, y, width, maskPixels, 0);
+      for (int x = 0; x < width; ++x) {
+        if (mask != null && maskPixels[x] == 0) {
+          pixels[x] = rgbs.length - 1;
         } else {
-            image = OK_IMAGE;
+          RGB rgb = data.palette.getRGB(pixels[x]);
+          pixels[x] = closest(rgbs, n, rgb);
         }
-        return image;
+      }
+      newData.setPixels(0, y, width, pixels, 0);
     }
+    return newData;
+  }
 
-    /**
-     * @param outputFile
-     * @param image
-     */
-    public static void saveImage(File outputFile, Image image) {
-        // Save image
-        ImageData data = downSample(image);
-        ImageLoader imageLoader = new ImageLoader();
-        imageLoader.data = new ImageData[] { data };
+  /**
+   * Returns the date/time from the build id in format yyyymmddhm
+   *
+   * @param buildId
+   * @return date/time in format YYYYMMDDHHMM, ie. 200504060010
+   */
+  public static long getDateFromBuildID(String buildId) {
+    return getDateFromBuildID(buildId, false);
+  }
 
-        OutputStream out = null;
-        try {
-            out = new BufferedOutputStream(new FileOutputStream(outputFile));
-            imageLoader.save(out, SWT.IMAGE_GIF);
-	} catch (FileNotFoundException e) {
-            e.printStackTrace();
-	} finally {
-            image.dispose();
-            if (out != null) {
-                try {
-                    out.close();
-			} catch (IOException e1) {
-                    // silently ignored
-                }
+  public static long getDateFromBuildID(String buildId, boolean matchLast) {
+    // initialize to "error" value.
+    Long result = Long.MAX_VALUE;
+    try {
+      if (buildId.indexOf('-') > -1) {
+        // if regular build, expect <buildType><date>-<time> format
+        String[] buildIdParts = buildId.split("-");
+        // two parts are from IDs such as I20140606-1215, so skip first
+        // char, and hour and second are in second part.
+        if (buildIdParts.length == 2) {
+          int year = Integer.parseInt(buildIdParts[0].substring(1, 5));
+          int month = Integer.parseInt(buildIdParts[0].substring(5, 7));
+          int date = Integer.parseInt(buildIdParts[0].substring(7, 9));
+          int hours = Integer.parseInt(buildIdParts[1].substring(0, 2));
+          int min = Integer.parseInt(buildIdParts[1].substring(2, 4));
+          Calendar calendar = Calendar.getInstance();
+          calendar.set(year, month, date, hours, min);
+          result = calendar.getTimeInMillis();
+        } else if (buildIdParts.length == 3) {
+          // three parts, such a from R-4.5-201506032000, so only
+          // part[2] is date. Special case, where we "code" the R-builds with I-build
+          // date at end, so we know they "go together". Those identifiers look
+          // like R-4.5-201506032000_201511032000 or similar.
+          // if no underscore is detected, we use simply "part 2".
+          // if underscore is detected then further spiting is
+          // required. In that case, if matchLast is true, we use that to the
+          // right of underscore. If matchLast is false, we use that to the left of
+          // underscore. If matchLast is true, but there is no underscore, we
+          // print a warning, but still return the normal 'part 2'.
+          int uLocation = buildIdParts[2].indexOf('_');
+          if (uLocation > -1) {
+            String firstDateString = buildIdParts[2].substring(0, uLocation - 1);
+            String secondDateString = buildIdParts[2].substring(uLocation);
+            if (matchLast) {
+              result = getDateAsMilliSecs(secondDateString);
+            } else {
+              result = getDateAsMilliSecs(firstDateString);
             }
+          } else {
+            String dateString = buildIdParts[2];
+            result = getDateAsMilliSecs(dateString);
+          }
+        } else {
+          System.err.println("ERROR: BuildId where number of build parts (based on split(\"-\")) was neither 2 nor 3 parts. Unexpected data. BuildId: " + buildId);
         }
+      } else {
+        System.err.println("ERROR: BuildId with no '-' found. BuildId: " + buildId + ". Unexpected data.");
+      }
+    } catch (StringIndexOutOfBoundsException e) {
+      // Do nothing, but print warning, and return MAX_VALUE"
+      System.err.println("ERROR: StringIndexOutofBoundsExeception while processing Date part of buildId, " + buildId + ". Probably due to error in data in database?");
     }
+    // If we "fall through" with no assignment, we return "MAX_VALUE", since
+    // most (all?) checks of date involve "if less than", so this makes
+    // those evaluate to false. TODO: should do explicit check for "equals MAX_VALUE" so we
+    // would know it was an error.
+    return result;
+  }
+
+  public static Long getDateAsMilliSecs(String dateString) {
+    // we use "MAX_VALUE" as an error indicator.
+    Long result = Long.MAX_VALUE;
+    Pattern expectedFormat = Pattern.compile("\\d{12}");
+    Matcher matcher = expectedFormat.matcher(dateString);
+    // we assume strict format on date, such as 201511040800.
+    // 12 digits only.
+    if (matcher.matches()) {
+      int year = Integer.parseInt(dateString.substring(0, 4));
+      int month = Integer.parseInt(dateString.substring(4, 6));
+      int date = Integer.parseInt(dateString.substring(6, 8));
+      int hours = Integer.parseInt(dateString.substring(8, 10));
+      int min = Integer.parseInt(dateString.substring(10, 12));
+      Calendar localCalendar = Calendar.getInstance();
+      localCalendar.set(year, month, date, hours, min);
+      result = localCalendar.getTimeInMillis();
+    } else {
+      System.err.println("ERROR: dateString, " + dateString + ", was not exactly 12 digits in length. Long.MAX_VALUE returned");
+    }
+    return result;
+  }
+
+  /**
+   * Returns a message corresponding to given statistics.
+   *
+   * @param resultStats
+   *          The value with its standard error
+   * @param full
+   * @return The failure message. May be empty if stats are good...
+   */
+  public static String failureMessage(double[] resultStats, boolean full) {
+    StringBuffer buffer = new StringBuffer();
+    int level = confidenceLevel(resultStats);
+    // boolean isWarn = (level & WARN) != 0;
+    boolean isErr = (level & ERR) != 0;
+    if (full) {
+      if (isErr) {
+        buffer.append("*** WARNING ***  ");
+        buffer.append(Messages.bind(Messages.standardError, PERCENT_FORMAT.format(resultStats[1]), STANDARD_ERROR_THRESHOLD_STRING));
+      }
+      return buffer.toString();
+    }
+    if (resultStats != null) {
+      double deviation = resultStats[0];
+      buffer.append("<font color=\"#0000FF\" size=\"1\">");
+      if (Double.isNaN(deviation) || Double.isInfinite(deviation)) {
+        buffer.append(" [n/a]");
+      } else {
+        double stderr = resultStats[1];
+        deviation = Math.abs(deviation) < 0.001 ? 0 : -deviation;
+        if (Double.isNaN(stderr) || Double.isInfinite(stderr)) {
+          buffer.append(DEVIATION_FORMAT.format(deviation));
+          buffer.append("</font><font color=\"#DDDD00\" size=\"1\"> ");
+          buffer.append(" [n/a]");
+        } else {
+          buffer.append(DEVIATION_FORMAT.format(deviation));
+          buffer.append(" [&#177;");
+          buffer.append(STDERR_FORMAT.format(Math.abs(stderr)));
+          buffer.append(']');
+        }
+      }
+      buffer.append("</font>");
+    }
+    return buffer.toString();
+  }
+
+  /**
+   * Returns the confidence level for given statistics:
+   * <ul>
+   * <li>{@link #NAN}: if the value is infinite or not a number</li>
+   * <li>{@link #ERR}: if the standard error is over the expected threshold ({@link #STANDARD_ERROR_THRESHOLD})</li>
+   * <li>{@link #OK}: in all other cases</li>
+   * </ul>
+   *
+   * @param resultStats
+   *          array of 2 doubles, the former is the average value and the latter is the standard error made while computing the
+   *          average.
+   * @return a value telling caller the level of confidence of the provided value
+   */
+  public static int confidenceLevel(double[] resultStats) {
+    int level = OK;
+    if (resultStats != null) {
+      if (Double.isNaN(resultStats[0]) || Double.isInfinite(resultStats[0])) {
+        level = NAN;
+      } else {
+        // if (resultStats[1] >= (STANDARD_ERROR_THRESHOLD/2)) { //
+        // warns standard error higher than the half of authorized
+        // threshold
+        // level |= WARN;
+        // }
+        if (resultStats[1] >= STANDARD_ERROR_THRESHOLD) { // standard
+                                                          // error
+                                                          // higher than
+                                                          // the
+                                                          // authorized
+                                                          // threshold
+          level = ERR;
+        }
+      }
+    }
+    return level;
+  }
+
+  /**
+   * Get an icon image corresponding to a given level of confidence and explanation.
+   *
+   * @param confidence
+   *          the confiden level
+   * @param hasExplanation
+   *          flags indicates whether the confidence may be tempered by an explanation
+   * @return Corresponding image
+   */
+  public static String getImage(int confidence, boolean scenarioFailed, boolean hasExplanation) {
+    String image = null;
+
+    if (scenarioFailed) {
+      if (hasExplanation) {
+        image = FAIL_IMAGE_EXPLAINED;
+      } else if ((confidence & ERR) != 0) {
+        image = FAIL_IMAGE_WARN;
+      } else {
+        image = FAIL_IMAGE;
+      }
+    } else if ((confidence & NAN) != 0) {
+      image = UNKNOWN_IMAGE;
+    } else if ((confidence & ERR) != 0) {
+      image = OK_IMAGE_WARN;
+    } else {
+      image = OK_IMAGE;
+    }
+    return image;
+  }
+
+  /**
+   * @param outputFile
+   * @param image
+   */
+  public static void saveImage(File outputFile, Image image) {
+    // Save image
+    ImageData data = downSample(image);
+    ImageLoader imageLoader = new ImageLoader();
+    imageLoader.data = new ImageData[] { data };
+
+    OutputStream out = null;
+    try {
+      out = new BufferedOutputStream(new FileOutputStream(outputFile));
+      imageLoader.save(out, SWT.IMAGE_GIF);
+    } catch (FileNotFoundException e) {
+      e.printStackTrace();
+    }
+    finally {
+      image.dispose();
+      if (out != null) {
+        try {
+          out.close();
+        } catch (IOException e1) {
+          // silently ignored
+        }
+      }
+    }
+  }
 
 }