code: def _generate_fieldnames_if_bai_query(self, node_value, bai_field_variation, query_bai_field_if_dots_in_name):
          
          if bai_field_variation not in (FieldVariations.search, FieldVariations.raw):
              raise ValueError('Non supported field variation "{}".'.format(bai_field_variation))
  
          normalized_author_name = normalize_name(node_value).strip('.')
  
          if ElasticSearchVisitor.KEYWORD_TO_ES_FIELDNAME['author'] and \
                  ElasticSearchVisitor.BAI_REGEX.match(node_value):
              return [ElasticSearchVisitor.AUTHORS_BAI_FIELD + '.' + bai_field_variation]
  
          elif not whitespace.search(normalized_author_name) and \
                  query_bai_field_if_dots_in_name and \
                  ElasticSearchVisitor.KEYWORD_TO_ES_FIELDNAME['author'] and \
                  '.' in normalized_author_name:
              # Case of partial BAI, e.g. ``J.Smith``.
              return [ElasticSearchVisitor.AUTHORS_BAI_FIELD + '.' + bai_field_variation] + \
                     force_list(ElasticSearchVisitor.KEYWORD_TO_ES_FIELDNAME['author'])
  
          else:
              return None
docs: Generates new fieldnames in case of BAI query.
  
          Args:
              node_value (six.text_type): The node's value (i.e. author name).
              bai_field_variation (six.text_type): Which field variation to query ('search' or 'raw').
              query_bai_field_if_dots_in_name (bool): Whether to query BAI field (in addition to author's name field)
                  if dots exist in the name and name contains no whitespace.
  
          Returns:
              list: Fieldnames to query on, in case of BAI query or None, otherwise.
  
          Raises:
              ValueError, if ``field_variation`` is not one of ('search', 'raw').