docs: def fold(self):
          """Folds the Register in accordance with it's dimensions.
  
          If the register is dimensionless, the returned list just
          contains the register itself unchanged. In case the register
          name looks like a C array, the returned list contains the register
          itself, where nothing else than the '%s' placeholder in it's name
          has been replaced with value of the dim element.
          """
          if self.dim is None:
              return [self]
          if self.name.endswith("[%s]"):  # C array like
              self.name = self.name.replace("%s", str(self.dim))
              return [self]
  
          registers = []
          for offset, index in enumerate(self.dimIndex):
              reg = self.copy()
              reg.name = self.name.replace("%s", str(index))
              reg.addressOffset += offset * reg.dimIncrement
  
              reg.fields = [field.copy() for field in reg.fields]
              for field in reg.fields:
                  field.parent = reg
  
              reg.dim = reg.dimIndex = reg.dimIncrement = None  # Dimensionless
              registers.append(reg)
  
          return registers