public function canApply()
{
$referenceNode = $this->getReference();
$referenceNodeParent = $referenceNode->getParent();
$nodeType = $this->getSubject()->getNodeType();
return $referenceNode->getNodeType()->allowsChildNodeType($nodeType) && $referenceNodeParent->getNodeType()->allowsGrandchildNodeType($this->getSubject()->getName(), $nodeType);
}