protected function unmarshall(DOMElement $element)
    {
        if (($tplIdentifier = $this->getDOMElementAttributeAs($element, 'templateIdentifier')) !== null) {

            $expressionElt = self::getFirstChildElement($element);

            if ($expressionElt !== false) {
                $exprMarshaller = $this->getMarshallerFactory()->createMarshaller($expressionElt);
                $expr = $exprMarshaller->unmarshall($expressionElt);
            } else {
                $msg = "Element '" . $element->localName . "' does not contain its mandatory expression.";
                throw new UnmarshallingException($msg, $element);
            }

            $object = new TemplateDefault($tplIdentifier, $expr);

            return $object;
        } else {
            $msg = "The mandatory attribute 'templateIdentifier' is missing from element '" . $element->localName . "'.";
            throw new UnmarshallingException($msg, $element);
        }
    }