wffweb/src/main/java/com/webfirmframework/wffweb/tag/html/attribute/core/AbstractAttribute.java
protected Collection<WriteLock> getWriteLocks() {

        final Collection<WriteLock> writeLocks = new TreeSet<>((o1,
                o2) -> Integer.compare(o2.getHoldCount(), o1.getHoldCount()));

        for (final AbstractHtml ownerTag : ownerTags) {
            final WriteLock writeLock = ownerTag.getSharedObject()
                    .getLock(ACCESS_OBJECT).writeLock();
            if (writeLock != null) {
                try {
                    writeLocks.add(writeLock);
                } catch (final Exception e) {
                    e.printStackTrace();
                }
            }
        }

        return writeLocks;
    }
protected Collection<WriteLock> getWriteLocks() {

        final Collection<WriteLock> writeLocks = new TreeSet<>((o1,
                o2) -> Integer.compare(o2.getHoldCount(), o1.getHoldCount()));

        for (final AbstractHtml ownerTag : ownerTags) {
            final WriteLock writeLock = ownerTag.getSharedObject()
                    .getLock(ACCESS_OBJECT).writeLock();
            if (writeLock != null) {
                try {
                    writeLocks.add(writeLock);
                } catch (final Exception e) {
                    e.printStackTrace();
                }
            }
        }

        return writeLocks;
    }
NB: this may not return the same locks as there could be the its
ownerTags change. So call only once and reuse it for both lock and unlock
call.

@return the set of write locks