code: def search_with_additional_terms(self, term_dict, escape=True):
          
          term_strings = [self.filterstr]
  
          for name, value in term_dict.items():
              if escape:
                  value = self.ldap.filter.escape_filter_chars(value)
              term_strings.append("({}={})".format(name, value))
  
          filterstr = "(&{})".format("".join(term_strings))
  
          return self.__class__(
              self.base_dn, self.scope, filterstr, attrlist=self.attrlist
          )
docs: Returns a new search object with additional search terms and-ed to the
          filter string. term_dict maps attribute names to assertion values. If
          you don't want the values escaped, pass escape=False.