docs: def _set_alignment(self, group_size, bit_offset=0, auto_align=False):
          """ Sets the alignment of the ``Decimal`` field.
  
          :param int group_size: size of the aligned `Field` group in bytes,
              can be between ``1`` and ``8``.
          :param int bit_offset: bit offset of the `Decimal` field within the
              aligned `Field` group, can be between ``0`` and ``63``.
          :param bool auto_align: if ``True`` the `Decimal` field aligns itself
              to the next matching byte size according to the *size* of the
              `Decimal` field.
          """
          # Field alignment offset
          field_offset = int(bit_offset)
  
          # Auto alignment
          if auto_align:
              # Field alignment size
              field_size, bit_offset = divmod(field_offset, 8)
              if bit_offset is not 0:
                  field_size += 1
              field_size = max(field_size, 1)
          # No auto alignment
          else:
              # Field alignment size
              field_size = int(group_size)
  
          # Field alignment
          alignment = Alignment(field_size, field_offset)
  
          # Invalid field alignment size
          if field_size not in range(1, 8):
              raise FieldAlignmentError(self, self.index, alignment)
  
          # Invalid field alignment offset
          if not (0 <= field_offset <= 63):
              raise FieldAlignmentError(self, self.index, alignment)
  
          # Invalid field alignment
          if field_offset >= field_size * 8:
              raise FieldAlignmentError(self, self.index, alignment)
  
          # Set field alignment
          self._align_to_byte_size = alignment.byte_size
          self._align_to_bit_offset = alignment.bit_offset