code: def binary(self):
          
          if isinstance(self.value, list):
              length = len(self.value)
              if length == 0:
                  return b_chr(_TAG_NIL_EXT)
              elif length > 4294967295:
                  raise OutputException('uint32 overflow')
              elif self.improper:
                  return (
                      b_chr(_TAG_LIST_EXT) +
                      struct.pack(b'>I', length - 1) +
                      b''.join([_term_to_binary(element)
                                for element in self.value])
                  )
              else:
                  return (
                      b_chr(_TAG_LIST_EXT) +
                      struct.pack(b'>I', length) +
                      b''.join([_term_to_binary(element)
                                for element in self.value]) +
                      b_chr(_TAG_NIL_EXT)
                  )
          else:
              raise OutputException('unknown list type')
docs: return encoded representation