wffweb/src/main/java/com/webfirmframework/wffweb/tag/html/AbstractHtml.java
public boolean insertAfter(final AbstractHtml... abstractHtmls) {

        if (parent == null) {
            throw new NoParentException("There must be a parent for this tag.");
        }

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

            final AbstractHtml[] childrenOfParent = parent.children
                    .toArray(new AbstractHtml[parent.children.size()]);

            for (int i = 0; i < childrenOfParent.length; i++) {

                if (equals(childrenOfParent[i])) {

                    if (i < (childrenOfParent.length - 1)) {

                        return childrenOfParent[i + 1]
                                .insertBefore(childrenOfParent, abstractHtmls);

                    } else {
                        parent.appendChildrenLockless(abstractHtmls);
                    }

                    result = true;
                }

            }

        } finally {
            lock.unlock();
        }
        final PushQueue pushQueue = sharedObject.getPushQueue(ACCESS_OBJECT);
        if (pushQueue != null) {
            pushQueue.push();
        }
        return result;
    }
public boolean insertAfter(final AbstractHtml... abstractHtmls) {

        if (parent == null) {
            throw new NoParentException("There must be a parent for this tag.");
        }

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

            final AbstractHtml[] childrenOfParent = parent.children
                    .toArray(new AbstractHtml[parent.children.size()]);

            for (int i = 0; i < childrenOfParent.length; i++) {

                if (equals(childrenOfParent[i])) {

                    if (i < (childrenOfParent.length - 1)) {

                        return childrenOfParent[i + 1]
                                .insertBefore(childrenOfParent, abstractHtmls);

                    } else {
                        parent.appendChildrenLockless(abstractHtmls);
                    }

                    result = true;
                }

            }

        } finally {
            lock.unlock();
        }
        final PushQueue pushQueue = sharedObject.getPushQueue(ACCESS_OBJECT);
        if (pushQueue != null) {
            pushQueue.push();
        }
        return result;
    }
Inserts the given tags after this tag. There must be a parent for this
method tag. <br>
Note : This {@code insertAfter} method might be bit slower (in terms of
nano optimization) than {@code insertBefore} method as it internally uses
{@code insertBefore} method. This will be improved in the future version.

@param abstractHtmls
to insert after this tag
@return true if inserted otherwise false.
@since 2.1.6
@author WFF