// 2) overlapping trees
if(t1 == t2 || (t1.getBegin() >= t2.getBegin() && t1.getEnd() <= t2.getEnd()) || (t2.getBegin() >= t1.getBegin() && t2.getEnd() <= t1.getEnd())){
return sameTree(t1, t2);
}
SimpleTree node = null;
TreebankNode lca = getLCA(t1, t2);
if(lca == null) node = new SimpleTree("TOP");
else node = new SimpleTree(lca.getNodeType());
ArrayList<TreebankNode> antePath = getUpwardPath(lca, t1);
SimpleTree parent = node;
for(TreebankNode child : antePath){
SimpleTree newChild = new SimpleTree(child.getNodeType());
parent.addChild(newChild);
parent = newChild;
}
parent.addChild(new SimpleTree("arg1"));
ArrayList<TreebankNode> anaPath = getUpwardPath(lca, t2);
parent = node;
for(TreebankNode child : anaPath){
SimpleTree newChild = new SimpleTree(child.getNodeType());
parent.addChild(newChild);
parent = newChild;
}
parent.addChild(new SimpleTree("arg2"));
return node;
}