docs: def resolve_virtual_columns(self, *names):
          """
          Assume that all ``names`` are legacy-style tuple declarations, and generate modern columns
          instances to match the behavior of the old syntax.
          """
          from .views.legacy import get_field_definition
          virtual_columns = {}
          for name in names:
              field = get_field_definition(name)
              column = TextColumn(sources=field.fields, label=field.pretty_name,
                                  processor=field.callback)
              column.name = field.pretty_name if field.pretty_name else field.fields[0]
              virtual_columns[name] = column
  
          # Make sure it's in the same order as originally defined
          new_columns = OrderedDict()
          for name in self._meta.columns:  # Can't use self.config yet, hasn't been generated
              if self.columns.get(name):
                  column = self.columns[name]
              else:
                  column = virtual_columns[name]
              new_columns[column.name] = column
          self.columns = new_columns