protected function unmarshall(DOMElement $element)
    {
        $expressionElt = self::getFirstChildElement($element);

        if ($expressionElt !== false) {
            $marshaller = $this->getMarshallerFactory()->createMarshaller($expressionElt);
            $object = new PreCondition($marshaller->unmarshall($expressionElt));

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