public Edge moveDependencyEdge(DependencyNode newHead, DependencyNode dependent) throws MaltChainedException {
if (dependent == null || !dependent.hasHead() || newHead.getBelongsToGraph() != this || dependent.getBelongsToGraph() != this) {
return null;
}
Edge headEdge = dependent.getHeadEdge();
LabelSet labels = null;
if (headEdge.isLabeled()) {
labels = checkOutNewLabelSet();
for (SymbolTable table : headEdge.getLabelTypes()) {
labels.put(table, headEdge.getLabelCode(table));
}
}
headEdge.clear();
headEdge.setBelongsToGraph(this);
headEdge.setEdge((Node)newHead, (Node)dependent, Edge.DEPENDENCY_EDGE);
if (labels != null) {
headEdge.addLabel(labels);
labels.clear();
checkInLabelSet(labels);
}
return headEdge;
}