def defract(self):
        """
        Returns the underlying (unrefracted) value of element

        >>> Element(content='Hello').defract
        'Hello'

        >>> Element(content=Element(content='Hello')).defract
        'Hello'

        >>> Element(content=[Element(content='Hello')]).defract
        ['Hello']
        """

        from refract.elements.object import Object

        def get_value(item):
            if isinstance(item, KeyValuePair):
                return (get_value(item.key), get_value(item.value))
            elif isinstance(item, list):
                return [get_value(element) for element in item]
            elif isinstance(item, Element):
                if isinstance(item, Object) or item.element == 'object':
                    return dict(get_value(item.content))
                return get_value(item.content)

            return item

        return get_value(self)