<NME> SearchRules.java
<BEF> package org.jabref.model.search.rules;

import java.util.EnumSet;

public class SearchRules {

    private SearchRules() {
    }

    /**
     * Returns the appropriate search rule that fits best to the given parameter.
     */

    private static final Pattern SIMPLE_EXPRESSION = Pattern.compile("[^\\p{Punct}]*");

    private SearchRules() {
    }

    /**
     * Returns the appropriate search rule that fits best to the given parameter.
     */
    public static SearchRule getSearchRuleByQuery(String query, EnumSet<SearchFlags> searchFlags) {
        if (isSimpleQuery(query)) {
            return new ContainsBasedSearchRule(searchFlags);
        }

        // this searches specified fields if specified,
        // and all fields otherwise
        SearchRule searchExpression = new GrammarBasedSearchRule(searchFlags);
        if (searchExpression.validateSearchStrings(query)) {
            return searchExpression;
        } else {
            return getSearchRule(searchFlags);
        }
    }

    private static boolean isSimpleQuery(String query) {
        return SIMPLE_EXPRESSION.matcher(query).matches();
    }

    static SearchRule getSearchRule(EnumSet<SearchFlags> searchFlags) {
        if (searchFlags.contains(SearchFlags.REGULAR_EXPRESSION)) {
            return new RegexBasedSearchRule(searchFlags);
        } else {
            return new ContainsBasedSearchRule(searchFlags);
        }
    }

    public enum SearchFlags {
        CASE_SENSITIVE, REGULAR_EXPRESSION, FULLTEXT, KEEP_SEARCH_STRING;
    }
}

<MSG> Revert "Paying off technical debt: almost all utility classes have a private constructor now. (#2649)" (#2670)

This reverts commit 4ff55d07b0818efe08f72e93fd8b3365c79dc1ee.
<DFF> @@ -4,9 +4,6 @@ import org.jabref.model.strings.StringUtil;
 
 public class SearchRules {
 
-    private SearchRules() {
-    }
-
     /**
      * Returns the appropriate search rule that fits best to the given parameter.
      */

{'commit': 'diff --git a/src/main/java/org/jabref/Globals.java b/src/main/java/org/jabref/Globals.java\nindex 5b36e85401..f013ed3ddb 100644\n--- a/src/main/java/org/jabref/Globals.java\n+++ b/src/main/java/org/jabref/Globals.java\n@@ -49,9 +49,6 @@ public class Globals {\n     private static GlobalFocusListener focusListener;\n     private static FileUpdateMonitor fileUpdateMonitor;\n \n-    private Globals() {\n-    }\n-\n     // Key binding preferences\n     public static KeyBindingPreferences getKeyPrefs() {\n         if (keyPrefs == null) {\ndiff --git a/src/main/java/org/jabref/cli/CrossrefFetcherEvaluator.java b/src/main/java/org/jabref/cli/CrossrefFetcherEvaluator.java\nindex 46be53da4d..a4ce0f8d27 100644\n--- a/src/main/java/org/jabref/cli/CrossrefFetcherEvaluator.java\n+++ b/src/main/java/org/jabref/cli/CrossrefFetcherEvaluator.java\n@@ -25,9 +25,6 @@ import org.jabref.preferences.JabRefPreferences;\n  */\n public class CrossrefFetcherEvaluator {\n \n-    private CrossrefFetcherEvaluator() {\n-    }\n-\n     public static void main(String[] args) throws IOException, InterruptedException {\n         Globals.prefs = JabRefPreferences.getInstance();\n         try (FileReader reader = new FileReader(args[0])) {\ndiff --git a/src/main/java/org/jabref/cli/GenerateCharacterTable.java b/src/main/java/org/jabref/cli/GenerateCharacterTable.java\nindex babd5bbca0..4d51ee075c 100644\n--- a/src/main/java/org/jabref/cli/GenerateCharacterTable.java\n+++ b/src/main/java/org/jabref/cli/GenerateCharacterTable.java\n@@ -7,9 +7,6 @@ import org.jabref.logic.util.strings.HTMLUnicodeConversionMaps;\n \n public class GenerateCharacterTable {\n \n-    private GenerateCharacterTable() {\n-    }\n-\n     public static void main(String[] args) {\n         Map<Integer, String> characterMap = new TreeMap<>(HTMLUnicodeConversionMaps.NUMERICAL_LATEX_CONVERSION_MAP);\n         System.out.println("\\\\documentclass[10pt, a4paper]{article}");\ndiff --git a/src/main/java/org/jabref/cli/XMPUtilMain.java b/src/main/java/org/jabref/cli/XMPUtilMain.java\nindex 366e650636..f1a5e04155 100644\n--- a/src/main/java/org/jabref/cli/XMPUtilMain.java\n+++ b/src/main/java/org/jabref/cli/XMPUtilMain.java\n@@ -28,9 +28,6 @@ import org.apache.jempbox.xmp.XMPMetadata;\n \n public class XMPUtilMain {\n \n-    private XMPUtilMain() {\n-    }\n-\n     /**\n      * Command-line tool for working with XMP-data.\n      *\ndiff --git a/src/main/java/org/jabref/gui/EntryMarker.java b/src/main/java/org/jabref/gui/EntryMarker.java\nindex 8237304ace..9a29b776e6 100644\n--- a/src/main/java/org/jabref/gui/EntryMarker.java\n+++ b/src/main/java/org/jabref/gui/EntryMarker.java\n@@ -21,8 +21,6 @@ public class EntryMarker {\n \n     private static final Pattern MARK_NUMBER_PATTERN = Pattern.compile(JabRefPreferences.getInstance().MARKING_WITH_NUMBER_PATTERN);\n \n-    private EntryMarker() {\n-    }\n \n     /**\n      * @param increment whether the given increment should be added to the current one. Currently never used in JabRef. Could be used to increase marking color ("Mark in specific color").\ndiff --git a/src/main/java/org/jabref/gui/GUIGlobals.java b/src/main/java/org/jabref/gui/GUIGlobals.java\nindex 566905acec..dce93bbbaa 100644\n--- a/src/main/java/org/jabref/gui/GUIGlobals.java\n+++ b/src/main/java/org/jabref/gui/GUIGlobals.java\n@@ -47,9 +47,6 @@ public class GUIGlobals {\n \n     public static final int MAX_BACK_HISTORY_SIZE = 10; // The maximum number of "Back" operations stored.\n \n-    private GUIGlobals() {\n-    }\n-\n     public static JLabel getTableIcon(String fieldType) {\n         JLabel label = GUIGlobals.TABLE_ICONS.get(fieldType);\n         if (label == null) {\ndiff --git a/src/main/java/org/jabref/gui/actions/Actions.java b/src/main/java/org/jabref/gui/actions/Actions.java\nindex 8f93cd7697..1c573d42d6 100644\n--- a/src/main/java/org/jabref/gui/actions/Actions.java\n+++ b/src/main/java/org/jabref/gui/actions/Actions.java\n@@ -69,7 +69,4 @@ public class Actions {\n     public static final String UNMARK_ENTRIES = "unmarkEntries";\n     public static final String WRITE_XMP = "writeXMP";\n     public static final String PRINT_PREVIEW = "printPreview";\n-\n-    private Actions() {\n-    }\n }\ndiff --git a/src/main/java/org/jabref/gui/autosaveandbackup/BackupUIManager.java b/src/main/java/org/jabref/gui/autosaveandbackup/BackupUIManager.java\nindex 3e0e3be457..06279edbba 100644\n--- a/src/main/java/org/jabref/gui/autosaveandbackup/BackupUIManager.java\n+++ b/src/main/java/org/jabref/gui/autosaveandbackup/BackupUIManager.java\n@@ -13,9 +13,6 @@ import org.jabref.logic.l10n.Localization;\n  */\n public class BackupUIManager {\n \n-    private BackupUIManager() {\n-    }\n-\n     public static void showRestoreBackupDialog(JFrame frame, Path originalPath) {\n         int answer = JOptionPane.showConfirmDialog(frame,\n                 new StringBuilder()\ndiff --git a/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypesManager.java b/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypesManager.java\nindex e3bf628cad..e84f609c67 100644\n--- a/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypesManager.java\n+++ b/src/main/java/org/jabref/gui/customentrytypes/CustomEntryTypesManager.java\n@@ -10,9 +10,6 @@ import org.jabref.preferences.JabRefPreferences;\n \n public class CustomEntryTypesManager {\n \n-    private CustomEntryTypesManager() {\n-    }\n-\n     /**\n      * Iterate through all entry types, and store those that are\n      * custom defined to preferences. This method is called from\ndiff --git a/src/main/java/org/jabref/gui/desktop/JabRefDesktop.java b/src/main/java/org/jabref/gui/desktop/JabRefDesktop.java\nindex d41224bb35..cc87b921ce 100644\n--- a/src/main/java/org/jabref/gui/desktop/JabRefDesktop.java\n+++ b/src/main/java/org/jabref/gui/desktop/JabRefDesktop.java\n@@ -52,9 +52,6 @@ public class JabRefDesktop {\n     private static final NativeDesktop NATIVE_DESKTOP = getNativeDesktop();\n     private static final Pattern REMOTE_LINK_PATTERN = Pattern.compile("[a-z]+://.*");\n \n-    private JabRefDesktop() {\n-    }\n-\n     /**\n      * Open a http/pdf/ps viewer for the given link string.\n      */\ndiff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditorTabRelatedArticles.java b/src/main/java/org/jabref/gui/entryeditor/EntryEditorTabRelatedArticles.java\nindex d8a4401d9d..a29173b0ad 100644\n--- a/src/main/java/org/jabref/gui/entryeditor/EntryEditorTabRelatedArticles.java\n+++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditorTabRelatedArticles.java\n@@ -117,7 +117,7 @@ public class EntryEditorTabRelatedArticles extends JEditorPane {\n         this.addHyperlinkListener(e -> {\n             try {\n                 if ((e.getURL() != null) && (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)) {\n-                    JabRefDesktop.openBrowser(e.getURL().toString());\n+                        new JabRefDesktop().openBrowser(e.getURL().toString());\n                     }\n                 } catch (IOException e1) {\n                     LOGGER.error(e1.getMessage(), e1);\ndiff --git a/src/main/java/org/jabref/gui/entryeditor/FieldExtraComponents.java b/src/main/java/org/jabref/gui/entryeditor/FieldExtraComponents.java\nindex 8ad1f980be..3c40faa414 100644\n--- a/src/main/java/org/jabref/gui/entryeditor/FieldExtraComponents.java\n+++ b/src/main/java/org/jabref/gui/entryeditor/FieldExtraComponents.java\n@@ -51,10 +51,6 @@ import org.apache.commons.logging.LogFactory;\n \n public class FieldExtraComponents {\n \n-\n-    private FieldExtraComponents() {\n-    }\n-  \n     private static final Log LOGGER = LogFactory.getLog(FieldExtraComponents.class);\n \n     private static final String ABBREVIATION_TOOLTIP_TEXT = "<HTML>"\ndiff --git a/src/main/java/org/jabref/gui/exporter/ExportAction.java b/src/main/java/org/jabref/gui/exporter/ExportAction.java\nindex 51bfacbd1a..7d55611c2d 100644\n--- a/src/main/java/org/jabref/gui/exporter/ExportAction.java\n+++ b/src/main/java/org/jabref/gui/exporter/ExportAction.java\n@@ -33,9 +33,6 @@ public class ExportAction {\n \n     private static final Log LOGGER = LogFactory.getLog(ExportAction.class);\n \n-    private ExportAction() {\n-    }\n-\n \n     /**\n      * Create an AbstractAction for performing an export operation.\ndiff --git a/src/main/java/org/jabref/gui/externalfiles/AutoSetLinks.java b/src/main/java/org/jabref/gui/externalfiles/AutoSetLinks.java\nindex 3c95eedec6..a9a003270d 100644\n--- a/src/main/java/org/jabref/gui/externalfiles/AutoSetLinks.java\n+++ b/src/main/java/org/jabref/gui/externalfiles/AutoSetLinks.java\n@@ -39,9 +39,6 @@ import org.jabref.preferences.JabRefPreferences;\n \n public class AutoSetLinks {\n \n-    private AutoSetLinks() {\n-    }\n-\n     /**\n      * Shortcut method if links are set without using the GUI\n      *\ndiff --git a/src/main/java/org/jabref/gui/groups/GroupDescriptions.java b/src/main/java/org/jabref/gui/groups/GroupDescriptions.java\nindex a894a00445..0918a5880a 100644\n--- a/src/main/java/org/jabref/gui/groups/GroupDescriptions.java\n+++ b/src/main/java/org/jabref/gui/groups/GroupDescriptions.java\n@@ -8,9 +8,6 @@ import org.jabref.model.strings.StringUtil;\n \n public class GroupDescriptions {\n \n-    private GroupDescriptions() {\n-    }\n-\n     public static String getDescriptionForPreview(String field, String expr, boolean caseSensitive, boolean regExp) {\n         String header = regExp ? Localization.lang(\n                 "This group contains entries whose <b>%0</b> field contains the regular expression <b>%1</b>",\ndiff --git a/src/main/java/org/jabref/gui/groups/UndoableChangeEntriesOfGroup.java b/src/main/java/org/jabref/gui/groups/UndoableChangeEntriesOfGroup.java\nindex 248cedad68..85bc697b0e 100644\n--- a/src/main/java/org/jabref/gui/groups/UndoableChangeEntriesOfGroup.java\n+++ b/src/main/java/org/jabref/gui/groups/UndoableChangeEntriesOfGroup.java\n@@ -11,20 +11,18 @@ import org.jabref.model.FieldChange;\n \n public class UndoableChangeEntriesOfGroup {\n \n-    private UndoableChangeEntriesOfGroup() {\n-    }\n+    public static AbstractUndoableEdit getUndoableEdit(GroupTreeNodeViewModel node, List<FieldChange> changes) {\n+        boolean hasEntryChanges = false;\n+        NamedCompound entryChangeCompound = new NamedCompound(Localization.lang("change entries of group"));\n+        for (FieldChange fieldChange : changes) {\n+            hasEntryChanges = true;\n+            entryChangeCompound.addEdit(new UndoableFieldChange(fieldChange));\n+        }\n+        if (hasEntryChanges) {\n+            entryChangeCompound.end();\n+            return entryChangeCompound;\n+        }\n \n-   public static AbstractUndoableEdit getUndoableEdit(GroupTreeNodeViewModel node, List<FieldChange> changes) {\n-       boolean hasEntryChanges = false;\n-       NamedCompound entryChangeCompound = new NamedCompound(Localization.lang("change entries of group"));\n-       for(FieldChange fieldChange : changes) {\n-           hasEntryChanges = true;\n-           entryChangeCompound.addEdit(new UndoableFieldChange(fieldChange));\n-       }\n-       if (hasEntryChanges) {\n-           entryChangeCompound.end();\n-           return entryChangeCompound;\n-       }\n-       return null;\n+        return null;\n     }\n }\ndiff --git a/src/main/java/org/jabref/gui/groups/WarnAssignmentSideEffects.java b/src/main/java/org/jabref/gui/groups/WarnAssignmentSideEffects.java\nindex 2efb01a43f..749a350d13 100644\n--- a/src/main/java/org/jabref/gui/groups/WarnAssignmentSideEffects.java\n+++ b/src/main/java/org/jabref/gui/groups/WarnAssignmentSideEffects.java\n@@ -16,9 +16,6 @@ import org.jabref.model.groups.KeywordGroup;\n \n public class WarnAssignmentSideEffects {\n \n-    private WarnAssignmentSideEffects() {\n-    }\n-\n     /**\n      * Warns the user of undesired side effects of an explicit assignment/removal of entries to/from this group.\n      * Currently there are four types of groups: AllEntriesGroup, SearchGroup - do not support explicit assignment.\ndiff --git a/src/main/java/org/jabref/gui/importer/ImportFileFilter.java b/src/main/java/org/jabref/gui/importer/ImportFileFilter.java\nindex ccee0b8588..f7f9d82989 100644\n--- a/src/main/java/org/jabref/gui/importer/ImportFileFilter.java\n+++ b/src/main/java/org/jabref/gui/importer/ImportFileFilter.java\n@@ -12,9 +12,6 @@ import org.jabref.logic.util.FileExtensions;\n \n class ImportFileFilter {\n \n-    private ImportFileFilter() {\n-    }\n-\n     public static FileChooser.ExtensionFilter convert(Importer format) {\n         return new FileChooser.ExtensionFilter(format.getExtensions().getDescription(),\n                 format.getExtensions().getExtensions());\ndiff --git a/src/main/java/org/jabref/gui/importer/ImportFormats.java b/src/main/java/org/jabref/gui/importer/ImportFormats.java\nindex a9ec79746f..25aa23b768 100644\n--- a/src/main/java/org/jabref/gui/importer/ImportFormats.java\n+++ b/src/main/java/org/jabref/gui/importer/ImportFormats.java\n@@ -32,9 +32,6 @@ import org.apache.commons.logging.LogFactory;\n public class ImportFormats {\n     private static final Log LOGGER = LogFactory.getLog(ImportFormats.class);\n \n-    private ImportFormats() {\n-    }\n-\n     /**\n      * Create an AbstractAction for performing an Import operation.\n      * @param frame The JabRefFrame of this JabRef instance.\ndiff --git a/src/main/java/org/jabref/gui/importer/ParserResultWarningDialog.java b/src/main/java/org/jabref/gui/importer/ParserResultWarningDialog.java\nindex 90f489d755..a507b6bb9d 100644\n--- a/src/main/java/org/jabref/gui/importer/ParserResultWarningDialog.java\n+++ b/src/main/java/org/jabref/gui/importer/ParserResultWarningDialog.java\n@@ -18,9 +18,6 @@ import org.jabref.logic.l10n.Localization;\n  */\n public class ParserResultWarningDialog {\n \n-    private ParserResultWarningDialog() {\n-    }\n-\n     /**\n      * Shows a dialog with the warnings from an import or open of a file\n      *\ndiff --git a/src/main/java/org/jabref/gui/journals/JournalAbbreviationsUtil.java b/src/main/java/org/jabref/gui/journals/JournalAbbreviationsUtil.java\nindex 86a284cd78..f8aeb67fe8 100644\n--- a/src/main/java/org/jabref/gui/journals/JournalAbbreviationsUtil.java\n+++ b/src/main/java/org/jabref/gui/journals/JournalAbbreviationsUtil.java\n@@ -10,9 +10,6 @@ import org.jabref.logic.l10n.Localization;\n \n public class JournalAbbreviationsUtil {\n \n-    private JournalAbbreviationsUtil() {\n-    }\n-\n     public static TableModel getTableModel(Collection<Abbreviation> abbreviations) {\n         Object[][] cells = new Object[abbreviations.size()][2];\n         int row = 0;\ndiff --git a/src/main/java/org/jabref/gui/keyboard/EmacsKeyBindings.java b/src/main/java/org/jabref/gui/keyboard/EmacsKeyBindings.java\nindex 2570d4035f..79928ae6f0 100644\n--- a/src/main/java/org/jabref/gui/keyboard/EmacsKeyBindings.java\n+++ b/src/main/java/org/jabref/gui/keyboard/EmacsKeyBindings.java\n@@ -188,9 +188,6 @@ public class EmacsKeyBindings {\n             new JEditorPane(),\n     };\n \n-    private EmacsKeyBindings() {\n-    }\n-\n     /**\n      * Loads the emacs keybindings for all common <code>JTextComponent</code>s.\n      *\ndiff --git a/src/main/java/org/jabref/gui/keyboard/KeyBinder.java b/src/main/java/org/jabref/gui/keyboard/KeyBinder.java\nindex b1a40c2a11..34e3f06a72 100644\n--- a/src/main/java/org/jabref/gui/keyboard/KeyBinder.java\n+++ b/src/main/java/org/jabref/gui/keyboard/KeyBinder.java\n@@ -10,9 +10,6 @@ import org.jabref.Globals;\n \n public class KeyBinder {\n \n-    private KeyBinder() {\n-    }\n-\n     /**\n      * Binds ESC-Key to cancel button\n      *\ndiff --git a/src/main/java/org/jabref/gui/maintable/MainTableNameFormatter.java b/src/main/java/org/jabref/gui/maintable/MainTableNameFormatter.java\nindex d04994bbdf..dd5b88eec7 100644\n--- a/src/main/java/org/jabref/gui/maintable/MainTableNameFormatter.java\n+++ b/src/main/java/org/jabref/gui/maintable/MainTableNameFormatter.java\n@@ -6,8 +6,6 @@ import org.jabref.preferences.JabRefPreferences;\n \n public class MainTableNameFormatter {\n \n-    private MainTableNameFormatter(){}\n-    \n     /**\n      * Format a name field for the table, according to user preferences.\n      *\ndiff --git a/src/main/java/org/jabref/gui/search/JTextFieldChangeListenerUtil.java b/src/main/java/org/jabref/gui/search/JTextFieldChangeListenerUtil.java\nindex 643e2777d4..428e4d36de 100644\n--- a/src/main/java/org/jabref/gui/search/JTextFieldChangeListenerUtil.java\n+++ b/src/main/java/org/jabref/gui/search/JTextFieldChangeListenerUtil.java\n@@ -19,9 +19,6 @@ import javax.swing.text.JTextComponent;\n  */\n public class JTextFieldChangeListenerUtil {\n \n-    private JTextFieldChangeListenerUtil() {\n-    }\n-\n     /**\n      * Installs a listener to receive notification when the text of any\n      * {@code JTextComponent} is changed. Internally, it installs a\ndiff --git a/src/main/java/org/jabref/gui/specialfields/SpecialFieldDropDown.java b/src/main/java/org/jabref/gui/specialfields/SpecialFieldDropDown.java\nindex 636eb75656..89aaf456a0 100644\n--- a/src/main/java/org/jabref/gui/specialfields/SpecialFieldDropDown.java\n+++ b/src/main/java/org/jabref/gui/specialfields/SpecialFieldDropDown.java\n@@ -21,9 +21,6 @@ import com.jgoodies.looks.Options;\n \n public class SpecialFieldDropDown {\n \n-    private SpecialFieldDropDown() {\n-    }\n-\n     public static JButton generateSpecialFieldButtonWithDropDown(SpecialField field, JabRefFrame frame) {\n         Dimension buttonDim = new Dimension(23, 23);\n         SpecialFieldViewModel viewModel = new SpecialFieldViewModel(field);\ndiff --git a/src/main/java/org/jabref/gui/util/BindingsHelper.java b/src/main/java/org/jabref/gui/util/BindingsHelper.java\nindex 8378ba1c86..a47f459043 100644\n--- a/src/main/java/org/jabref/gui/util/BindingsHelper.java\n+++ b/src/main/java/org/jabref/gui/util/BindingsHelper.java\n@@ -16,10 +16,6 @@ import javafx.scene.Node;\n  * Some methods are taken from https://bugs.openjdk.java.net/browse/JDK-8134679\n  */\n public class BindingsHelper {\n-\n-    private BindingsHelper() {\n-    }\n-\n     public static <T> BooleanBinding any(ObservableList<T> source, Predicate<T> predicate) {\n         return Bindings.createBooleanBinding(() -> source.stream().anyMatch(predicate), source);\n     }\ndiff --git a/src/main/java/org/jabref/logic/bibtexkeypattern/BibtexKeyPatternUtil.java b/src/main/java/org/jabref/logic/bibtexkeypattern/BibtexKeyPatternUtil.java\nindex 7f2c56e665..2d696b5653 100644\n--- a/src/main/java/org/jabref/logic/bibtexkeypattern/BibtexKeyPatternUtil.java\n+++ b/src/main/java/org/jabref/logic/bibtexkeypattern/BibtexKeyPatternUtil.java\n@@ -45,9 +45,6 @@ public class BibtexKeyPatternUtil {\n \n     private static final int CHARS_OF_FIRST = 5;\n \n-    private BibtexKeyPatternUtil() {\n-    }\n-\n     private static String normalize(String content) {\n         List<String> tokens = new ArrayList<>();\n         int b = 0;\ndiff --git a/src/main/java/org/jabref/logic/bst/BibtexNameFormatter.java b/src/main/java/org/jabref/logic/bst/BibtexNameFormatter.java\nindex 6afe53acbe..bebf017169 100644\n--- a/src/main/java/org/jabref/logic/bst/BibtexNameFormatter.java\n+++ b/src/main/java/org/jabref/logic/bst/BibtexNameFormatter.java\n@@ -26,9 +26,6 @@ import org.jabref.model.entry.AuthorList;\n  */\n public class BibtexNameFormatter {\n \n-    private BibtexNameFormatter() {\n-    }\n-\n     public static String formatName(String authorsNameList, int whichName, String formatString, Warn warn) {\n         AuthorList al = AuthorList.parse(authorsNameList);\n \ndiff --git a/src/main/java/org/jabref/logic/bst/BibtexPurify.java b/src/main/java/org/jabref/logic/bst/BibtexPurify.java\nindex 04c697732e..09b248c2a1 100644\n--- a/src/main/java/org/jabref/logic/bst/BibtexPurify.java\n+++ b/src/main/java/org/jabref/logic/bst/BibtexPurify.java\n@@ -12,9 +12,6 @@ package org.jabref.logic.bst;\n  */\n public class BibtexPurify {\n \n-    private BibtexPurify() {\n-    }\n-\n     /**\n      *\n      * @param toPurify\ndiff --git a/src/main/java/org/jabref/logic/bst/BibtexTextPrefix.java b/src/main/java/org/jabref/logic/bst/BibtexTextPrefix.java\nindex 59ff77d9b2..2a12123fd4 100644\n--- a/src/main/java/org/jabref/logic/bst/BibtexTextPrefix.java\n+++ b/src/main/java/org/jabref/logic/bst/BibtexTextPrefix.java\n@@ -16,9 +16,6 @@ package org.jabref.logic.bst;\n  */\n public class BibtexTextPrefix {\n \n-    private BibtexTextPrefix() {\n-    }\n-\n     /**\n      *\n      * @param numOfChars\ndiff --git a/src/main/java/org/jabref/logic/bst/BibtexWidth.java b/src/main/java/org/jabref/logic/bst/BibtexWidth.java\nindex f81bae9762..a03369fcc9 100644\n--- a/src/main/java/org/jabref/logic/bst/BibtexWidth.java\n+++ b/src/main/java/org/jabref/logic/bst/BibtexWidth.java\n@@ -29,6 +29,7 @@ public class BibtexWidth {\n \n     private static int[] widths;\n \n+\n     static {\n         if (BibtexWidth.widths == null) {\n             BibtexWidth.widths = new int[128];\n@@ -134,9 +135,6 @@ public class BibtexWidth {\n         }\n     }\n \n-    private BibtexWidth() {\n-    }\n-\n     private static int getSpecialCharWidth(char[] c, int pos) {\n         if ((pos + 1) < c.length) {\n             if ((c[pos] == \'o\') && (c[pos + 1] == \'e\')) {\ndiff --git a/src/main/java/org/jabref/logic/citationstyle/CitationStyleGenerator.java b/src/main/java/org/jabref/logic/citationstyle/CitationStyleGenerator.java\nindex 064b947d44..5a3ab56af3 100644\n--- a/src/main/java/org/jabref/logic/citationstyle/CitationStyleGenerator.java\n+++ b/src/main/java/org/jabref/logic/citationstyle/CitationStyleGenerator.java\n@@ -29,9 +29,6 @@ public class CitationStyleGenerator {\n     private static final Log LOGGER = LogFactory.getLog(CitationStyleGenerator.class);\n     private static final BibTeXConverter BIBTEX_CONVERTER = new BibTeXConverter();\n \n-    private CitationStyleGenerator() {\n-    }\n-\n     /**\n      * WARNING: the citation is generated using JavaScript which may take some time, better call it from outside the main Thread\n      * Generates a Citation based on the given entry and style\ndiff --git a/src/main/java/org/jabref/logic/cleanup/Cleanups.java b/src/main/java/org/jabref/logic/cleanup/Cleanups.java\nindex 31af37bd34..d413ef9884 100644\n--- a/src/main/java/org/jabref/logic/cleanup/Cleanups.java\n+++ b/src/main/java/org/jabref/logic/cleanup/Cleanups.java\n@@ -56,9 +56,6 @@ public class Cleanups {\n         RECOMMEND_BIBLATEX_ACTIONS = new FieldFormatterCleanups(false, recommendedBiblatexFormatters);\n     }\n \n-    private Cleanups() {\n-    }\n-\n     public static List<Formatter> getAvailableFormatters() {\n         return Collections.unmodifiableList(availableFormatters);\n     }\ndiff --git a/src/main/java/org/jabref/logic/exporter/ExportFormats.java b/src/main/java/org/jabref/logic/exporter/ExportFormats.java\nindex 38c04466d7..1fc88a244e 100644\n--- a/src/main/java/org/jabref/logic/exporter/ExportFormats.java\n+++ b/src/main/java/org/jabref/logic/exporter/ExportFormats.java\n@@ -15,8 +15,6 @@ public class ExportFormats {\n     // Global variable that is used for counting output entries when exporting:\n     public static int entryNumber;\n \n-    private ExportFormats() {\n-    }\n \n     public static void initAllExports(Map<String, ExportFormat> customFormats,\n             LayoutFormatterPreferences layoutPreferences, SavePreferences savePreferences) {\ndiff --git a/src/main/java/org/jabref/logic/exporter/MetaDataSerializer.java b/src/main/java/org/jabref/logic/exporter/MetaDataSerializer.java\nindex c79e7b8ff1..f1d9a27a53 100644\n--- a/src/main/java/org/jabref/logic/exporter/MetaDataSerializer.java\n+++ b/src/main/java/org/jabref/logic/exporter/MetaDataSerializer.java\n@@ -18,9 +18,6 @@ import org.jabref.model.strings.StringUtil;\n \n public class MetaDataSerializer {\n \n-    private MetaDataSerializer() {\n-    }\n-\n     /**\n      * Writes all data in the format <key, serialized data>.\n      */\n@@ -93,7 +90,7 @@ public class MetaDataSerializer {\n                 stringyPattern.put(metaDataKey, data);\n             }\n         }\n-        if ((citeKeyPattern.getDefaultValue() != null) && !citeKeyPattern.getDefaultValue().isEmpty()) {\n+        if (citeKeyPattern.getDefaultValue() != null && !citeKeyPattern.getDefaultValue().isEmpty()) {\n             List<String> data = new ArrayList<>();\n             data.add(citeKeyPattern.getDefaultValue().get(0));\n             stringyPattern.put(MetaData.KEYPATTERNDEFAULT, data);\ndiff --git a/src/main/java/org/jabref/logic/formatter/Formatters.java b/src/main/java/org/jabref/logic/formatter/Formatters.java\nindex 862f97d65a..9f6ac51bd3 100644\n--- a/src/main/java/org/jabref/logic/formatter/Formatters.java\n+++ b/src/main/java/org/jabref/logic/formatter/Formatters.java\n@@ -63,9 +63,6 @@ public class Formatters {\n \n     public static final List<Formatter> ALL = new ArrayList<>();\n \n-    private Formatters() {\n-    }\n-\n     public static Optional<Formatter> getFormatterForModifier(String modifier) {\n         Objects.requireNonNull(modifier);\n         Optional<Formatter> formatter = ALL.stream().filter(f -> f.getKey().equals(modifier)).findAny();\ndiff --git a/src/main/java/org/jabref/logic/groups/DefaultGroupsFactory.java b/src/main/java/org/jabref/logic/groups/DefaultGroupsFactory.java\nindex cfceabdce6..702f505306 100644\n--- a/src/main/java/org/jabref/logic/groups/DefaultGroupsFactory.java\n+++ b/src/main/java/org/jabref/logic/groups/DefaultGroupsFactory.java\n@@ -5,9 +5,6 @@ import org.jabref.model.groups.AllEntriesGroup;\n \n public class DefaultGroupsFactory {\n \n-    private DefaultGroupsFactory() {\n-    }\n-\n     public static AllEntriesGroup getAllEntriesGroup() {\n         AllEntriesGroup group = new AllEntriesGroup(Localization.lang("All entries"));\n         group.setIconCode(org.jabref.gui.IconTheme.JabRefIcon.ALL_ENTRIES_GROUP_ICON.getCode());\ndiff --git a/src/main/java/org/jabref/logic/importer/OpenDatabase.java b/src/main/java/org/jabref/logic/importer/OpenDatabase.java\nindex 62c22412f7..6e037f2f66 100644\n--- a/src/main/java/org/jabref/logic/importer/OpenDatabase.java\n+++ b/src/main/java/org/jabref/logic/importer/OpenDatabase.java\n@@ -19,9 +19,6 @@ import org.apache.commons.logging.LogFactory;\n public class OpenDatabase {\n     public static final Log LOGGER = LogFactory.getLog(OpenDatabase.class);\n \n-    private OpenDatabase() {\n-    }\n-\n     /**\n      * Load database (bib-file)\n      *\ndiff --git a/src/main/java/org/jabref/logic/importer/WebFetchers.java b/src/main/java/org/jabref/logic/importer/WebFetchers.java\nindex 5e4c390353..8025d16e82 100644\n--- a/src/main/java/org/jabref/logic/importer/WebFetchers.java\n+++ b/src/main/java/org/jabref/logic/importer/WebFetchers.java\n@@ -24,9 +24,6 @@ import org.jabref.model.entry.identifier.Identifier;\n \n public class WebFetchers {\n \n-    private WebFetchers() {\n-    }\n-\n     public static Optional<IdBasedFetcher> getIdBasedFetcherForField(String field, ImportFormatPreferences preferences) {\n         IdBasedFetcher fetcher;\n         switch (field) {\ndiff --git a/src/main/java/org/jabref/logic/importer/fetcher/BibsonomyScraper.java b/src/main/java/org/jabref/logic/importer/fetcher/BibsonomyScraper.java\nindex 0c21b9c72b..370867fe69 100644\n--- a/src/main/java/org/jabref/logic/importer/fetcher/BibsonomyScraper.java\n+++ b/src/main/java/org/jabref/logic/importer/fetcher/BibsonomyScraper.java\n@@ -24,9 +24,6 @@ public class BibsonomyScraper {\n \n     private static final Log LOGGER = LogFactory.getLog(BibsonomyScraper.class);\n \n-    private BibsonomyScraper() {\n-    }\n-\n     /**\n      * Return a BibEntry by looking up the given url from the BibSonomy scraper.\n      * @param entryUrl\ndiff --git a/src/main/java/org/jabref/logic/importer/fetcher/CrossRef.java b/src/main/java/org/jabref/logic/importer/fetcher/CrossRef.java\nindex 45cf974338..1eb152fa33 100644\n--- a/src/main/java/org/jabref/logic/importer/fetcher/CrossRef.java\n+++ b/src/main/java/org/jabref/logic/importer/fetcher/CrossRef.java\n@@ -43,39 +43,6 @@ public class CrossRef implements IdParserFetcher<DOI>, EntryBasedParserFetcher,\n \n     private static final RemoveBracesFormatter REMOVE_BRACES_FORMATTER = new RemoveBracesFormatter();\n \n-    public static Optional<DOI> findDOI(BibEntry entry) {\n-        Objects.requireNonNull(entry);\n-        Optional<DOI> doi = Optional.empty();\n-        \n-        // title is minimum requirement\n-        Optional<String> title = entry.getLatexFreeField(FieldName.TITLE);\n-\n-        if (!title.isPresent() || title.get().isEmpty()) {\n-            return doi;\n-        }\n-\n-        String query = enhanceQuery(title.get(), entry);\n-\n-        try {\n-            HttpResponse<JsonNode> response = Unirest.get(API_URL + "/works")\n-                    .queryString("query", query)\n-                    .queryString("rows", API_RESULTS)\n-                    .asJson();\n-\n-            JSONArray items = response.getBody().getObject().getJSONObject("message").getJSONArray("items");\n-            // quality check\n-            Optional<String> dataDoi = findMatchingEntry(entry, items);\n-\n-            if (dataDoi.isPresent()) {\n-                LOGGER.debug("DOI " + dataDoi.get() + " for " + title.get() + " found.");\n-                return DOI.build(dataDoi.get());\n-            }\n-        } catch (UnirestException e) {\n-            LOGGER.warn("Unable to query CrossRef API: " + e.getMessage(), e);\n-        }\n-        return doi;\n-    }\n-  \n     @Override\n     public String getName() {\n         return "Crossref";\ndiff --git a/src/main/java/org/jabref/logic/importer/util/GroupsParser.java b/src/main/java/org/jabref/logic/importer/util/GroupsParser.java\nindex bfe04995ba..a769f6e729 100644\n--- a/src/main/java/org/jabref/logic/importer/util/GroupsParser.java\n+++ b/src/main/java/org/jabref/logic/importer/util/GroupsParser.java\n@@ -24,9 +24,6 @@ import org.jabref.model.strings.StringUtil;\n  */\n public class GroupsParser {\n \n-    private GroupsParser() {\n-    }\n-\n     public static GroupTreeNode importGroups(List<String> orderedData, Character keywordSeparator)\n             throws ParseException {\n         try {\ndiff --git a/src/main/java/org/jabref/logic/importer/util/MetaDataParser.java b/src/main/java/org/jabref/logic/importer/util/MetaDataParser.java\nindex 1946871ede..f9e8b64e31 100644\n--- a/src/main/java/org/jabref/logic/importer/util/MetaDataParser.java\n+++ b/src/main/java/org/jabref/logic/importer/util/MetaDataParser.java\n@@ -25,8 +25,6 @@ public class MetaDataParser {\n \n     private static final Log LOGGER = LogFactory.getLog(MetaDataParser.class);\n \n-    private MetaDataParser() {\n-    }\n \n     /**\n      * Parses the given data map and returns a new resulting {@link MetaData} instance.\ndiff --git a/src/main/java/org/jabref/logic/integrity/FieldCheckers.java b/src/main/java/org/jabref/logic/integrity/FieldCheckers.java\nindex f809d535cf..f0c217a403 100644\n--- a/src/main/java/org/jabref/logic/integrity/FieldCheckers.java\n+++ b/src/main/java/org/jabref/logic/integrity/FieldCheckers.java\n@@ -12,10 +12,6 @@ import com.google.common.collect.ArrayListMultimap;\n import com.google.common.collect.Multimap;\n \n public class FieldCheckers {\n-\n-    private FieldCheckers() {\n-    }\n-\n     static List<FieldChecker> getAll(BibDatabaseContext databaseContext, FileDirectoryPreferences fileDirectoryPreferences) {\n         return getAllMap(databaseContext, fileDirectoryPreferences)\n                 .entries().stream()\ndiff --git a/src/main/java/org/jabref/logic/journals/AbbreviationWriter.java b/src/main/java/org/jabref/logic/journals/AbbreviationWriter.java\nindex 381f4ceb22..34009e32f2 100644\n--- a/src/main/java/org/jabref/logic/journals/AbbreviationWriter.java\n+++ b/src/main/java/org/jabref/logic/journals/AbbreviationWriter.java\n@@ -15,9 +15,6 @@ import org.jabref.logic.util.OS;\n  */\n public class AbbreviationWriter {\n \n-    private AbbreviationWriter() {\n-    }\n-\n     /**\n      * This method will write the list of abbreviations to a file on the file system specified by the given path.\n      * If the file already exists its content will be overridden, otherwise a new file will be created.\ndiff --git a/src/main/java/org/jabref/logic/l10n/Encodings.java b/src/main/java/org/jabref/logic/l10n/Encodings.java\nindex 76d5797274..1019c0bef0 100644\n--- a/src/main/java/org/jabref/logic/l10n/Encodings.java\n+++ b/src/main/java/org/jabref/logic/l10n/Encodings.java\n@@ -17,7 +17,4 @@ public class Encodings {\n         ENCODINGS = encodingsList.toArray(new Charset[encodingsList.size()]);\n         ENCODINGS_DISPLAYNAMES = encodingsStringList.toArray(new String[encodingsStringList.size()]);\n     }\n-\n-    private Encodings() {\n-    }\n }\ndiff --git a/src/main/java/org/jabref/logic/l10n/Languages.java b/src/main/java/org/jabref/logic/l10n/Languages.java\nindex 255dd5c44d..28611efdba 100644\n--- a/src/main/java/org/jabref/logic/l10n/Languages.java\n+++ b/src/main/java/org/jabref/logic/l10n/Languages.java\n@@ -33,9 +33,6 @@ public class Languages {\n         LANGUAGES.put("Simplified Chinese", "zh");\n     }\n \n-    private Languages() {\n-    }\n-\n     public static Optional<Locale> convertToSupportedLocale(String language) {\n         Objects.requireNonNull(language);\n \ndiff --git a/src/main/java/org/jabref/logic/l10n/Localization.java b/src/main/java/org/jabref/logic/l10n/Localization.java\nindex 7667be55d2..32482b646e 100644\n--- a/src/main/java/org/jabref/logic/l10n/Localization.java\n+++ b/src/main/java/org/jabref/logic/l10n/Localization.java\n@@ -20,9 +20,6 @@ public class Localization {\n     private static ResourceBundle messages;\n     private static ResourceBundle menuTitles;\n \n-    private Localization() {\n-    }\n-\n     public static LocalizationBundle getMessages() {\n         return new LocalizationBundle(messages);\n     }\ndiff --git a/src/main/java/org/jabref/logic/layout/AbstractParamLayoutFormatter.java b/src/main/java/org/jabref/logic/layout/AbstractParamLayoutFormatter.java\nindex 1a40052b4f..1fa6b80cf7 100644\n--- a/src/main/java/org/jabref/logic/layout/AbstractParamLayoutFormatter.java\n+++ b/src/main/java/org/jabref/logic/layout/AbstractParamLayoutFormatter.java\n@@ -12,9 +12,6 @@ public abstract class AbstractParamLayoutFormatter implements ParamLayoutFormatt\n     private static final char SEPARATOR = \',\';\n \n \n-    protected AbstractParamLayoutFormatter() {\n-    }\n-\n     /**\n      * Parse an argument string and return the parts of the argument. The parts are\n      * separated by commas, and escaped commas are reduced to literal commas.\ndiff --git a/src/main/java/org/jabref/logic/logging/JabRefLogger.java b/src/main/java/org/jabref/logic/logging/JabRefLogger.java\nindex ee47c81743..0ee6bfa3d4 100644\n--- a/src/main/java/org/jabref/logic/logging/JabRefLogger.java\n+++ b/src/main/java/org/jabref/logic/logging/JabRefLogger.java\n@@ -11,9 +11,6 @@ import org.apache.logging.log4j.core.config.LoggerConfig;\n public class JabRefLogger {\n     private static final Log LOGGER = LogFactory.getLog(JabRefLogger.class);\n \n-    private JabRefLogger() {\n-    }\n-\n     public static void setDebug() {\n         setLogLevelToDebugForJabRefClasses();\n         LOGGER.debug("Showing debug messages");\ndiff --git a/src/main/java/org/jabref/logic/msbib/BibTeXConverter.java b/src/main/java/org/jabref/logic/msbib/BibTeXConverter.java\nindex 671db1ebdb..73114b8d19 100644\n--- a/src/main/java/org/jabref/logic/msbib/BibTeXConverter.java\n+++ b/src/main/java/org/jabref/logic/msbib/BibTeXConverter.java\n@@ -16,9 +16,6 @@ public class BibTeXConverter {\n \n     private static final String MSBIB_PREFIX = "msbib-";\n \n-    private BibTeXConverter() {\n-    }\n-\n     /**\n      * Converts an {@link MSBibEntry} to a {@link BibEntry} for import\n      * @param entry The MsBibEntry to convert\ndiff --git a/src/main/java/org/jabref/logic/msbib/MSBibConverter.java b/src/main/java/org/jabref/logic/msbib/MSBibConverter.java\nindex a7bc4f49a4..b0f14ff9d6 100644\n--- a/src/main/java/org/jabref/logic/msbib/MSBibConverter.java\n+++ b/src/main/java/org/jabref/logic/msbib/MSBibConverter.java\n@@ -12,9 +12,6 @@ public class MSBibConverter {\n     private static final String MSBIB_PREFIX = "msbib-";\n     private static final String BIBTEX_PREFIX = "BIBTEX_";\n \n-    private MSBibConverter() {\n-    }\n-\n     public static MSBibEntry convert(BibEntry entry) {\n         MSBibEntry result = new MSBibEntry();\n \ndiff --git a/src/main/java/org/jabref/logic/msbib/MSBibMapping.java b/src/main/java/org/jabref/logic/msbib/MSBibMapping.java\nindex 752484fd11..f4bfa2177e 100644\n--- a/src/main/java/org/jabref/logic/msbib/MSBibMapping.java\n+++ b/src/main/java/org/jabref/logic/msbib/MSBibMapping.java\n@@ -80,9 +80,6 @@ public class MSBibMapping {\n         biblatexToMsBib.put(MSBIB_PREFIX + "productioncompany", "ProductionCompany");\n     }\n \n-    private MSBibMapping() {\n-    }\n-\n     public static String getBiblatexEntryType(String msbibType) {\n         final String defaultType = BibtexEntryTypes.MISC.getName();\n \ndiff --git a/src/main/java/org/jabref/logic/net/ProxyRegisterer.java b/src/main/java/org/jabref/logic/net/ProxyRegisterer.java\nindex ee2eac121f..ef646abca1 100644\n--- a/src/main/java/org/jabref/logic/net/ProxyRegisterer.java\n+++ b/src/main/java/org/jabref/logic/net/ProxyRegisterer.java\n@@ -2,9 +2,6 @@ package org.jabref.logic.net;\n \n public class ProxyRegisterer {\n \n-    private ProxyRegisterer() {\n-    }\n-\n     public static void register(ProxyPreferences proxyPrefs) {\n         if (proxyPrefs.isUseProxy()) {\n             // NetworkTab.java ensures that proxyHostname and proxyPort are not null\ndiff --git a/src/main/java/org/jabref/logic/net/URLUtil.java b/src/main/java/org/jabref/logic/net/URLUtil.java\nindex 0d86550eb1..d82bb87adc 100644\n--- a/src/main/java/org/jabref/logic/net/URLUtil.java\n+++ b/src/main/java/org/jabref/logic/net/URLUtil.java\n@@ -13,9 +13,6 @@ public class URLUtil {\n     // Detect Google search URL\n     private static final String GOOGLE_SEARCH_EXP = "^https?://(?:www\\\\.)?google\\\\.[\\\\.a-z]+?/url.*";\n \n-    private URLUtil() {\n-    }\n-\n     /**\n      * Cleans URLs returned by Google search.\n      *\ndiff --git a/src/main/java/org/jabref/logic/remote/RemoteUtil.java b/src/main/java/org/jabref/logic/remote/RemoteUtil.java\nindex 66e3a543c6..67649fba1c 100644\n--- a/src/main/java/org/jabref/logic/remote/RemoteUtil.java\n+++ b/src/main/java/org/jabref/logic/remote/RemoteUtil.java\n@@ -2,10 +2,7 @@ package org.jabref.logic.remote;\n \n public class RemoteUtil {\n \n-    private RemoteUtil() {\n-    }\n-\n     public static boolean isUserPort(int portNumber) {\n-        return (portNumber >= 1024) && (portNumber <= 65535);\n+        return portNumber >= 1024 && portNumber <= 65535;\n     }\n }\ndiff --git a/src/main/java/org/jabref/logic/remote/client/RemoteListenerClient.java b/src/main/java/org/jabref/logic/remote/client/RemoteListenerClient.java\nindex dedf61bd81..71ce5cad05 100644\n--- a/src/main/java/org/jabref/logic/remote/client/RemoteListenerClient.java\n+++ b/src/main/java/org/jabref/logic/remote/client/RemoteListenerClient.java\n@@ -16,9 +16,6 @@ public class RemoteListenerClient {\n     private static final int TIMEOUT = 2000;\n \n \n-    private RemoteListenerClient() {\n-    }\n-\n     /**\n      * Attempt to send command line arguments to already running JabRef instance.\n      *\ndiff --git a/src/main/java/org/jabref/logic/search/rules/describer/SearchDescribers.java b/src/main/java/org/jabref/logic/search/rules/describer/SearchDescribers.java\nindex ef844983a7..799c9cd371 100644\n--- a/src/main/java/org/jabref/logic/search/rules/describer/SearchDescribers.java\n+++ b/src/main/java/org/jabref/logic/search/rules/describer/SearchDescribers.java\n@@ -7,9 +7,6 @@ import org.jabref.model.search.rules.SearchRule;\n \n public class SearchDescribers {\n \n-    private SearchDescribers() {\n-    }\n-\n     /**\n      * Get the search describer for a given search rule and a given search query.\n      *\ndiff --git a/src/main/java/org/jabref/logic/util/MetadataSerializationConfiguration.java b/src/main/java/org/jabref/logic/util/MetadataSerializationConfiguration.java\nindex c040f6ac5f..d00ced1bdb 100644\n--- a/src/main/java/org/jabref/logic/util/MetadataSerializationConfiguration.java\n+++ b/src/main/java/org/jabref/logic/util/MetadataSerializationConfiguration.java\n@@ -57,8 +57,4 @@ public class MetadataSerializationConfiguration {\n      * Identifier for {@link AutomaticKeywordGroup}.\n      */\n     public static final String AUTOMATIC_KEYWORD_GROUP_ID = "AutomaticKeywordGroup:";\n-\n-  \n-    private MetadataSerializationConfiguration() {\n-    }\n }\ndiff --git a/src/main/java/org/jabref/logic/util/OS.java b/src/main/java/org/jabref/logic/util/OS.java\nindex bf284f4a05..bcb8db0185 100644\n--- a/src/main/java/org/jabref/logic/util/OS.java\n+++ b/src/main/java/org/jabref/logic/util/OS.java\n@@ -19,7 +19,4 @@ public class OS {\n     // Newlines\n     // will be overridden in initialization due to feature #857 @ JabRef.java\n     public static String NEWLINE = System.lineSeparator();\n-\n-    private OS() {\n-    }\n }\ndiff --git a/src/main/java/org/jabref/logic/util/TestEntry.java b/src/main/java/org/jabref/logic/util/TestEntry.java\nindex 8d2b3920b8..67ad4fbfbe 100644\n--- a/src/main/java/org/jabref/logic/util/TestEntry.java\n+++ b/src/main/java/org/jabref/logic/util/TestEntry.java\n@@ -5,9 +5,6 @@ import org.jabref.model.entry.FieldName;\n \n public class TestEntry {\n \n-    private TestEntry() {\n-    }\n-\n     public static BibEntry getTestEntry() {\n \n         BibEntry entry = new BibEntry("article");\ndiff --git a/src/main/java/org/jabref/logic/util/UpdateField.java b/src/main/java/org/jabref/logic/util/UpdateField.java\nindex d7a2437caa..e3a62c5f0f 100644\n--- a/src/main/java/org/jabref/logic/util/UpdateField.java\n+++ b/src/main/java/org/jabref/logic/util/UpdateField.java\n@@ -11,9 +11,6 @@ import org.jabref.model.entry.FieldName;\n \n public class UpdateField {\n \n-    private UpdateField() {\n-    }\n-\n     /**\n      * Updating a field will result in the entry being reformatted on save\n      *\ndiff --git a/src/main/java/org/jabref/logic/util/io/FileBasedLock.java b/src/main/java/org/jabref/logic/util/io/FileBasedLock.java\nindex 904b79ef4f..4247b16d3b 100644\n--- a/src/main/java/org/jabref/logic/util/io/FileBasedLock.java\n+++ b/src/main/java/org/jabref/logic/util/io/FileBasedLock.java\n@@ -22,9 +22,6 @@ public class FileBasedLock {\n      */\n     public static final long LOCKFILE_CRITICAL_AGE = 60000;\n \n-    private FileBasedLock() {\n-    }\n-\n     /**\n      * This method checks whether there is a lock file for the given file. If\n      * there is, it waits for 500 ms. This is repeated until the lock is gone\ndiff --git a/src/main/java/org/jabref/logic/util/io/FileFinder.java b/src/main/java/org/jabref/logic/util/io/FileFinder.java\nindex 522d39e140..6b962a9940 100644\n--- a/src/main/java/org/jabref/logic/util/io/FileFinder.java\n+++ b/src/main/java/org/jabref/logic/util/io/FileFinder.java\n@@ -20,9 +20,6 @@ public class FileFinder {\n \n     private static final Log LOGGER = LogFactory.getLog(FileFinder.class);\n \n-    private FileFinder() {\n-    }\n-\n     public static Set<Path> findFiles(List<String> extensions, List<File> directories) {\n \n         Objects.requireNonNull(directories, "Directories must not be null!");\ndiff --git a/src/main/java/org/jabref/logic/util/io/FileNameCleaner.java b/src/main/java/org/jabref/logic/util/io/FileNameCleaner.java\nindex b783233f11..411e7e8bb4 100644\n--- a/src/main/java/org/jabref/logic/util/io/FileNameCleaner.java\n+++ b/src/main/java/org/jabref/logic/util/io/FileNameCleaner.java\n@@ -26,9 +26,6 @@ public class FileNameCleaner {\n     };\n     // @formatter:on\n \n-    private FileNameCleaner() {\n-    }\n-\n \n     /**\n      * Replaces illegal characters in given fileName by \'_\'\ndiff --git a/src/main/java/org/jabref/logic/util/io/FileUtil.java b/src/main/java/org/jabref/logic/util/io/FileUtil.java\nindex 5e5f7907e5..764d124f47 100644\n--- a/src/main/java/org/jabref/logic/util/io/FileUtil.java\n+++ b/src/main/java/org/jabref/logic/util/io/FileUtil.java\n@@ -44,9 +44,6 @@ public class FileUtil {\n \n     public static final boolean isPosixCompilant = FileSystems.getDefault().supportedFileAttributeViews().contains("posix");\n \n-    private FileUtil() {\n-    }\n-\n     /**\n      * Returns the extension of a file or Optional.empty() if the file does not have one (no . in name).\n      *\ndiff --git a/src/main/java/org/jabref/logic/util/io/RegExpFileSearch.java b/src/main/java/org/jabref/logic/util/io/RegExpFileSearch.java\nindex 0b43ee0b2c..56ba2101db 100644\n--- a/src/main/java/org/jabref/logic/util/io/RegExpFileSearch.java\n+++ b/src/main/java/org/jabref/logic/util/io/RegExpFileSearch.java\n@@ -31,9 +31,6 @@ public class RegExpFileSearch {\n     private static final Pattern SQUARE_BRACKETS_PATTERN = Pattern.compile("\\\\[.*?\\\\]");\n \n \n-    private RegExpFileSearch() {\n-    }\n-\n     /**\n      * Search for file links for a set of entries using regexp. Lists of extensions and directories\n      * are given.\ndiff --git a/src/main/java/org/jabref/logic/util/io/XMLUtil.java b/src/main/java/org/jabref/logic/util/io/XMLUtil.java\nindex 215af84ede..53228d64ef 100644\n--- a/src/main/java/org/jabref/logic/util/io/XMLUtil.java\n+++ b/src/main/java/org/jabref/logic/util/io/XMLUtil.java\n@@ -28,9 +28,6 @@ import org.w3c.dom.NodeList;\n public class XMLUtil {\n     private static final Log LOGGER = LogFactory.getLog(XMLUtil.class);\n \n-    private XMLUtil() {\n-    }\n-\n     /**\n      * Prints out the document to standard out. Used to generate files for test cases.\n      */\ndiff --git a/src/main/java/org/jabref/logic/util/strings/DiffHighlighting.java b/src/main/java/org/jabref/logic/util/strings/DiffHighlighting.java\nindex b7fe221329..b16efbf761 100644\n--- a/src/main/java/org/jabref/logic/util/strings/DiffHighlighting.java\n+++ b/src/main/java/org/jabref/logic/util/strings/DiffHighlighting.java\n@@ -19,9 +19,6 @@ public class DiffHighlighting {\n     public static final String HTML_START = "<html><body>";\n     public static final String HTML_END = "</body></html>";\n \n-    private DiffHighlighting() {\n-    }\n-\n \n     public static String generateDiffHighlighting(String baseString, String modifiedString, String separator) {\n         Objects.requireNonNull(separator);\ndiff --git a/src/main/java/org/jabref/logic/util/strings/HTMLUnicodeConversionMaps.java b/src/main/java/org/jabref/logic/util/strings/HTMLUnicodeConversionMaps.java\nindex 8f9cfb5290..2a3409ae39 100644\n--- a/src/main/java/org/jabref/logic/util/strings/HTMLUnicodeConversionMaps.java\n+++ b/src/main/java/org/jabref/logic/util/strings/HTMLUnicodeConversionMaps.java\n@@ -897,9 +897,6 @@ public class HTMLUnicodeConversionMaps {\n \n     }\n \n-    private HTMLUnicodeConversionMaps() {\n-    }\n-\n     private static String cleanLaTeX(String escapedString) {\n         // Get rid of \\{}$ from the LaTeX-string\n         return escapedString.replaceAll("[\\\\\\\\\\\\{\\\\}\\\\$]", "");\ndiff --git a/src/main/java/org/jabref/logic/xmp/XMPUtil.java b/src/main/java/org/jabref/logic/xmp/XMPUtil.java\nindex f0036214e2..97d5b6ccb8 100644\n--- a/src/main/java/org/jabref/logic/xmp/XMPUtil.java\n+++ b/src/main/java/org/jabref/logic/xmp/XMPUtil.java\n@@ -62,8 +62,6 @@ public class XMPUtil {\n \n     private static final Log LOGGER = LogFactory.getLog(XMPUtil.class);\n \n-    private XMPUtil() {\n-    }\n \n     /**\n      * Convenience method for readXMP(File).\ndiff --git a/src/main/java/org/jabref/migrations/CustomEntryTypePreferenceMigration.java b/src/main/java/org/jabref/migrations/CustomEntryTypePreferenceMigration.java\nindex f4573c6223..cdd366de51 100644\n--- a/src/main/java/org/jabref/migrations/CustomEntryTypePreferenceMigration.java\n+++ b/src/main/java/org/jabref/migrations/CustomEntryTypePreferenceMigration.java\n@@ -22,9 +22,6 @@ class CustomEntryTypePreferenceMigration {\n \n     private static JabRefPreferences prefs = Globals.prefs;\n \n-    private CustomEntryTypePreferenceMigration() {\n-    }\n-\n     static void upgradeStoredCustomEntryTypes(BibDatabaseMode defaultBibDatabaseMode) {\n         List<CustomEntryType> storedOldTypes = new ArrayList<>();\n \ndiff --git a/src/main/java/org/jabref/migrations/PreferencesMigrations.java b/src/main/java/org/jabref/migrations/PreferencesMigrations.java\nindex 65e38b4187..a0ca4d2500 100644\n--- a/src/main/java/org/jabref/migrations/PreferencesMigrations.java\n+++ b/src/main/java/org/jabref/migrations/PreferencesMigrations.java\n@@ -18,9 +18,6 @@ public class PreferencesMigrations {\n \n     private static final Log LOGGER = LogFactory.getLog(PreferencesMigrations.class);\n \n-    private PreferencesMigrations() {\n-    }\n-\n     /**\n      * Migrate all preferences from net/sf/jabref to org/jabref\n      */\ndiff --git a/src/main/java/org/jabref/model/DuplicateCheck.java b/src/main/java/org/jabref/model/DuplicateCheck.java\nindex de68ddfd6a..143a676949 100644\n--- a/src/main/java/org/jabref/model/DuplicateCheck.java\n+++ b/src/main/java/org/jabref/model/DuplicateCheck.java\n@@ -55,8 +55,6 @@ public class DuplicateCheck {\n         DuplicateCheck.FIELD_WEIGHTS.put(FieldName.JOURNAL, 2.);\n     }\n \n-    private DuplicateCheck() {\n-    }\n \n     /**\n      * Checks if the two entries represent the same publication.\ndiff --git a/src/main/java/org/jabref/model/EntryTypes.java b/src/main/java/org/jabref/model/EntryTypes.java\nindex 6405138a6f..812e9c7118 100644\n--- a/src/main/java/org/jabref/model/EntryTypes.java\n+++ b/src/main/java/org/jabref/model/EntryTypes.java\n@@ -105,9 +105,6 @@ public class EntryTypes {\n     public static final InternalEntryTypes BIBLATEX = new InternalEntryTypes(BiblatexEntryTypes.MISC,\n             Arrays.asList(BiblatexEntryTypes.ALL));\n \n-    private EntryTypes() {\n-    }\n-\n     /**\n      * This method returns the BibtexEntryType for the name of a type,\n      * or null if it does not exist.\n@@ -231,16 +228,15 @@ public class EntryTypes {\n      * @return returns true if the two compared entry types have the same name and equal required and optional fields\n      */\n     public static boolean isEqualNameAndFieldBased(EntryType type1, EntryType type2) {\n-        if ((type1 == null) && (type2 == null)) {\n+        if (type1 == null && type2 == null) {\n             return true;\n-        } else if ((type1 == null) || (type2 == null)) {\n+        } else if (type1 == null || type2 == null) {\n             return false;\n-        } else {\n+        } else\n             return type1.getName().equals(type2.getName())\n                     && type1.getRequiredFields().equals(type2.getRequiredFields())\n                     && type1.getOptionalFields().equals(type2.getOptionalFields())\n                     && type1.getSecondaryOptionalFields().equals(type2.getSecondaryOptionalFields());\n-        }\n     }\n \n     public static boolean isExclusiveBiblatex(String type) {\ndiff --git a/src/main/java/org/jabref/model/database/BibDatabaseModeDetection.java b/src/main/java/org/jabref/model/database/BibDatabaseModeDetection.java\nindex 7649fa6887..d2374d29f6 100644\n--- a/src/main/java/org/jabref/model/database/BibDatabaseModeDetection.java\n+++ b/src/main/java/org/jabref/model/database/BibDatabaseModeDetection.java\n@@ -7,9 +7,6 @@ import org.jabref.model.EntryTypes;\n import org.jabref.model.entry.BibEntry;\n \n public class BibDatabaseModeDetection {\n-\n-    private BibDatabaseModeDetection() {\n-    }\n     /**\n      * Tries to infer the database type by examining a BibDatabase database.\n      *\ndiff --git a/src/main/java/org/jabref/model/database/BibDatabases.java b/src/main/java/org/jabref/model/database/BibDatabases.java\nindex 9d64696d43..30fe24b023 100644\n--- a/src/main/java/org/jabref/model/database/BibDatabases.java\n+++ b/src/main/java/org/jabref/model/database/BibDatabases.java\n@@ -9,9 +9,6 @@ import org.jabref.model.entry.IdGenerator;\n \n public class BibDatabases {\n \n-    private BibDatabases() {\n-    }\n-\n     /**\n      * Gets a collection of bibentries and sets an ID for every entry. After that\n      * all entries will be inserted into a new BibDatabase.\ndiff --git a/src/main/java/org/jabref/model/entry/BiblatexEntryTypes.java b/src/main/java/org/jabref/model/entry/BiblatexEntryTypes.java\nindex a418d1e1d4..b65f04b63b 100644\n--- a/src/main/java/org/jabref/model/entry/BiblatexEntryTypes.java\n+++ b/src/main/java/org/jabref/model/entry/BiblatexEntryTypes.java\n@@ -950,9 +950,6 @@ public class BiblatexEntryTypes {\n             THESIS, UNPUBLISHED, CONFERENCE, ELECTRONIC, MASTERSTHESIS, PHDTHESIS, TECHREPORT, WWW, IEEETRANBSTCTL);\n \n \n-    private BiblatexEntryTypes() {\n-    }\n-\n     public static Optional<EntryType> getType(String name) {\n         return ALL.stream().filter(e -> e.getName().equalsIgnoreCase(name)).findFirst();\n     }\ndiff --git a/src/main/java/org/jabref/model/entry/BibtexEntryTypes.java b/src/main/java/org/jabref/model/entry/BibtexEntryTypes.java\nindex 352411976e..988544f60f 100644\n--- a/src/main/java/org/jabref/model/entry/BibtexEntryTypes.java\n+++ b/src/main/java/org/jabref/model/entry/BibtexEntryTypes.java\n@@ -281,9 +281,6 @@ public class BibtexEntryTypes {\n     public static final List<EntryType> ALL = Arrays.asList(ARTICLE, INBOOK, BOOK, BOOKLET, INCOLLECTION, CONFERENCE,\n             INPROCEEDINGS, PROCEEDINGS, MANUAL, MASTERSTHESIS, PHDTHESIS, TECHREPORT, UNPUBLISHED, MISC);\n \n-    private BibtexEntryTypes() {\n-    }\n-\n     public static Optional<EntryType> getType(String name) {\n         return ALL.stream().filter(e -> e.getName().equalsIgnoreCase(name)).findFirst();\n     }\ndiff --git a/src/main/java/org/jabref/model/entry/CanonicalBibtexEntry.java b/src/main/java/org/jabref/model/entry/CanonicalBibtexEntry.java\nindex 04dbff7141..d2a2b4c555 100644\n--- a/src/main/java/org/jabref/model/entry/CanonicalBibtexEntry.java\n+++ b/src/main/java/org/jabref/model/entry/CanonicalBibtexEntry.java\n@@ -10,9 +10,6 @@ import java.util.TreeSet;\n \n public class CanonicalBibtexEntry {\n \n-    private CanonicalBibtexEntry() {\n-    }\n-\n     /**\n      * This returns a canonical BibTeX serialization. Special characters such as "{" or "&" are NOT escaped, but written\n      * as is\ndiff --git a/src/main/java/org/jabref/model/entry/EntryConverter.java b/src/main/java/org/jabref/model/entry/EntryConverter.java\nindex 131ef12bb1..e15b9ace11 100644\n--- a/src/main/java/org/jabref/model/entry/EntryConverter.java\n+++ b/src/main/java/org/jabref/model/entry/EntryConverter.java\n@@ -40,6 +40,4 @@ public class EntryConverter {\n         FIELD_ALIASES.putAll(EntryConverter.FIELD_ALIASES_LTX_TO_TEX);\n     }\n \n-    private EntryConverter() {\n-    }\n }\ndiff --git a/src/main/java/org/jabref/model/entry/EntryLinkList.java b/src/main/java/org/jabref/model/entry/EntryLinkList.java\nindex a1b50882b2..93ac6e9053 100644\n--- a/src/main/java/org/jabref/model/entry/EntryLinkList.java\n+++ b/src/main/java/org/jabref/model/entry/EntryLinkList.java\n@@ -10,8 +10,6 @@ public class EntryLinkList {\n \n     private static String SEPARATOR = ",";\n \n-    private EntryLinkList() {\n-    }\n \n     public static List<ParsedEntryLink> parse(String fieldValue, BibDatabase database) {\n         List<ParsedEntryLink> result = new ArrayList<>();\ndiff --git a/src/main/java/org/jabref/model/entry/FieldName.java b/src/main/java/org/jabref/model/entry/FieldName.java\nindex b15b8b5f51..27371ac5eb 100644\n--- a/src/main/java/org/jabref/model/entry/FieldName.java\n+++ b/src/main/java/org/jabref/model/entry/FieldName.java\n@@ -155,9 +155,6 @@ public class FieldName {\n     // Map to hold alternative display names\n     private static final Map<String, String> displayNames = new HashMap<>();\n \n-    private FieldName() {\n-    }\n-\n     public static String orFields(String... fields) {\n         return String.join(FieldName.FIELD_SEPARATOR, fields);\n     }\ndiff --git a/src/main/java/org/jabref/model/entry/FileField.java b/src/main/java/org/jabref/model/entry/FileField.java\nindex bb9c4c21c2..c6cc392816 100644\n--- a/src/main/java/org/jabref/model/entry/FileField.java\n+++ b/src/main/java/org/jabref/model/entry/FileField.java\n@@ -8,9 +8,6 @@ import java.util.stream.Collectors;\n \n public class FileField {\n \n-    private FileField() {\n-    }\n-\n     public static List<ParsedFileField> parse(String value) {\n         if ((value == null) || value.trim().isEmpty()) {\n             return Collections.emptyList();\ndiff --git a/src/main/java/org/jabref/model/entry/IEEETranEntryTypes.java b/src/main/java/org/jabref/model/entry/IEEETranEntryTypes.java\nindex ce51f752b0..477d13428e 100644\n--- a/src/main/java/org/jabref/model/entry/IEEETranEntryTypes.java\n+++ b/src/main/java/org/jabref/model/entry/IEEETranEntryTypes.java\n@@ -115,9 +115,6 @@ public class IEEETranEntryTypes {\n \n     public static final List<EntryType> ALL = Arrays.asList(ELECTRONIC, IEEETRANBSTCTL, PERIODICAL, PATENT, STANDARD);\n \n-    private IEEETranEntryTypes() {\n-    }\n-\n     public static Optional<EntryType> getType(String name) {\n         return ALL.stream().filter(e -> e.getName().equalsIgnoreCase(name)).findFirst();\n     }\ndiff --git a/src/main/java/org/jabref/model/entry/IdGenerator.java b/src/main/java/org/jabref/model/entry/IdGenerator.java\nindex 68a4260bcc..29eb787722 100644\n--- a/src/main/java/org/jabref/model/entry/IdGenerator.java\n+++ b/src/main/java/org/jabref/model/entry/IdGenerator.java\n@@ -19,9 +19,6 @@ public class IdGenerator {\n \n     private static int idCounter;\n \n-    private IdGenerator() {\n-    }\n-\n     public static synchronized String next() {\n         String result = idFormat.format(idCounter);\n         idCounter++;\ndiff --git a/src/main/java/org/jabref/model/entry/MonthUtil.java b/src/main/java/org/jabref/model/entry/MonthUtil.java\nindex 802542be14..68d48a263c 100644\n--- a/src/main/java/org/jabref/model/entry/MonthUtil.java\n+++ b/src/main/java/org/jabref/model/entry/MonthUtil.java\n@@ -63,8 +63,6 @@ public class MonthUtil {\n         }\n     }\n \n-    private MonthUtil() {\n-    }\n \n     /**\n      * Find month by number\ndiff --git a/src/main/java/org/jabref/model/search/rules/SearchRules.java b/src/main/java/org/jabref/model/search/rules/SearchRules.java\nindex f4046d1a2a..91d60de1f3 100644\n--- a/src/main/java/org/jabref/model/search/rules/SearchRules.java\n+++ b/src/main/java/org/jabref/model/search/rules/SearchRules.java\n@@ -4,9 +4,6 @@ import org.jabref.model.strings.StringUtil;\n \n public class SearchRules {\n \n-    private SearchRules() {\n-    }\n-\n     /**\n      * Returns the appropriate search rule that fits best to the given parameter.\n      */\n', 'commit_subject': 'Revert "Paying off technical debt: almost all utility classes have a private constructor now. (#2649)" (#2670)', 'repo_name': 'JabRef/jabref', 'committer': {'name': 'GitHub', 'email': '1505422b2465e9a84f6fdfaa161078890c593f06@github.com', 'time_sec': '1490002257', 'tz_offset': '-420', 'date': {'seconds': '1490002257'}}, 'commit_tree': 'a6d70d61f94e1072d9a0bf9ec01bcc79be2be750', 'commit_message': 'Revert "Paying off technical debt: almost all utility classes have a private constructor now. (#2649)" (#2670)\n\nThis reverts commit 4ff55d07b0818efe08f72e93fd8b3365c79dc1ee.', 'language_name': 'Ruby', 'license': 'mit', 'hunks': '@@ -4,9 +4,6 @@ import org.jabref.model.strings.StringUtil;\n \n public class SearchRules {\n \n-    private SearchRules() {\n-    }\n-\n     /**\n      * Returns the appropriate search rule that fits best to the given parameter.\n      */\n', 'addition_count': 0, 'deletion_count': 3, 'src_file': 'a/src/main/java/org/jabref/model/search/rules/SearchRules.java', 'tgt_file': 'b/src/main/java/org/jabref/model/search/rules/SearchRules.java', 'file_extension': '.java', 'before_file': 'package org.jabref.model.search.rules;\n\nimport java.util.EnumSet;\n\npublic class SearchRules {\n\n    private SearchRules() {\n    }\n\n    /**\n     * Returns the appropriate search rule that fits best to the given parameter.\n     */\n\n    private static final Pattern SIMPLE_EXPRESSION = Pattern.compile("[^\\\\p{Punct}]*");\n\n    private SearchRules() {\n    }\n\n    /**\n     * Returns the appropriate search rule that fits best to the given parameter.\n     */\n    public static SearchRule getSearchRuleByQuery(String query, EnumSet<SearchFlags> searchFlags) {\n        if (isSimpleQuery(query)) {\n            return new ContainsBasedSearchRule(searchFlags);\n        }\n\n        // this searches specified fields if specified,\n        // and all fields otherwise\n        SearchRule searchExpression = new GrammarBasedSearchRule(searchFlags);\n        if (searchExpression.validateSearchStrings(query)) {\n            return searchExpression;\n        } else {\n            return getSearchRule(searchFlags);\n        }\n    }\n\n    private static boolean isSimpleQuery(String query) {\n        return SIMPLE_EXPRESSION.matcher(query).matches();\n    }\n\n    static SearchRule getSearchRule(EnumSet<SearchFlags> searchFlags) {\n        if (searchFlags.contains(SearchFlags.REGULAR_EXPRESSION)) {\n            return new RegexBasedSearchRule(searchFlags);\n        } else {\n            return new ContainsBasedSearchRule(searchFlags);\n        }\n    }\n\n    public enum SearchFlags {\n        CASE_SENSITIVE, REGULAR_EXPRESSION, FULLTEXT, KEEP_SEARCH_STRING;\n    }\n}\n', 'message': 'Revert "Paying off technical debt: almost all utility classes have a private constructor now. (#2649)" (#2670)\n\nThis reverts commit 4ff55d07b0818efe08f72e93fd8b3365c79dc1ee.', 'author_name': 'GitHub', 'lang': 'java'}