public bool PhraseNodesAreEqual(PhraseNode pn1, PhraseNode pn2)
{
if(pn1 == pn2) {
return true;
}
if(pn1 == null ^ pn2 == null) {
return false;
}
if(pn1.Size() != pn2.Size()) {
return false;
}
for(int i = 0; i < pn1.Size(); i++) {
if(!WordNodesAreEqual(pn1[i], pn2[i])) {
return false;
}
}
return true;
}