code: 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();
              }
          }
      }
docs: 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