private boolean putNodeToLink(Link link, Node node, boolean hasMultipleChild) {
        if (node == null) {
            return false;
        }

        if (node.isLinked()) {
            // Duplicated nextSpanId
            logger.warn("Already linked node. link {} to node {}", link, node);
            return false;
        }

        if (isDebug) {
            logger.debug("Linked link {} to node {}", link, node);
        }

        // linked
        node.setLinked(true);
        link.setLinked(true);
        if (hasMultipleChild) {
            link.getLinkedCallTree().updateForMultipleChild(node.getSpanCallTree());
        } else {
            link.getLinkedCallTree().update(node.getSpanCallTree());
        }
        return true;
    }
@author netspider
@author emeroad
@author jaehong.kim
web/src/main/java/com/navercorp/pinpoint/web/calltree/span/SpanAligner.java