docs: def _set_align(self, orientation, value):
          '''We define a setter because it's better to diagnose this kind of
          programmatic error here than have to work out why alignment is odd when
          we sliently fail!
          '''
          orientation_letter = orientation[0]
          possible_alignments = getattr(
              self, '_possible_{}aligns'.format(orientation_letter))
          all_alignments = getattr(
              self, '_all_{}aligns'.format(orientation_letter))
          if value not in possible_alignments:
              if value in all_alignments:
                  msg = 'non-permitted'
              else:
                  msg = 'non-existant'
              raise ValueError(
                  "Can't set {} {} alignment {!r} on element {!r}".format(
                      msg, orientation, value, self))
          setattr(self, '_{}align'.format(orientation_letter), value)