     private var fetchedResultsController: NSFetchedResultsController<NSFetchRequestResult>!
     private var tableView = UITableView(frame: .zero, style: .plain)
     private var searchField: UITextField!
+    private var searchContainer: CrudSearchContainer!
     private var searchCancelButton: UIButton!
+    private var cancelButtonBlurView: UIVisualEffectView!
     private var searchCancelButtonWidthConstraint: NSLayoutConstraint!
     private var searchCancelButtonLeadingConstraint: NSLayoutConstraint!
     private var context: NSManagedObjectContext!

}

@objc public protocol CrudViewControllerThemeDelegate {
    @objc optional func crudViewController(crudViewController: CrudViewController, themeSearchField searchField: UITextField)
    @objc optional func crudViewController(crudViewController: CrudViewController, themeAddItemCell addItemCell: CrudAddItemCell)
}


        searchField.delegate = self
        searchField.clearButtonMode = .whileEditing
        searchField.rightViewMode = .always

        searchCancelButton = UIButton(frame: .zero)
        searchCancelButton.configure(title: "Cancel", target: self, selector: #selector(cancelSearch))
        searchCancelButton.alpha = 0

        searchContainer = CrudSearchContainer(frame: .zero)
        [ searchField, searchCancelButton ].forEach { searchContainer.addSubview($0) }
        searchField.leadingAnchor == searchContainer.leadingAnchor
        searchField.heightAnchor == 30
