notification-portlet-api/src/main/java/org/jasig/portlet/notice/NotificationResponse.java
public NotificationResponse cloneIfNotCloned() {
        try {
            return isCloned() ? this : (NotificationResponse) this.clone();
        } catch (CloneNotSupportedException e) {
            log.error("Failed to clone() the sourceResponse", e);
        }
        return this;
    }
public NotificationResponse cloneIfNotCloned() {
        try {
            return isCloned() ? this : (NotificationResponse) this.clone();
        } catch (CloneNotSupportedException e) {
            log.error("Failed to clone() the sourceResponse", e);
        }
        return this;
    }
Best guess as to the reason this method exists: beans that produce fresh
{@link NotificationResponse} objects (without cloning them) may safely cache them.  They need
not fear that another bean will transform their copy.  Beans that do clone them, however, can
safely operate on a clone.