private Component createSearchField() {
   final SearchTextFieldWithStoredHistory textFilter =
       new SearchTextFieldWithStoredHistory("Vcs.Log.Text.Filter.History") {
         @Override
         protected void onFieldCleared() {
           myFilterModel.setFilter(null);
         }
       };
   textFilter.setText(myFilterModel.getText());
   textFilter
       .getTextEditor()
       .addActionListener(
           new ActionListener() {
             @Override
             public void actionPerformed(@NotNull ActionEvent e) {
               myFilterModel.setFilter(new VcsLogTextFilterImpl(textFilter.getText()));
               textFilter.addCurrentTextToHistory();
             }
           });
   textFilter.addDocumentListener(
       new DocumentAdapter() {
         @Override
         protected void textChanged(DocumentEvent e) {
           try {
             myFilterModel.setUnsavedText(
                 e.getDocument().getText(0, e.getDocument().getLength()));
           } catch (BadLocationException ex) {
             LOG.error(ex);
           }
         }
       });
   return textFilter;
 }
 @NotNull
 @Override
 public VcsLogFilterCollection getFilters() {
   ApplicationManager.getApplication().assertIsDispatchThread();
   Pair<VcsLogTextFilter, VcsLogHashFilter> filtersFromText =
       getFiltersFromTextArea(myTextFilterModel.getFilter());
   return new VcsLogFilterCollectionImpl(
       myBranchFilterModel.getFilter(),
       myUserFilterModel.getFilter(),
       filtersFromText.second,
       myDateFilterModel.getFilter(),
       filtersFromText.first,
       myStructureFilterModel.getFilter() == null
           ? null
           : myStructureFilterModel.getFilter().getStructureFilter(),
       myStructureFilterModel.getFilter() == null
           ? null
           : myStructureFilterModel.getFilter().getRootFilter());
 }