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 .