def from_etree(cls, etree_element):
        """
        creates a ``PrimaryTextNode`` instance from the etree representation of
        a <nodes> element from a SaltXMI file.
        """
        ins = SaltNode.from_etree(etree_element)
        # TODO: this looks dangerous, ask Stackoverflow about it!
        # convert SaltNode into PrimaryTextNode
        ins.__class__ = PrimaryTextNode.mro()[0]
        ins.text = extract_primary_text(etree_element)
        return ins