docs: def get_ticket(self, ticket_id):
          """ Fetch ticket by its ID.
  
          :param ticket_id: ID of demanded ticket
  
          :returns: Dictionary with key, value pairs for ticket with
                    *ticket_id* or None if ticket does not exist. List of keys:
  
                        * id
                        * numerical_id
                        * Queue
                        * Owner
                        * Creator
                        * Subject
                        * Status
                        * Priority
                        * InitialPriority
                        * FinalPriority
                        * Requestors
                        * Cc
                        * AdminCc
                        * Created
                        * Starts
                        * Started
                        * Due
                        * Resolved
                        * Told
                        * TimeEstimated
                        * TimeWorked
                        * TimeLeft
          :raises UnexpectedMessageFormat: Unexpected format of returned message.
          """
          msg = self.__request('ticket/{}/show'.format(str(ticket_id), ))
          status_code = self.__get_status_code(msg)
          if status_code == 200:
              pairs = {}
              msg = msg.split('\n')
              if (len(msg) > 2) and self.RE_PATTERNS['does_not_exist_pattern'].match(msg[2]):
                  return None
              req_matching = [i for i, m in enumerate(msg) if self.RE_PATTERNS['requestors_pattern'].match(m)]
              req_id = req_matching[0] if req_matching else None
              if not req_id:
                  raise UnexpectedMessageFormat('Missing line starting with `Requestors:`.')
              for i in range(req_id):
                  if ': ' in msg[i]:
                      header, content = self.split_header(msg[i])
                      pairs[header.strip()] = content.strip()
              requestors = [msg[req_id][12:]]
              req_id += 1
              while (req_id < len(msg)) and (msg[req_id][:12] == ' ' * 12):
                  requestors.append(msg[req_id][12:])
                  req_id += 1
              pairs['Requestors'] = self.__normalize_list(requestors)
              for i in range(req_id, len(msg)):
                  if ': ' in msg[i]:
                      header, content = self.split_header(msg[i])
                      pairs[header.strip()] = content.strip()
  
              if 'Cc' in pairs:
                  pairs['Cc'] = self.__normalize_list(pairs['Cc'])
              if 'AdminCc' in pairs:
                  pairs['AdminCc'] = self.__normalize_list(pairs['AdminCc'])
  
              if 'id' not in pairs and not pairs['id'].startswitch('ticket/'):
                  raise UnexpectedMessageFormat('Response from RT didn\'t contain a valid ticket_id')
              else:
                  pairs['numerical_id'] = pairs['id'].split('ticket/')[1]
  
              return pairs
          else:
              raise UnexpectedMessageFormat('Received status code is {:d} instead of 200.'.format(status_code))