@Override
public Info supplementRightInfoWithLeftInfo(Info leftInfo, Info rightInfo) throws EntailmentCompilationException {
if (leftInfo == null)
throw new EntailmentCompilationException("got null left info");
if (rightInfo == null)
throw new EntailmentCompilationException("got null right info");
Info alphaAnnotatedInfo = rightInfo;
Info betaAnnotatedInfo = leftInfo;
String lemma = (String) RuleBuildingUtils.chooseAlphaBeta(alphaAnnotatedInfo.getNodeInfo().getWordLemma(), betaAnnotatedInfo.getNodeInfo().getWordLemma());
EdgeInfo newEdgeAnnotatedInfo = new DefaultEdgeInfo( (DependencyRelation)
RuleBuildingUtils.chooseAlphaBeta(alphaAnnotatedInfo.getEdgeInfo().getDependencyRelation(), betaAnnotatedInfo.getEdgeInfo().getDependencyRelation()));
SyntacticInfo syntacticInfo = (SyntacticInfo)
RuleBuildingUtils.chooseAlphaBeta(alphaAnnotatedInfo.getNodeInfo().getSyntacticInfo(), betaAnnotatedInfo.getNodeInfo().getSyntacticInfo());
NodeInfo newAnnotatedNodeInfo;
if (betaAnnotatedInfo.getNodeInfo().isVariable())
newAnnotatedNodeInfo = DefaultNodeInfo.newVariableDefaultNodeInfo (betaAnnotatedInfo.getNodeInfo().getVariableId(), null, -1, null, syntacticInfo);
else
{
String word = (String) RuleBuildingUtils.chooseAlphaBeta(alphaAnnotatedInfo.getNodeInfo().getWord(), betaAnnotatedInfo.getNodeInfo().getWord());
newAnnotatedNodeInfo = new DefaultNodeInfo(word, lemma, -1, null, syntacticInfo);
}
Info newAnnotatedInfo = new DefaultInfo(betaAnnotatedInfo.getId(), newAnnotatedNodeInfo, newEdgeAnnotatedInfo);
return newAnnotatedInfo;
}