docs: def printMe(self, selfTag, selfValue):
          '''Parse the single and its value and return the parsed str.
  
          Args:
             selfTag (str): The tag. Normally just ``self.tag``
             selfValue (list): a list of value elements(single, subclasses, str, int). Normally just ``self.value``
  
          Returns:
              str: A parsed text
          '''
          if len(selfValue) == 0:
              return ''
          # if value have only one element and it is not another single
          # print differently
          elif len(selfValue) == 1 and not ancestor(selfValue[0]) is Single:
              text = '<{tag}>{value}</{tag}>\n'.format(
                  tag=selfTag, value=selfValue[0])
              return text
          else:
              valueText = ''
              for element in selfValue:
                  # if the element is another single
                  # or merely an object
                  # both possibility should not happen in the same time
                  # if so, user is not doing the right thing
                  if singleOrPair(element) == 'Single':
                      # ask that single to print itself
                      valueText += element.printMe(element.tag, element.value)
                  elif singleOrPair(element) == 'Pair':
                      valueText += element.printMe(element.key, element.value)
                  else:
                      # simply print that element
                      valueText += str(element) + '\n'
              valueText = indent(valueText, 4)
              text = '<{tag}>\n'.format(
                  tag=selfTag) + valueText + '</{tag}>\n'.format(tag=selfTag)
              return text