code: def make_field(self, types, domain, items):
          
          def handle_item(fieldarg, content):
              par = nodes.paragraph()
              par += self.make_xref(
                  self.rolename, domain, fieldarg, nodes.strong)
              if fieldarg in types:
                  par += nodes.Text(' : ')
                  # NOTE: using .pop() here to prevent a single type node to be
                  # inserted twice into the doctree, which leads to
                  # inconsistencies later when references are resolved
                  fieldtype = types.pop(fieldarg)
                  if (len(fieldtype) == 1 and
                          isinstance(fieldtype[0], nodes.Text)):
                      typename = u''.join(n.astext() for n in fieldtype)
                      par += self.make_xref(self.typerolename, domain, typename)
                  else:
                      par += fieldtype
                  par += nodes.Text('')
              par += nodes.Text(' -- ')
              par += content
              return par
  
          fieldname = nodes.field_name('', self.label)
          if len(items) == 1 and self.can_collapse:
              fieldarg, content = items[0]
              bodynode = handle_item(fieldarg, content)
          else:
              bodynode = self.list_type()
              for fieldarg, content in items:
                  bodynode += nodes.list_item('', handle_item(fieldarg, content))
          fieldbody = nodes.field_body('', bodynode)
          return nodes.field('', fieldname, fieldbody)
docs: Copy+Paste of TypedField.make_field() from Sphinx version 1.2.3. The first
          and second nodes.Text() instance are changed in this implementation to
          be ' : ' and '' respectively (instead of ' (' and ')').
  
          TODO: Ask sphinx devs if there is a better way to support
                this that is less copy+pasty. (thomasvandoren, 2015-03-17)