wffweb/src/main/java/com/webfirmframework/wffweb/tag/html/AbstractHtml.java
public void appendChildren(final Collection<AbstractHtml> children) {

        boolean listenerInvoked = false;
        final Lock lock = sharedObject.getLock(ACCESS_OBJECT).writeLock();
        try {
            lock.lock();

            final Collection<ChildMovedEvent> movedOrAppended = new ArrayDeque<>(
                    children.size());

            for (final AbstractHtml child : children) {
                final AbstractHtml previousParent = child.parent;

                addChild(child, false);

                final ChildMovedEvent event = new ChildMovedEvent(
                        previousParent, this, child);
                movedOrAppended.add(event);

            }

            final ChildTagAppendListener listener = sharedObject
                    .getChildTagAppendListener(ACCESS_OBJECT);
            if (listener != null) {
                listener.childrendAppendedOrMoved(movedOrAppended);
                listenerInvoked = true;
            }
        } finally {
            lock.unlock();
        }
        if (listenerInvoked) {
            final PushQueue pushQueue = sharedObject
                    .getPushQueue(ACCESS_OBJECT);
            if (pushQueue != null) {
                pushQueue.push();
            }
        }
    }
public void appendChildren(final Collection<AbstractHtml> children) {

        boolean listenerInvoked = false;
        final Lock lock = sharedObject.getLock(ACCESS_OBJECT).writeLock();
        try {
            lock.lock();

            final Collection<ChildMovedEvent> movedOrAppended = new ArrayDeque<>(
                    children.size());

            for (final AbstractHtml child : children) {
                final AbstractHtml previousParent = child.parent;

                addChild(child, false);

                final ChildMovedEvent event = new ChildMovedEvent(
                        previousParent, this, child);
                movedOrAppended.add(event);

            }

            final ChildTagAppendListener listener = sharedObject
                    .getChildTagAppendListener(ACCESS_OBJECT);
            if (listener != null) {
                listener.childrendAppendedOrMoved(movedOrAppended);
                listenerInvoked = true;
            }
        } finally {
            lock.unlock();
        }
        if (listenerInvoked) {
            final PushQueue pushQueue = sharedObject
                    .getPushQueue(ACCESS_OBJECT);
            if (pushQueue != null) {
                pushQueue.push();
            }
        }
    }
adds the given children to the last position of the current children of
this object.

@param children
children to append in this object's existing
children.
@author WFF