//# 17 errors, 2,902 messages
//#
/*
    //#blogentry.java:1:1: class: net.sourceforge.pebble.domain.BlogEntry
 * Copyright (c) 2003-2006, Simon Brown
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *   - Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *
 *   - Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in
 *     the documentation and/or other materials provided with the
 *     distribution.
 *
 *   - Neither the name of Pebble nor the names of its contributors may
 *     be used to endorse or promote products derived from this software
 *     without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */
package net.sourceforge.pebble.domain;

import net.sourceforge.pebble.api.event.blogentry.BlogEntryEvent;
import net.sourceforge.pebble.api.event.comment.CommentEvent;
import net.sourceforge.pebble.api.event.trackback.TrackBackEvent;
import net.sourceforge.pebble.comparator.ResponseByDateComparator;
import net.sourceforge.pebble.web.validation.ValidationContext;
import net.sourceforge.pebble.trackback.TrackBackTokenManager;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.util.*;

/**
 * Represents a blog entry.
 *
 * @author Simon Brown
 */
public class BlogEntry extends PageBasedContent {

  /**
   * the log used by this class
   */
  private static Log log = LogFactory.getLog(BlogEntry.class);
    //#blogentry.java:55: method: net.sourceforge.pebble.domain.BlogEntry.net.sourceforge.pebble.domain.BlogEntry__static_init
    //#blogentry.java:55: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: net.sourceforge.pebble.domain.BlogEntry__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.addCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.addComment(Lnet/sourceforge/pebble/domain/Comment;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.addEvent(Lnet/sourceforge/pebble/api/event/PebbleEvent;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.addTrackBack(Lnet/sourceforge/pebble/domain/TrackBack;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.areEventsEnabled()Z
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.clearEvents()V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.clearPropertyChangeEvents()V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.clone()Ljava/lang/Object;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.createComment(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Comment;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.createComment(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Date;Lnet/sourceforge/pebble/domain/State;)Lnet/sourceforge/pebble/domain/Comment;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.createTrackBack(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/TrackBack;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.createTrackBack(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Date;Lnet/sourceforge/pebble/domain/State;)Lnet/sourceforge/pebble/domain/TrackBack;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getAllTags()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getAttachment()Lnet/sourceforge/pebble/domain/Attachment;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getAuthor()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getBody()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getCategories()Ljava/util/Set;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getComment(J)Lnet/sourceforge/pebble/domain/Comment;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getComments()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getComments(Lnet/sourceforge/pebble/domain/Comment;)Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getCommentsLink()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getContent()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getDate()Ljava/util/Date;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getEvents()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getGuid()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getId()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getLastModified()Ljava/util/Date;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getLockedBy()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getNextBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getNumberOfComments()I
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getNumberOfResponses()I
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getNumberOfTrackBacks()I
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getPermalink()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getPreviousBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getPropertyChangeEvents()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getResponse(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Response;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getResponses()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getSubtitle()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTags()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTagsAsCommaSeparated()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTitle()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTrackBack(J)Lnet/sourceforge/pebble/domain/TrackBack;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTrackBackLink()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTrackBacksLink()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTruncatedContent()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getUser()Lnet/sourceforge/pebble/security/PebbleUserDetails;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.hasEvents()Z
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.hasTag(Ljava/lang/String;)Z
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.hashCode()I
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.inCategory(Lnet/sourceforge/pebble/domain/Category;)Z
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.insertEvent(Lnet/sourceforge/pebble/api/event/PebbleEvent;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.isAggregated()Z
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.isCommentsEnabled()Z
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.isDirty()Z
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.isPersistent()Z
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.isPublished()Z
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.isTrackBacksEnabled()Z
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.isUnpublished()Z
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.nextEvent()Lnet/sourceforge/pebble/api/event/PebbleEvent;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.removeAllCategories()V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.removeComment(J)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.removeResponse(Lnet/sourceforge/pebble/domain/Response;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.removeTrackBack(J)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setAttachment(Lnet/sourceforge/pebble/domain/Attachment;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setAuthor(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setBody(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setCategories(Ljava/util/Collection;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setCommentsEnabled(Z)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setDate(Ljava/util/Date;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setEventsEnabled(Z)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setExcerpt(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setLockedBy(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setOriginalPermalink(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setPersistent(Z)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setPublished(Z)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setSubtitle(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setTags(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setTimeZoneId(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setTrackBacksEnabled(Z)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.toString()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.validate(Lnet/sourceforge/pebble/web/validation/ValidationContext;)V
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): log
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#output(net.sourceforge.pebble.domain.BlogEntry__static_init): net/sourceforge/pebble/domain/Permalinkable.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): net/sourceforge/pebble/domain/Permalinkable.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.addCategory(Lnet/sourceforge/pebble/domain/Category;)V == &addCategory
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.addComment(Lnet/sourceforge/pebble/domain/Comment;)V == &addComment
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.addEvent(Lnet/sourceforge/pebble/api/event/PebbleEvent;)V == &net/sourceforge/pebble/domain/Content.addEvent
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.addTrackBack(Lnet/sourceforge/pebble/domain/TrackBack;)V == &addTrackBack
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.areEventsEnabled()Z == &net/sourceforge/pebble/domain/Content.areEventsEnabled
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.clearEvents()V == &clearEvents
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.clearPropertyChangeEvents()V == &net/sourceforge/pebble/domain/Content.clearPropertyChangeEvents
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.clone()Ljava/lang/Object; == &clone
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.createComment(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Comment; == &createComment
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.createComment(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Date;Lnet/sourceforge/pebble/domain/State;)Lnet/sourceforge/pebble/domain/Comment; == &createComment
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.createTrackBack(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/TrackBack; == &createTrackBack
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.createTrackBack(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Date;Lnet/sourceforge/pebble/domain/State;)Lnet/sourceforge/pebble/domain/TrackBack; == &createTrackBack
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.equals(Ljava/lang/Object;)Z == &equals
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getAllTags()Ljava/util/List; == &getAllTags
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getAttachment()Lnet/sourceforge/pebble/domain/Attachment; == &getAttachment
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getAuthor()Ljava/lang/String; == &net/sourceforge/pebble/domain/PageBasedContent.getAuthor
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog; == &net/sourceforge/pebble/domain/PageBasedContent.getBlog
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getBody()Ljava/lang/String; == &net/sourceforge/pebble/domain/PageBasedContent.getBody
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getCategories()Ljava/util/Set; == &getCategories
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getComment(J)Lnet/sourceforge/pebble/domain/Comment; == &getComment
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getComments()Ljava/util/List; == &getComments
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getComments(Lnet/sourceforge/pebble/domain/Comment;)Ljava/util/List; == &getComments
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getCommentsLink()Ljava/lang/String; == &getCommentsLink
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getContent()Ljava/lang/String; == &getContent
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getDate()Ljava/util/Date; == &net/sourceforge/pebble/domain/PageBasedContent.getDate
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getEvents()Ljava/util/List; == &net/sourceforge/pebble/domain/Content.getEvents
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getExcerpt()Ljava/lang/String; == &getExcerpt
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getGuid()Ljava/lang/String; == &getGuid
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getId()Ljava/lang/String; == &net/sourceforge/pebble/domain/PageBasedContent.getId
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getLastModified()Ljava/util/Date; == &getLastModified
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getLocalPermalink()Ljava/lang/String; == &getLocalPermalink
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getLockedBy()Ljava/lang/String; == &net/sourceforge/pebble/domain/PageBasedContent.getLockedBy
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getNextBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry; == &getNextBlogEntry
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getNumberOfComments()I == &getNumberOfComments
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getNumberOfResponses()I == &getNumberOfResponses
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getNumberOfTrackBacks()I == &getNumberOfTrackBacks
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getOriginalPermalink()Ljava/lang/String; == &net/sourceforge/pebble/domain/PageBasedContent.getOriginalPermalink
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getPermalink()Ljava/lang/String; == &net/sourceforge/pebble/domain/PageBasedContent.getPermalink
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getPreviousBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry; == &getPreviousBlogEntry
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getPropertyChangeEvents()Ljava/util/List; == &net/sourceforge/pebble/domain/Content.getPropertyChangeEvents
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getResponse(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Response; == &getResponse
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getResponses()Ljava/util/List; == &getResponses
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State; == &net/sourceforge/pebble/domain/Content.getState
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getSubtitle()Ljava/lang/String; == &net/sourceforge/pebble/domain/PageBasedContent.getSubtitle
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTags()Ljava/lang/String; == &net/sourceforge/pebble/domain/PageBasedContent.getTags
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTagsAsCommaSeparated()Ljava/lang/String; == &net/sourceforge/pebble/domain/PageBasedContent.getTagsAsCommaSeparated
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTagsAsList()Ljava/util/List; == &net/sourceforge/pebble/domain/PageBasedContent.getTagsAsList
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTimeZone()Ljava/util/TimeZone; == &getTimeZone
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTimeZoneId()Ljava/lang/String; == &getTimeZoneId
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTitle()Ljava/lang/String; == &net/sourceforge/pebble/domain/PageBasedContent.getTitle
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTrackBack(J)Lnet/sourceforge/pebble/domain/TrackBack; == &getTrackBack
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTrackBackLink()Ljava/lang/String; == &getTrackBackLink
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTrackBacks()Ljava/util/List; == &getTrackBacks
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTrackBacksLink()Ljava/lang/String; == &getTrackBacksLink
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getTruncatedContent()Ljava/lang/String; == &net/sourceforge/pebble/domain/Content.getTruncatedContent
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.getUser()Lnet/sourceforge/pebble/security/PebbleUserDetails; == &net/sourceforge/pebble/domain/PageBasedContent.getUser
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.hasEvents()Z == &net/sourceforge/pebble/domain/Content.hasEvents
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.hasTag(Ljava/lang/String;)Z == &hasTag
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.hashCode()I == &hashCode
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.inCategory(Lnet/sourceforge/pebble/domain/Category;)Z == &inCategory
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.insertEvent(Lnet/sourceforge/pebble/api/event/PebbleEvent;)V == &net/sourceforge/pebble/domain/Content.insertEvent
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.isAggregated()Z == &net/sourceforge/pebble/domain/PageBasedContent.isAggregated
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.isCommentsEnabled()Z == &isCommentsEnabled
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.isDirty()Z == &net/sourceforge/pebble/domain/Content.isDirty
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.isPersistent()Z == &net/sourceforge/pebble/domain/PageBasedContent.isPersistent
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.isPublished()Z == &net/sourceforge/pebble/domain/PageBasedContent.isPublished
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.isTrackBacksEnabled()Z == &isTrackBacksEnabled
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.isUnpublished()Z == &net/sourceforge/pebble/domain/PageBasedContent.isUnpublished
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.nextEvent()Lnet/sourceforge/pebble/api/event/PebbleEvent; == &net/sourceforge/pebble/domain/Content.nextEvent
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.removeAllCategories()V == &removeAllCategories
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.removeComment(J)V == &removeComment
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.removeResponse(Lnet/sourceforge/pebble/domain/Response;)V == &removeResponse
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.removeTrackBack(J)V == &removeTrackBack
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setAttachment(Lnet/sourceforge/pebble/domain/Attachment;)V == &setAttachment
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setAuthor(Ljava/lang/String;)V == &net/sourceforge/pebble/domain/PageBasedContent.setAuthor
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setBody(Ljava/lang/String;)V == &net/sourceforge/pebble/domain/PageBasedContent.setBody
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setCategories(Ljava/util/Collection;)V == &setCategories
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setCommentsEnabled(Z)V == &setCommentsEnabled
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setDate(Ljava/util/Date;)V == &setDate
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setEventsEnabled(Z)V == &setEventsEnabled
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setExcerpt(Ljava/lang/String;)V == &setExcerpt
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setLockedBy(Ljava/lang/String;)V == &net/sourceforge/pebble/domain/PageBasedContent.setLockedBy
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setOriginalPermalink(Ljava/lang/String;)V == &net/sourceforge/pebble/domain/PageBasedContent.setOriginalPermalink
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setPersistent(Z)V == &net/sourceforge/pebble/domain/PageBasedContent.setPersistent
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setPublished(Z)V == &net/sourceforge/pebble/domain/PageBasedContent.setPublished
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V == &setState
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setSubtitle(Ljava/lang/String;)V == &net/sourceforge/pebble/domain/PageBasedContent.setSubtitle
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setTags(Ljava/lang/String;)V == &net/sourceforge/pebble/domain/PageBasedContent.setTags
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setTimeZoneId(Ljava/lang/String;)V == &setTimeZoneId
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setTitle(Ljava/lang/String;)V == &setTitle
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.setTrackBacksEnabled(Z)V == &setTrackBacksEnabled
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.toString()Ljava/lang/String; == &toString
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): __Dispatch_Table.validate(Lnet/sourceforge/pebble/web/validation/ValidationContext;)V == &validate
    //#post(net.sourceforge.pebble.domain.BlogEntry__static_init): init'ed(log)
    //#blogentry.java:55: end of method: net.sourceforge.pebble.domain.BlogEntry.net.sourceforge.pebble.domain.BlogEntry__static_init

  public static final String EXCERPT_PROPERTY = "excerpt";
  public static final String COMMENTS_ENABLED_PROPERTY = "commentsEnabed";
  public static final String TRACKBACKS_ENABLED_PROPERTY = "trackBacksEnabled";
  public static final String ATTACHMENT_PROPERTY = "attachment";
  public static final String CATEGORIES_PROPERTY = "categories";

  /** the permalink */
  private String permalink;

  /**
   * the category that the blog entry falls into
   */
  private Set categories = new HashSet();

  /**
   * the excerpt of the blog entry
   */
  private String excerpt = "";

  /**
   * a flag to indicate whether comments are enabled for this entry
   */
  private boolean commentsEnabled = true;

  /**
   * a flag to indicate whether TrackBacks are enabled for this entry
   */
  private boolean trackBacksEnabled = true;

  /**
   * the collection of comments for the blog entry
   */
  private List comments = new ArrayList();

  /**
   * the collection of trackbacks for the blog entry
   */
  private List trackBacks = new ArrayList();

  /** the attachment for this blog entry, if applicable */
  private Attachment attachment;

  /** the timezone that this entry was posted in */
  private String timeZoneId;

  /**
   * Creates a new blog entry.
   *
   * @param blog    the owning Blog
   */
  public BlogEntry(Blog blog) {
    super(blog);
    //#blogentry.java:108: method: void net.sourceforge.pebble.domain.BlogEntry.net.sourceforge.pebble.domain.BlogEntry(Blog)
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): __Descendant_Table[others]
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): __Dispatch_Table.addEvent(Lnet/sourceforge/pebble/api/event/PebbleEvent;)V
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): __Dispatch_Table.areEventsEnabled()Z
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): __Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): __Dispatch_Table.isPublished()Z
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): __Dispatch_Table.isUnpublished()Z
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): __Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): __Dispatch_Table.setPublished(Z)V
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): __Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): blog
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#4).__Tag
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).__Tag
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/State.PUBLISHED
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/State.UNPUBLISHED
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this
    //#input(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.__Tag
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new ArrayList(BlogEntry#2) num objects
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new ArrayList(BlogEntry#3) num objects
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new ArrayList(Content#1) num objects
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new ArrayList(Content#3) num objects
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new Date(PageBasedContent#2) num objects
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new HashSet(BlogEntry#1) num objects
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new LinkedList(PageBasedContent#1) num objects
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new PropertyChangeSupport(Content#2) num objects
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.__Tag
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.author
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.blog
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.body
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.categories
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.comments
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.commentsEnabled
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.date
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.events
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.eventsEnabled
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.excerpt
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.id
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.lockedBy
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.permalink
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.persistent
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.propertyChangeEvents
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.propertyChangeSupport
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.state
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.subtitle
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.tags
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.tagsAsCommaSeparated
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.tagsAsList
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.title
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.trackBacks
    //#output(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.trackBacksEnabled
    //#new obj(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new ArrayList(BlogEntry#2)
    //#new obj(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new ArrayList(BlogEntry#3)
    //#new obj(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new ArrayList(Content#1)
    //#new obj(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new ArrayList(Content#3)
    //#new obj(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new Date(PageBasedContent#2)
    //#new obj(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new HashSet(BlogEntry#1)
    //#new obj(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new LinkedList(PageBasedContent#1)
    //#new obj(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new PropertyChangeSupport(Content#2)
    //#pre[4] (void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.author == &""
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.body == &""
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.excerpt == &""
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.subtitle == &""
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.tags == &""
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.tagsAsCommaSeparated == &""
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.title == &""
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.blog == blog
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): init'ed(this.blog)
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.categories == &new HashSet(BlogEntry#1)
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.comments == &new ArrayList(BlogEntry#2)
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.commentsEnabled == 1
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.trackBacksEnabled == 1
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new ArrayList(BlogEntry#2) num objects == 1
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new ArrayList(BlogEntry#3) num objects == 1
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new ArrayList(Content#1) num objects == 1
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new ArrayList(Content#3) num objects == 1
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new Date(PageBasedContent#2) num objects == 1
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new HashSet(BlogEntry#1) num objects == 1
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new LinkedList(PageBasedContent#1) num objects == 1
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): new PropertyChangeSupport(Content#2) num objects == 1
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): init'ed(this.date)
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.events == &new ArrayList(Content#1)
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): init'ed(this.eventsEnabled)
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): possibly_updated(this.id)
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): init'ed(this.lockedBy)
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.permalink == null
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): init'ed(this.persistent)
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.propertyChangeEvents == &new ArrayList(Content#3)
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.propertyChangeSupport == &new PropertyChangeSupport(Content#2)
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.state == &net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#4)
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.tagsAsList == &new LinkedList(PageBasedContent#1)
    //#post(void net.sourceforge.pebble.domain.BlogEntry(Blog)): this.trackBacks == &new ArrayList(BlogEntry#3)
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:net.sourceforge.pebble.api.event.PebbleEvent
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:java.util.EventObject
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:java.beans.PropertyChangeSupport:firePropertyChange
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:setState
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:java.beans.PropertyChangeSupport
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:java.beans.PropertyChangeSupport:addPropertyChangeListener
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:java.util.LinkedList
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:java.util.Date
    //#unanalyzed(void net.sourceforge.pebble.domain.BlogEntry(Blog)): Effects-of-calling:setDate
    setPublished(false);
  }
    //#blogentry.java:110: end of method: void net.sourceforge.pebble.domain.BlogEntry.net.sourceforge.pebble.domain.BlogEntry(Blog)

  /**
   * Sets the title of this blog entry.
   *
   * @param newTitle  the title as a String
   */
  public void setTitle(String newTitle) {
    super.setTitle(newTitle);
    //#blogentry.java:118: method: void net.sourceforge.pebble.domain.BlogEntry.setTitle(String)
    //#input(void setTitle(String)): newTitle
    //#input(void setTitle(String)): this
    //#input(void setTitle(String)): this.propertyChangeSupport
    //#input(void setTitle(String)): this.title
    //#output(void setTitle(String)): this.permalink
    //#output(void setTitle(String)): this.title
    //#pre[2] (void setTitle(String)): init'ed(this.title)
    //#pre[4] (void setTitle(String)): this.propertyChangeSupport != null
    //#post(void setTitle(String)): this.permalink == null
    //#post(void setTitle(String)): this.title == newTitle
    //#post(void setTitle(String)): init'ed(this.title)
    //#unanalyzed(void setTitle(String)): Effects-of-calling:java.beans.PropertyChangeSupport:firePropertyChange

    // and cause the permalink to be re-generated
    this.permalink = null;
  }
    //#blogentry.java:122: end of method: void net.sourceforge.pebble.domain.BlogEntry.setTitle(String)

  /**
   * Gets the category of this blog entry.
   *
   * @return the category as a String
   */
  public Set<Category> getCategories() {
    return new HashSet<Category>(categories);
    //#blogentry.java:130: method: Set net.sourceforge.pebble.domain.BlogEntry.getCategories()
    //#input(Set getCategories()): this
    //#input(Set getCategories()): this.categories
    //#output(Set getCategories()): new HashSet(getCategories#1) num objects
    //#output(Set getCategories()): return_value
    //#new obj(Set getCategories()): new HashSet(getCategories#1)
    //#pre[2] (Set getCategories()): init'ed(this.categories)
    //#post(Set getCategories()): return_value == &new HashSet(getCategories#1)
    //#post(Set getCategories()): new HashSet(getCategories#1) num objects == 1
    //#blogentry.java:130: end of method: Set net.sourceforge.pebble.domain.BlogEntry.getCategories()
  }

  /**
   * Gets a list of all tags.
   *
   * @return  a List of tags
   */
  public List<Tag> getAllTags() {
    List<Tag> list = new ArrayList<Tag>();
    //#blogentry.java:139: method: List net.sourceforge.pebble.domain.BlogEntry.getAllTags()
    //#input(List getAllTags()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(List getAllTags()): __Descendant_Table[others]
    //#input(List getAllTags()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(List getAllTags()): __Dispatch_Table.getCategories()Ljava/util/Set;
    //#input(List getAllTags()): __Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(List getAllTags()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getAllTags()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(List getAllTags()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category;
    //#input(List getAllTags()): net/sourceforge/pebble/domain/Category.__Descendant_Table[net/sourceforge/pebble/domain/Category]
    //#input(List getAllTags()): net/sourceforge/pebble/domain/Category.__Descendant_Table[others]
    //#input(List getAllTags()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(List getAllTags()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getParent()Lnet/sourceforge/pebble/domain/Category;
    //#input(List getAllTags()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(List getAllTags()): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/domain/Tag]
    //#input(List getAllTags()): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/index/IndexedTag]
    //#input(List getAllTags()): net/sourceforge/pebble/domain/Tag.__Descendant_Table[others]
    //#input(List getAllTags()): this
    //#input(List getAllTags()): this.__Tag
    //#input(List getAllTags()): this.blog
    //#input(List getAllTags()): this.blog.__Tag
    //#input(List getAllTags()): this.blog.rootCategory
    //#input(List getAllTags()): this.blog.rootCategory...__Tag
    //#input(List getAllTags()): this.blog.rootCategory...parent
    //#input(List getAllTags()): this.blog.rootCategory...tagsAsList
    //#input(List getAllTags()): this.blog.rootCategory.__Tag
    //#input(List getAllTags()): this.blog.rootCategory.parent
    //#input(List getAllTags()): this.blog.rootCategory.tagsAsList
    //#input(List getAllTags()): this.categories
    //#input(List getAllTags()): this.tagsAsList
    //#output(List getAllTags()): new ArrayList(getAllTags#1) num objects
    //#output(List getAllTags()): return_value
    //#new obj(List getAllTags()): new ArrayList(getAllTags#1)
    //#pre[2] (List getAllTags()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[12] (List getAllTags()): init'ed(this.categories)
    //#pre[13] (List getAllTags()): this.tagsAsList != null
    //#pre[3] (List getAllTags()): (soft) this.blog != null
    //#pre[4] (List getAllTags()): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[5] (List getAllTags()): (soft) this.blog.rootCategory != null
    //#pre[6] (List getAllTags()): (soft) this.blog.rootCategory...__Tag == net/sourceforge/pebble/domain/Category
    //#pre[7] (List getAllTags()): (soft) init'ed(this.blog.rootCategory...parent)
    //#pre[8] (List getAllTags()): (soft) init'ed(this.blog.rootCategory...tagsAsList)
    //#pre[9] (List getAllTags()): (soft) this.blog.rootCategory.__Tag == net/sourceforge/pebble/domain/Category
    //#pre[10] (List getAllTags()): (soft) init'ed(this.blog.rootCategory.parent)
    //#pre[11] (List getAllTags()): (soft) init'ed(this.blog.rootCategory.tagsAsList)
    //#presumption(List getAllTags()): java.util.Iterator:next(...).__Tag@144 == net/sourceforge/pebble/domain/Category
    //#presumption(List getAllTags()): java.util.Iterator:next(...).__Tag@149 in {net/sourceforge/pebble/domain/Tag, net/sourceforge/pebble/index/IndexedTag}
    //#presumption(List getAllTags()): java.util.Iterator:next(...).__Tag@159 in {net/sourceforge/pebble/domain/Tag, net/sourceforge/pebble/index/IndexedTag}
    //#presumption(List getAllTags()): java.util.Iterator:next(...).__Tag@168 in {net/sourceforge/pebble/domain/Tag, net/sourceforge/pebble/index/IndexedTag}
    //#presumption(List getAllTags()): java.util.Iterator:next(...)@144 != null
    //#post(List getAllTags()): return_value == &new ArrayList(getAllTags#1)
    //#post(List getAllTags()): new ArrayList(getAllTags#1) num objects == 1
    //#unanalyzed(List getAllTags()): Effects-of-calling:java.util.HashSet
    //#unanalyzed(List getAllTags()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getAllTags()): Effects-of-calling:java.util.List:addAll
    //#test_vector(List getAllTags()): java.util.Iterator:hasNext(...)@148: {1}, {0}
    //#test_vector(List getAllTags()): java.util.Iterator:hasNext(...)@158: {1}, {0}
    //#test_vector(List getAllTags()): java.util.Iterator:hasNext(...)@167: {1}, {0}
    //#test_vector(List getAllTags()): java.util.List:contains(...)@150: {1}, {0}
    //#test_vector(List getAllTags()): java.util.List:contains(...)@160: {1}, {0}
    //#test_vector(List getAllTags()): java.util.List:contains(...)@169: {1}, {0}
    //#test_vector(List getAllTags()): java.util.Set:size(...)@141: {-2_147_483_648..0}, {1..4_294_967_295}

    if (getCategories().size() > 0) {
      Iterator it = getCategories().iterator();
      while (it.hasNext()) {
        Category category = (Category)it.next();
        List tagsForCategory = category.getAllTags();
    //#blogentry.java:145: ?!precondition failure
    //#    net/sourceforge/pebble/domain/Category.getAllTags: (soft) this...__Tag == net/sourceforge/pebble/domain/Category
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: List getAllTags()
    //#    basic block: bb_24
    //#    assertion: (soft) undefined == 792_320
    //#    callee: List net/sourceforge/pebble/domain/Category.getAllTags()
    //#    callee assertion: (soft) this...__Tag == net/sourceforge/pebble/domain/Category
    //#    callee file: category.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 257
    //#    VN: undefined
    //#    Expected: {792_320}
    //#    Bad: {0, Invalid}
    //#    Attribs:  Int  Exp singleton  Bad singleton  Bad overlaps +/-1000  Soft  Bad < Exp
    //#blogentry.java:145: ?precondition failure
    //#    net/sourceforge/pebble/domain/Category.getAllTags: (soft) init'ed(this...parent)
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: List getAllTags()
    //#    basic block: bb_24
    //#    assertion: (soft) init'ed(undefined)
    //#    callee: List net/sourceforge/pebble/domain/Category.getAllTags()
    //#    callee assertion: (soft) init'ed(this...parent)
    //#    callee file: category.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 257
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    //#blogentry.java:145: ?precondition failure
    //#    net/sourceforge/pebble/domain/Category.getAllTags: (soft) init'ed(this...tagsAsList)
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: List getAllTags()
    //#    basic block: bb_24
    //#    assertion: (soft) init'ed(undefined)
    //#    callee: List net/sourceforge/pebble/domain/Category.getAllTags()
    //#    callee assertion: (soft) init'ed(this...tagsAsList)
    //#    callee file: category.java
    //#    callee precondition index: [4]
    //#    callee srcpos: 257
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
        Collections.reverse(tagsForCategory);
        Iterator jt = tagsForCategory.iterator();
        while (jt.hasNext()) {
          Tag tag = (Tag)jt.next();
          if (!list.contains(tag)) {
            list.add(tag);
          }
        }
      }
    } else {
      List tagsForCategory = getBlog().getRootCategory().getAllTags();
      Iterator it = tagsForCategory.iterator();
      while (it.hasNext()) {
        Tag tag = (Tag)it.next();
        if (!list.contains(tag)) {
          list.add(tag);
        }
      }
    }

    Iterator it = getTagsAsList().iterator();
    while (it.hasNext()) {
      Tag tag = (Tag)it.next();
      if (!list.contains(tag)) {
        list.add(tag);
      }
    }

    Collections.sort(list);
    return list;
    //#blogentry.java:175: end of method: List net.sourceforge.pebble.domain.BlogEntry.getAllTags()
  }

  /**
   * Sets the category of this blog entry.
   *
   * @param category the category as a String
   */
  public synchronized void addCategory(Category category) {
    if (category != null && !categories.contains(category)) {
    //#blogentry.java:184: method: void net.sourceforge.pebble.domain.BlogEntry.addCategory(Category)
    //#input(void addCategory(Category)): category
    //#input(void addCategory(Category)): this
    //#input(void addCategory(Category)): this.categories
    //#input(void addCategory(Category)): this.propertyChangeSupport
    //#pre[3] (void addCategory(Category)): (soft) this.categories != null
    //#pre[4] (void addCategory(Category)): (soft) this.propertyChangeSupport != null
    //#test_vector(void addCategory(Category)): category: Addr_Set{null}, Inverse{null}
    //#test_vector(void addCategory(Category)): java.util.Set:contains(...)@184: {1}, {0}
      Set oldCategories = new HashSet(categories);
      categories.add(category);
      Set newCategories = new HashSet(categories);
      propertyChangeSupport.firePropertyChange(CATEGORIES_PROPERTY, oldCategories, newCategories);
    }
  }
    //#blogentry.java:190: end of method: void net.sourceforge.pebble.domain.BlogEntry.addCategory(Category)

  /**
   * Removes all categories from this blog entry.
   */
  public synchronized void removeAllCategories() {
    propertyChangeSupport.firePropertyChange(CATEGORIES_PROPERTY, new HashSet(categories), new HashSet());
    //#blogentry.java:196: method: void net.sourceforge.pebble.domain.BlogEntry.removeAllCategories()
    //#input(void removeAllCategories()): this
    //#input(void removeAllCategories()): this.categories
    //#input(void removeAllCategories()): this.propertyChangeSupport
    //#pre[2] (void removeAllCategories()): this.categories != null
    //#pre[3] (void removeAllCategories()): this.propertyChangeSupport != null
    categories.clear();
  }
    //#blogentry.java:198: end of method: void net.sourceforge.pebble.domain.BlogEntry.removeAllCategories()

  /**
   * Sets the categories for this blog entry.
   *
   * @param newCategories   a Collection of Category instances
   */
  public synchronized void setCategories(Collection newCategories) {
    if (newCategories != null) {
    //#blogentry.java:206: method: void net.sourceforge.pebble.domain.BlogEntry.setCategories(Collection)
    //#input(void setCategories(Collection)): newCategories
    //#input(void setCategories(Collection)): this
    //#input(void setCategories(Collection)): this.categories
    //#input(void setCategories(Collection)): this.propertyChangeSupport
    //#pre[3] (void setCategories(Collection)): (soft) this.categories != null
    //#pre[4] (void setCategories(Collection)): (soft) this.propertyChangeSupport != null
    //#test_vector(void setCategories(Collection)): newCategories: Addr_Set{null}, Inverse{null}
    //#test_vector(void setCategories(Collection)): java.util.Iterator:hasNext(...)@210: {1}, {0}
      Set oldCategories = new HashSet(categories);
      categories.clear();
      Iterator it = newCategories.iterator();
      while (it.hasNext()) {
        categories.add(it.next());
      }
      propertyChangeSupport.firePropertyChange(CATEGORIES_PROPERTY, oldCategories, new HashSet(newCategories));
    }
  }
    //#blogentry.java:215: end of method: void net.sourceforge.pebble.domain.BlogEntry.setCategories(Collection)

  /**
   * Determines whether this blog entry is in the specified category.
   *
   * @param category a Category instance
   * @return true if this entry is in the specified category,
   *         false otherwise
   */
  public boolean inCategory(Category category) {
    if (category != null) {
    //#blogentry.java:225: method: bool net.sourceforge.pebble.domain.BlogEntry.inCategory(Category)
    //#input(bool inCategory(Category)): category
    //#input(bool inCategory(Category)): category.__Tag
    //#input(bool inCategory(Category)): category.id
    //#input(bool inCategory(Category)): net/sourceforge/pebble/domain/Category.__Descendant_Table[net/sourceforge/pebble/domain/Category]
    //#input(bool inCategory(Category)): net/sourceforge/pebble/domain/Category.__Descendant_Table[others]
    //#input(bool inCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(bool inCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(bool inCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getParent()Lnet/sourceforge/pebble/domain/Category;
    //#input(bool inCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.hasParent(Lnet/sourceforge/pebble/domain/Category;)Z
    //#input(bool inCategory(Category)): this
    //#input(bool inCategory(Category)): this.categories
    //#output(bool inCategory(Category)): return_value
    //#pre[3] (bool inCategory(Category)): (soft) category.id != null
    //#pre[5] (bool inCategory(Category)): (soft) this.categories != null
    //#presumption(bool inCategory(Category)): java.util.Iterator:next(...).__Tag@228 == net/sourceforge/pebble/domain/Category
    //#presumption(bool inCategory(Category)): java.util.Iterator:next(...)@228 != null
    //#post(bool inCategory(Category)): init'ed(return_value)
    //#unanalyzed(bool inCategory(Category)): Effects-of-calling:java.lang.String:equals
    //#test_vector(bool inCategory(Category)): category: Addr_Set{null}, Inverse{null}
    //#test_vector(bool inCategory(Category)): java.util.Iterator:hasNext(...)@227: {1}, {0}
      Iterator it = categories.iterator();
      while (it.hasNext()) {
        Category c = (Category)it.next();
        if (c.equals(category) || c.hasParent(category)) {
    //#blogentry.java:229: ?!precondition failure
    //#    net/sourceforge/pebble/domain/Category.hasParent: (soft) this...__Tag == net/sourceforge/pebble/domain/Category
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: bool inCategory(Category)
    //#    basic block: bb_4
    //#    assertion: (soft) undefined == 792_320
    //#    callee: bool net/sourceforge/pebble/domain/Category.hasParent(Category)
    //#    callee assertion: (soft) this...__Tag == net/sourceforge/pebble/domain/Category
    //#    callee file: category.java
    //#    callee precondition index: [5]
    //#    callee srcpos: 162
    //#    VN: undefined
    //#    Expected: {792_320}
    //#    Bad: {0, Invalid}
    //#    Attribs:  Int  Exp singleton  Bad singleton  Bad overlaps +/-1000  Soft  Bad < Exp
    //#blogentry.java:229: ?precondition failure
    //#    net/sourceforge/pebble/domain/Category.hasParent: (soft) init'ed(this...id)
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: bool inCategory(Category)
    //#    basic block: bb_4
    //#    assertion: (soft) init'ed(undefined)
    //#    callee: bool net/sourceforge/pebble/domain/Category.hasParent(Category)
    //#    callee assertion: (soft) init'ed(this...id)
    //#    callee file: category.java
    //#    callee precondition index: [6]
    //#    callee srcpos: 162
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
    //#blogentry.java:229: ?precondition failure
    //#    net/sourceforge/pebble/domain/Category.hasParent: (soft) init'ed(this...parent)
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: bool inCategory(Category)
    //#    basic block: bb_4
    //#    assertion: (soft) init'ed(undefined)
    //#    callee: bool net/sourceforge/pebble/domain/Category.hasParent(Category)
    //#    callee assertion: (soft) init'ed(this...parent)
    //#    callee file: category.java
    //#    callee precondition index: [7]
    //#    callee srcpos: 162
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
          return true;
        }
      }

      return false;
    } else {
      return true;
    //#blogentry.java:236: end of method: bool net.sourceforge.pebble.domain.BlogEntry.inCategory(Category)
    }
  }

  /**
   * Determines whether this blog entry has the specified tag.
   *
   * @param s   a String
   * @return true if this entry has the specified tag,
   *         false otherwise
   */
  public boolean hasTag(String s) {
    if (s != null) {
    //#blogentry.java:248: method: bool net.sourceforge.pebble.domain.BlogEntry.hasTag(String)
    //#input(bool hasTag(String)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(bool hasTag(String)): __Descendant_Table[others]
    //#input(bool hasTag(String)): __Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(bool hasTag(String)): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(bool hasTag(String)): __Dispatch_Table.getCategories()Ljava/util/Set;
    //#input(bool hasTag(String)): __Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(bool hasTag(String)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(bool hasTag(String)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(bool hasTag(String)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category;
    //#input(bool hasTag(String)): net/sourceforge/pebble/domain/Category.__Descendant_Table[net/sourceforge/pebble/domain/Category]
    //#input(bool hasTag(String)): net/sourceforge/pebble/domain/Category.__Descendant_Table[others]
    //#input(bool hasTag(String)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(bool hasTag(String)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getParent()Lnet/sourceforge/pebble/domain/Category;
    //#input(bool hasTag(String)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(bool hasTag(String)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/domain/Tag]
    //#input(bool hasTag(String)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/index/IndexedTag]
    //#input(bool hasTag(String)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[others]
    //#input(bool hasTag(String)): net/sourceforge/pebble/domain/Tag.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(bool hasTag(String)): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(bool hasTag(String)): s
    //#input(bool hasTag(String)): this
    //#input(bool hasTag(String)): this.__Tag
    //#input(bool hasTag(String)): this.blog
    //#input(bool hasTag(String)): this.blog.__Tag
    //#input(bool hasTag(String)): this.blog.rootCategory
    //#input(bool hasTag(String)): this.blog.rootCategory...__Tag
    //#input(bool hasTag(String)): this.blog.rootCategory...parent
    //#input(bool hasTag(String)): this.blog.rootCategory...tagsAsList
    //#input(bool hasTag(String)): this.blog.rootCategory.__Tag
    //#input(bool hasTag(String)): this.blog.rootCategory.parent
    //#input(bool hasTag(String)): this.blog.rootCategory.tagsAsList
    //#input(bool hasTag(String)): this.categories
    //#input(bool hasTag(String)): this.tagsAsList
    //#output(bool hasTag(String)): return_value
    //#pre[3] (bool hasTag(String)): (soft) this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[4] (bool hasTag(String)): (soft) this.blog != null
    //#pre[5] (bool hasTag(String)): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[6] (bool hasTag(String)): (soft) this.blog.rootCategory != null
    //#pre[7] (bool hasTag(String)): (soft) this.blog.rootCategory...__Tag == net/sourceforge/pebble/domain/Category
    //#pre[8] (bool hasTag(String)): (soft) init'ed(this.blog.rootCategory...parent)
    //#pre[9] (bool hasTag(String)): (soft) init'ed(this.blog.rootCategory...tagsAsList)
    //#pre[10] (bool hasTag(String)): (soft) this.blog.rootCategory.__Tag == net/sourceforge/pebble/domain/Category
    //#pre[11] (bool hasTag(String)): (soft) init'ed(this.blog.rootCategory.parent)
    //#pre[12] (bool hasTag(String)): (soft) init'ed(this.blog.rootCategory.tagsAsList)
    //#pre[13] (bool hasTag(String)): (soft) init'ed(this.categories)
    //#pre[14] (bool hasTag(String)): (soft) this.tagsAsList != null
    //#post(bool hasTag(String)): init'ed(return_value)
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.util.HashSet
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.util.List:add
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.lang.String:toLowerCase
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.lang.String:replaceAll
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.util.List:contains
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.util.Set:size
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.util.Collections:reverse
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:getRootCategory
    //#unanalyzed(bool hasTag(String)): Effects-of-calling:java.util.Collections:sort
    //#test_vector(bool hasTag(String)): s: Addr_Set{null}, Inverse{null}
      return getAllTags().contains(new Tag(s, getBlog()));
    } else {
      return false;
    //#blogentry.java:251: end of method: bool net.sourceforge.pebble.domain.BlogEntry.hasTag(String)
    }
  }

  /**
   * Gets the content of this response.
   *
   * @return a String
   */
  public String getContent() {
    if (excerpt != null && excerpt.length() > 0) {
    //#blogentry.java:261: method: String net.sourceforge.pebble.domain.BlogEntry.getContent()
    //#input(String getContent()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(String getContent()): __Descendant_Table[others]
    //#input(String getContent()): __Dispatch_Table.getBody()Ljava/lang/String;
    //#input(String getContent()): this
    //#input(String getContent()): this.__Tag
    //#input(String getContent()): this.body
    //#input(String getContent()): this.excerpt
    //#output(String getContent()): return_value
    //#pre[4] (String getContent()): init'ed(this.excerpt)
    //#pre[2] (String getContent()): (soft) this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (String getContent()): (soft) init'ed(this.body)
    //#post(String getContent()): return_value == One-of{this.excerpt, this.body}
    //#post(String getContent()): (soft) init'ed(return_value)
    //#test_vector(String getContent()): this.excerpt: Addr_Set{null}, Inverse{null}
    //#test_vector(String getContent()): java.lang.String:length(...)@261: {0}, {1..4_294_967_295}
      return excerpt;
    } else {
      return getBody();
    //#blogentry.java:264: end of method: String net.sourceforge.pebble.domain.BlogEntry.getContent()
    }
  }

  /**
   * Gets the excerpt of this blog entry.
   *
   * @return the excerpt as a String
   */
  public String getExcerpt() {
    return excerpt;
    //#blogentry.java:274: method: String net.sourceforge.pebble.domain.BlogEntry.getExcerpt()
    //#input(String getExcerpt()): this
    //#input(String getExcerpt()): this.excerpt
    //#output(String getExcerpt()): return_value
    //#pre[2] (String getExcerpt()): init'ed(this.excerpt)
    //#post(String getExcerpt()): return_value == this.excerpt
    //#post(String getExcerpt()): init'ed(return_value)
    //#blogentry.java:274: end of method: String net.sourceforge.pebble.domain.BlogEntry.getExcerpt()
  }

  /**
   * Sets the excerpt of this blog entry.
   *
   * @param newExcerpt    the excerpt as a String
   */
  public void setExcerpt(String newExcerpt) {
    if (newExcerpt != null) {
    //#blogentry.java:283: method: void net.sourceforge.pebble.domain.BlogEntry.setExcerpt(String)
    //#input(void setExcerpt(String)): newExcerpt
    //#input(void setExcerpt(String)): this
    //#input(void setExcerpt(String)): this.excerpt
    //#input(void setExcerpt(String)): this.propertyChangeSupport
    //#output(void setExcerpt(String)): this.excerpt
    //#pre[2] (void setExcerpt(String)): init'ed(this.excerpt)
    //#pre[4] (void setExcerpt(String)): this.propertyChangeSupport != null
    //#post(void setExcerpt(String)): init'ed(this.excerpt)
    //#test_vector(void setExcerpt(String)): newExcerpt: Addr_Set{null}, Inverse{null}
      newExcerpt = newExcerpt.trim();
    }
    propertyChangeSupport.firePropertyChange(EXCERPT_PROPERTY, excerpt, newExcerpt);
    this.excerpt = newExcerpt;
  }
    //#blogentry.java:288: end of method: void net.sourceforge.pebble.domain.BlogEntry.setExcerpt(String)

  /**
   * Gets the date that this blog entry was last updated.
   *
   * @return  a Date instance representing the time of the last comment/TrackBack
   */
  public Date getLastModified() {
    Date date = getDate();
    //#blogentry.java:296: method: Date net.sourceforge.pebble.domain.BlogEntry.getLastModified()
    //#input(Date getLastModified()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(Date getLastModified()): __Descendant_Table[others]
    //#input(Date getLastModified()): __Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Date getLastModified()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(Date getLastModified()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(Date getLastModified()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Date getLastModified()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(Date getLastModified()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(Date getLastModified()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Date getLastModified()): this
    //#input(Date getLastModified()): this.__Tag
    //#input(Date getLastModified()): this.comments
    //#input(Date getLastModified()): this.date
    //#input(Date getLastModified()): this.trackBacks
    //#output(Date getLastModified()): return_value
    //#pre[2] (Date getLastModified()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (Date getLastModified()): this.comments != null
    //#pre[4] (Date getLastModified()): init'ed(this.date)
    //#pre[5] (Date getLastModified()): this.trackBacks != null
    //#presumption(Date getLastModified()): comment.date@300 != null
    //#presumption(Date getLastModified()): java.util.Iterator:next(...).__Tag@300 == net/sourceforge/pebble/domain/Comment
    //#presumption(Date getLastModified()): java.util.Iterator:next(...).__Tag@308 == net/sourceforge/pebble/domain/TrackBack
    //#presumption(Date getLastModified()): java.util.Iterator:next(...)@300 != null
    //#presumption(Date getLastModified()): java.util.Iterator:next(...)@308 != null
    //#presumption(Date getLastModified()): trackBack.date@308 != null
    //#post(Date getLastModified()): init'ed(return_value)
    //#test_vector(Date getLastModified()): java.util.Date:after(...)@301: {0}, {1}
    //#test_vector(Date getLastModified()): java.util.Date:after(...)@309: {0}, {1}
    //#test_vector(Date getLastModified()): java.util.Iterator:hasNext(...)@299: {1}, {0}
    //#test_vector(Date getLastModified()): java.util.Iterator:hasNext(...)@307: {1}, {0}

    Iterator it = comments.iterator();
    while (it.hasNext()) {
      Comment comment = (Comment)it.next();
      if (comment.getDate().after(date)) {
        date = comment.getDate();
      }
    }

    it = trackBacks.iterator();
    while (it.hasNext()) {
      TrackBack trackBack = (TrackBack)it.next();
      if (trackBack.getDate().after(date)) {
        date = trackBack.getDate();
      }
    }

    return date;
    //#blogentry.java:314: end of method: Date net.sourceforge.pebble.domain.BlogEntry.getLastModified()
  }

  /**
   * Sets the date that this blog entry was created.
   *
   * @param newDate a java.util.Date instance
   */
  public void setDate(Date newDate) {
    super.setDate(newDate);
    //#blogentry.java:323: method: void net.sourceforge.pebble.domain.BlogEntry.setDate(Date)
    //#input(void setDate(Date)): newDate
    //#input(void setDate(Date)): this
    //#input(void setDate(Date)): this.date
    //#input(void setDate(Date)): this.propertyChangeSupport
    //#output(void setDate(Date)): this.date
    //#output(void setDate(Date)): this.id
    //#output(void setDate(Date)): this.permalink
    //#pre[1] (void setDate(Date)): newDate != null
    //#pre[2] (void setDate(Date)): init'ed(this.date)
    //#pre[4] (void setDate(Date)): this.propertyChangeSupport != null
    //#post(void setDate(Date)): this.date == newDate
    //#post(void setDate(Date)): this.date != null
    //#post(void setDate(Date)): this.id != null
    //#post(void setDate(Date)): this.permalink == null
    //#unanalyzed(void setDate(Date)): Effects-of-calling:java.beans.PropertyChangeSupport:firePropertyChange
    //#unanalyzed(void setDate(Date)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void setDate(Date)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void setDate(Date)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void setDate(Date)): Effects-of-calling:java.lang.StringBuilder:toString

    // and cause the permalink to be re-generated
    this.permalink = null;
  }
    //#blogentry.java:327: end of method: void net.sourceforge.pebble.domain.BlogEntry.setDate(Date)

  /**
   * Gets a permalink for this blog entry that is local to the blog. In other
   * words, it doesn't take into account the original permalink for
   * aggregated content.
   *
   * @return an absolute URL as a String
   */
  public String getLocalPermalink() {
    if (this.permalink == null) {
    //#blogentry.java:337: method: String net.sourceforge.pebble.domain.BlogEntry.getLocalPermalink()
    //#input(String getLocalPermalink()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(String getLocalPermalink()): __Descendant_Table[others]
    //#input(String getLocalPermalink()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(String getLocalPermalink()): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(String getLocalPermalink()): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(String getLocalPermalink()): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(String getLocalPermalink()): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(String getLocalPermalink()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(String getLocalPermalink()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(String getLocalPermalink()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.getPermalink(Lnet/sourceforge/pebble/domain/BlogEntry;)Ljava/lang/String;
    //#input(String getLocalPermalink()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getLocalPermalink()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(String getLocalPermalink()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(String getLocalPermalink()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#input(String getLocalPermalink()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(String getLocalPermalink()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(String getLocalPermalink()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(String getLocalPermalink()): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(String getLocalPermalink()): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(String getLocalPermalink()): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(String getLocalPermalink()): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(String getLocalPermalink()): this
    //#input(String getLocalPermalink()): this.__Tag
    //#input(String getLocalPermalink()): this.blog
    //#input(String getLocalPermalink()): this.blog.__Tag
    //#input(String getLocalPermalink()): this.blog.id
    //#input(String getLocalPermalink()): this.blog.permalinkProvider
    //#input(String getLocalPermalink()): this.blog.permalinkProvider.__Tag
    //#input(String getLocalPermalink()): this.permalink
    //#output(String getLocalPermalink()): return_value
    //#output(String getLocalPermalink()): this.permalink
    //#pre[4] (String getLocalPermalink()): init'ed(this.permalink)
    //#pre[1] (String getLocalPermalink()): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[2] (String getLocalPermalink()): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[3] (String getLocalPermalink()): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[6] (String getLocalPermalink()): (soft) this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[7] (String getLocalPermalink()): (soft) this.blog != null
    //#pre[8] (String getLocalPermalink()): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[9] (String getLocalPermalink()): (soft) init'ed(this.blog.id)
    //#pre[10] (String getLocalPermalink()): (soft) this.blog.permalinkProvider != null
    //#pre[11] (String getLocalPermalink()): (soft) this.blog.permalinkProvider.__Tag == net/sourceforge/pebble/api/permalink/PermalinkProvider
    //#post(String getLocalPermalink()): init'ed(return_value)
    //#post(String getLocalPermalink()): this.permalink == return_value
    //#unanalyzed(String getLocalPermalink()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getLocalPermalink()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getLocalPermalink()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getLocalPermalink()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(String getLocalPermalink()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(String getLocalPermalink()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(String getLocalPermalink()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(String getLocalPermalink()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String getLocalPermalink()): Effects-of-calling:java.lang.String:substring
    //#test_vector(String getLocalPermalink()): this.permalink: Inverse{null}, Addr_Set{null}
    //#test_vector(String getLocalPermalink()): getPermalink(...)@338: Addr_Set{null}, Inverse{null}
    //#test_vector(String getLocalPermalink()): java.lang.String:length(...)@339: {0}, {1..4_294_967_295}
      String s = getBlog().getPermalinkProvider().getPermalink(this);
    //#blogentry.java:338: Warning: method not available
    //#    -- call on String getPermalink(BlogEntry)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: String getLocalPermalink()
    //#    unanalyzed callee: String getPermalink(BlogEntry)
      if (s != null && s.length() > 0) {
        this.permalink = getBlog().getUrl() + s.substring(1);
      }
    }

    return permalink;
    //#blogentry.java:344: end of method: String net.sourceforge.pebble.domain.BlogEntry.getLocalPermalink()
  }

  /**
   * Gets the attachment associated with this blog entry.
   *
   * @return  an Attachment instance, or null if one doesn't exist
   */
  public Attachment getAttachment() {
    return attachment;
    //#blogentry.java:353: method: Attachment net.sourceforge.pebble.domain.BlogEntry.getAttachment()
    //#input(Attachment getAttachment()): this
    //#input(Attachment getAttachment()): this.attachment
    //#output(Attachment getAttachment()): return_value
    //#pre[2] (Attachment getAttachment()): init'ed(this.attachment)
    //#post(Attachment getAttachment()): return_value == this.attachment
    //#post(Attachment getAttachment()): init'ed(return_value)
    //#blogentry.java:353: end of method: Attachment net.sourceforge.pebble.domain.BlogEntry.getAttachment()
  }

  /**
   * Sets the attachment associated with thie blog entry.
   *
   * @param newAttachment    an Attachment instance
   */
  public void setAttachment(Attachment newAttachment) {
    propertyChangeSupport.firePropertyChange(ATTACHMENT_PROPERTY, attachment, newAttachment);
    //#blogentry.java:362: method: void net.sourceforge.pebble.domain.BlogEntry.setAttachment(Attachment)
    //#input(void setAttachment(Attachment)): newAttachment
    //#input(void setAttachment(Attachment)): this
    //#input(void setAttachment(Attachment)): this.attachment
    //#input(void setAttachment(Attachment)): this.propertyChangeSupport
    //#output(void setAttachment(Attachment)): this.attachment
    //#pre[2] (void setAttachment(Attachment)): init'ed(this.attachment)
    //#pre[4] (void setAttachment(Attachment)): this.propertyChangeSupport != null
    //#post(void setAttachment(Attachment)): this.attachment == newAttachment
    //#post(void setAttachment(Attachment)): init'ed(this.attachment)
    this.attachment = newAttachment;
  }
    //#blogentry.java:364: end of method: void net.sourceforge.pebble.domain.BlogEntry.setAttachment(Attachment)

  /**
   * Determines whether comments are enabled for this blog entry.
   *
   * @return true if comments are enabled, false otherwise
   */
  public boolean isCommentsEnabled() {
    return this.commentsEnabled;
    //#blogentry.java:372: method: bool net.sourceforge.pebble.domain.BlogEntry.isCommentsEnabled()
    //#input(bool isCommentsEnabled()): this
    //#input(bool isCommentsEnabled()): this.commentsEnabled
    //#output(bool isCommentsEnabled()): return_value
    //#pre[2] (bool isCommentsEnabled()): init'ed(this.commentsEnabled)
    //#post(bool isCommentsEnabled()): return_value == this.commentsEnabled
    //#post(bool isCommentsEnabled()): init'ed(return_value)
    //#blogentry.java:372: end of method: bool net.sourceforge.pebble.domain.BlogEntry.isCommentsEnabled()
  }

  /**
   * Sets whether comments are enabled for this blog entry.
   *
   * @param newCommentsEnabled true if comments should be enabled,
   *                        false otherwise
   */
  public void setCommentsEnabled(boolean newCommentsEnabled) {
    propertyChangeSupport.firePropertyChange(COMMENTS_ENABLED_PROPERTY, commentsEnabled, newCommentsEnabled);
    //#blogentry.java:382: method: void net.sourceforge.pebble.domain.BlogEntry.setCommentsEnabled(bool)
    //#input(void setCommentsEnabled(bool)): newCommentsEnabled
    //#input(void setCommentsEnabled(bool)): this
    //#input(void setCommentsEnabled(bool)): this.commentsEnabled
    //#input(void setCommentsEnabled(bool)): this.propertyChangeSupport
    //#output(void setCommentsEnabled(bool)): this.commentsEnabled
    //#pre[2] (void setCommentsEnabled(bool)): init'ed(this.commentsEnabled)
    //#pre[4] (void setCommentsEnabled(bool)): this.propertyChangeSupport != null
    //#post(void setCommentsEnabled(bool)): this.commentsEnabled == newCommentsEnabled
    //#post(void setCommentsEnabled(bool)): init'ed(this.commentsEnabled)
    this.commentsEnabled = newCommentsEnabled;
  }
    //#blogentry.java:384: end of method: void net.sourceforge.pebble.domain.BlogEntry.setCommentsEnabled(bool)

  /**
   * Gets a link to the comments for this blog entry.
   *
   * @return an absolute URL as a String
   */
  public String getCommentsLink() {
    return getLocalPermalink() + "#comments";
    //#blogentry.java:392: method: String net.sourceforge.pebble.domain.BlogEntry.getCommentsLink()
    //#input(String getCommentsLink()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(String getCommentsLink()): __Descendant_Table[others]
    //#input(String getCommentsLink()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(String getCommentsLink()): __Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(String getCommentsLink()): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(String getCommentsLink()): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(String getCommentsLink()): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(String getCommentsLink()): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(String getCommentsLink()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(String getCommentsLink()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(String getCommentsLink()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.getPermalink(Lnet/sourceforge/pebble/domain/BlogEntry;)Ljava/lang/String;
    //#input(String getCommentsLink()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getCommentsLink()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(String getCommentsLink()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(String getCommentsLink()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#input(String getCommentsLink()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(String getCommentsLink()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(String getCommentsLink()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(String getCommentsLink()): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(String getCommentsLink()): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(String getCommentsLink()): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(String getCommentsLink()): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(String getCommentsLink()): this
    //#input(String getCommentsLink()): this.__Tag
    //#input(String getCommentsLink()): this.blog
    //#input(String getCommentsLink()): this.blog.__Tag
    //#input(String getCommentsLink()): this.blog.id
    //#input(String getCommentsLink()): this.blog.permalinkProvider
    //#input(String getCommentsLink()): this.blog.permalinkProvider.__Tag
    //#input(String getCommentsLink()): this.permalink
    //#output(String getCommentsLink()): return_value
    //#output(String getCommentsLink()): this.permalink
    //#pre[4] (String getCommentsLink()): init'ed(this.permalink)
    //#pre[6] (String getCommentsLink()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[1] (String getCommentsLink()): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[2] (String getCommentsLink()): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[3] (String getCommentsLink()): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[7] (String getCommentsLink()): (soft) this.blog != null
    //#pre[8] (String getCommentsLink()): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[9] (String getCommentsLink()): (soft) init'ed(this.blog.id)
    //#pre[10] (String getCommentsLink()): (soft) this.blog.permalinkProvider != null
    //#pre[11] (String getCommentsLink()): (soft) this.blog.permalinkProvider.__Tag == net/sourceforge/pebble/api/permalink/PermalinkProvider
    //#post(String getCommentsLink()): return_value != null
    //#post(String getCommentsLink()): init'ed(this.permalink)
    //#unanalyzed(String getCommentsLink()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getCommentsLink()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getCommentsLink()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getCommentsLink()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(String getCommentsLink()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(String getCommentsLink()): Effects-of-calling:getUrl
    //#unanalyzed(String getCommentsLink()): Effects-of-calling:getPermalinkProvider
    //#unanalyzed(String getCommentsLink()): Effects-of-calling:getPermalink
    //#unanalyzed(String getCommentsLink()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String getCommentsLink()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(String getCommentsLink()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(String getCommentsLink()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#blogentry.java:392: end of method: String net.sourceforge.pebble.domain.BlogEntry.getCommentsLink()
  }

  /**
   * Determines whether TrackBacks are enabled for this blog entry.
   *
   * @return true if TrackBacks are enabled, false otherwise
   */
  public boolean isTrackBacksEnabled() {
    return this.trackBacksEnabled;
    //#blogentry.java:401: method: bool net.sourceforge.pebble.domain.BlogEntry.isTrackBacksEnabled()
    //#input(bool isTrackBacksEnabled()): this
    //#input(bool isTrackBacksEnabled()): this.trackBacksEnabled
    //#output(bool isTrackBacksEnabled()): return_value
    //#pre[2] (bool isTrackBacksEnabled()): init'ed(this.trackBacksEnabled)
    //#post(bool isTrackBacksEnabled()): return_value == this.trackBacksEnabled
    //#post(bool isTrackBacksEnabled()): init'ed(return_value)
    //#blogentry.java:401: end of method: bool net.sourceforge.pebble.domain.BlogEntry.isTrackBacksEnabled()
  }

  /**
   * Sets whether TrackBacks are enabled for this blog entry.
   *
   * @param newTrackBacksEnabled true if TrackBacks should be enabled,
   *                          false otherwise
   */
  public void setTrackBacksEnabled(boolean newTrackBacksEnabled) {
    propertyChangeSupport.firePropertyChange(TRACKBACKS_ENABLED_PROPERTY, trackBacksEnabled, newTrackBacksEnabled);
    //#blogentry.java:411: method: void net.sourceforge.pebble.domain.BlogEntry.setTrackBacksEnabled(bool)
    //#input(void setTrackBacksEnabled(bool)): newTrackBacksEnabled
    //#input(void setTrackBacksEnabled(bool)): this
    //#input(void setTrackBacksEnabled(bool)): this.propertyChangeSupport
    //#input(void setTrackBacksEnabled(bool)): this.trackBacksEnabled
    //#output(void setTrackBacksEnabled(bool)): this.trackBacksEnabled
    //#pre[2] (void setTrackBacksEnabled(bool)): init'ed(this.trackBacksEnabled)
    //#pre[4] (void setTrackBacksEnabled(bool)): this.propertyChangeSupport != null
    //#post(void setTrackBacksEnabled(bool)): this.trackBacksEnabled == newTrackBacksEnabled
    //#post(void setTrackBacksEnabled(bool)): init'ed(this.trackBacksEnabled)
    this.trackBacksEnabled = newTrackBacksEnabled;
  }
    //#blogentry.java:413: end of method: void net.sourceforge.pebble.domain.BlogEntry.setTrackBacksEnabled(bool)

  /**
   * Gets a link to the trackbacks for this blog entry.
   *
   * @return an absolute URL as a String
   */
  public String getTrackBacksLink() {
    return getLocalPermalink() + "#trackbacks";
    //#blogentry.java:421: method: String net.sourceforge.pebble.domain.BlogEntry.getTrackBacksLink()
    //#input(String getTrackBacksLink()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(String getTrackBacksLink()): __Descendant_Table[others]
    //#input(String getTrackBacksLink()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(String getTrackBacksLink()): __Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.getPermalink(Lnet/sourceforge/pebble/domain/BlogEntry;)Ljava/lang/String;
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(String getTrackBacksLink()): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(String getTrackBacksLink()): this
    //#input(String getTrackBacksLink()): this.__Tag
    //#input(String getTrackBacksLink()): this.blog
    //#input(String getTrackBacksLink()): this.blog.__Tag
    //#input(String getTrackBacksLink()): this.blog.id
    //#input(String getTrackBacksLink()): this.blog.permalinkProvider
    //#input(String getTrackBacksLink()): this.blog.permalinkProvider.__Tag
    //#input(String getTrackBacksLink()): this.permalink
    //#output(String getTrackBacksLink()): return_value
    //#output(String getTrackBacksLink()): this.permalink
    //#pre[4] (String getTrackBacksLink()): init'ed(this.permalink)
    //#pre[6] (String getTrackBacksLink()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[1] (String getTrackBacksLink()): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[2] (String getTrackBacksLink()): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[3] (String getTrackBacksLink()): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[7] (String getTrackBacksLink()): (soft) this.blog != null
    //#pre[8] (String getTrackBacksLink()): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[9] (String getTrackBacksLink()): (soft) init'ed(this.blog.id)
    //#pre[10] (String getTrackBacksLink()): (soft) this.blog.permalinkProvider != null
    //#pre[11] (String getTrackBacksLink()): (soft) this.blog.permalinkProvider.__Tag == net/sourceforge/pebble/api/permalink/PermalinkProvider
    //#post(String getTrackBacksLink()): return_value != null
    //#post(String getTrackBacksLink()): init'ed(this.permalink)
    //#unanalyzed(String getTrackBacksLink()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getTrackBacksLink()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getTrackBacksLink()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getTrackBacksLink()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(String getTrackBacksLink()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(String getTrackBacksLink()): Effects-of-calling:getUrl
    //#unanalyzed(String getTrackBacksLink()): Effects-of-calling:getPermalinkProvider
    //#unanalyzed(String getTrackBacksLink()): Effects-of-calling:getPermalink
    //#unanalyzed(String getTrackBacksLink()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String getTrackBacksLink()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(String getTrackBacksLink()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(String getTrackBacksLink()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#blogentry.java:421: end of method: String net.sourceforge.pebble.domain.BlogEntry.getTrackBacksLink()
  }

  /**
   * Gets the link that blogs can send TrackBacks too.
    */
  public String getTrackBackLink() {
    StringBuffer link = new StringBuffer();
    //#blogentry.java:428: method: String net.sourceforge.pebble.domain.BlogEntry.getTrackBackLink()
    //#input(String getTrackBackLink()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(String getTrackBackLink()): __Descendant_Table[others]
    //#input(String getTrackBackLink()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(String getTrackBackLink()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(String getTrackBackLink()): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(String getTrackBackLink()): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(String getTrackBackLink()): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(String getTrackBackLink()): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(String getTrackBackLink()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getTrackBackLink()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(String getTrackBackLink()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(String getTrackBackLink()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(String getTrackBackLink()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(String getTrackBackLink()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(String getTrackBackLink()): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(String getTrackBackLink()): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(String getTrackBackLink()): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(String getTrackBackLink()): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(String getTrackBackLink()): this
    //#input(String getTrackBackLink()): this.__Tag
    //#input(String getTrackBackLink()): this.blog
    //#input(String getTrackBackLink()): this.blog.__Tag
    //#input(String getTrackBackLink()): this.blog.id
    //#input(String getTrackBackLink()): this.id
    //#output(String getTrackBackLink()): return_value
    //#pre[5] (String getTrackBackLink()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[6] (String getTrackBackLink()): this.blog != null
    //#pre[7] (String getTrackBackLink()): this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[9] (String getTrackBackLink()): init'ed(this.id)
    //#pre[1] (String getTrackBackLink()): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[2] (String getTrackBackLink()): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[3] (String getTrackBackLink()): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[8] (String getTrackBackLink()): (soft) init'ed(this.blog.id)
    //#presumption(String getTrackBackLink()): net.sourceforge.pebble.trackback.TrackBackTokenManager:getInstance(...)@433 != null
    //#post(String getTrackBackLink()): return_value != null
    //#unanalyzed(String getTrackBackLink()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getTrackBackLink()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getTrackBackLink()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getTrackBackLink()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(String getTrackBackLink()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(String getTrackBackLink()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(String getTrackBackLink()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(String getTrackBackLink()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String getTrackBackLink()): Effects-of-calling:java.lang.String:substring
    link.append(getBlog().getUrl());
    link.append("addTrackBack.action?entry=");
    link.append(getId());
    link.append("&token=");
    link.append(TrackBackTokenManager.getInstance().generateToken());
    //#blogentry.java:433: Warning: method not available
    //#    -- call on TrackBackTokenManager net.sourceforge.pebble.trackback.TrackBackTokenManager:getInstance()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: String getTrackBackLink()
    //#    unanalyzed callee: TrackBackTokenManager net.sourceforge.pebble.trackback.TrackBackTokenManager:getInstance()
    //#blogentry.java:433: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.trackback.TrackBackTokenManager:generateToken()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: String getTrackBackLink()
    //#    unanalyzed callee: String net.sourceforge.pebble.trackback.TrackBackTokenManager:generateToken()

    return link.toString();
    //#blogentry.java:435: end of method: String net.sourceforge.pebble.domain.BlogEntry.getTrackBackLink()
  }

  /**
   * Gets a list of all comments and TrackBacks.
   *
   * @return  a List of all Response instances
   */
  public List<Response> getResponses() {
    List<Response> responses = new ArrayList();
    //#blogentry.java:444: method: List net.sourceforge.pebble.domain.BlogEntry.getResponses()
    //#input(List getResponses()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(List getResponses()): __Descendant_Table[others]
    //#input(List getResponses()): __Dispatch_Table.getComments()Ljava/util/List;
    //#input(List getResponses()): __Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(List getResponses()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(List getResponses()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(List getResponses()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(List getResponses()): this
    //#input(List getResponses()): this.__Tag
    //#input(List getResponses()): this.comments
    //#input(List getResponses()): this.trackBacks
    //#output(List getResponses()): new ArrayList(getResponses#1) num objects
    //#output(List getResponses()): return_value
    //#new obj(List getResponses()): new ArrayList(getResponses#1)
    //#pre[2] (List getResponses()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (List getResponses()): this.comments != null
    //#pre[4] (List getResponses()): init'ed(this.trackBacks)
    //#post(List getResponses()): return_value == &new ArrayList(getResponses#1)
    //#post(List getResponses()): new ArrayList(getResponses#1) num objects == 1
    //#unanalyzed(List getResponses()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(List getResponses()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(List getResponses()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getResponses()): Effects-of-calling:java.util.List:add
    //#unanalyzed(List getResponses()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(List getResponses()): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(List getResponses()): Effects-of-calling:getComments
    responses.addAll(getComments());
    responses.addAll(getTrackBacks());
    Collections.sort(responses, new ResponseByDateComparator());
    return responses;
    //#blogentry.java:448: end of method: List net.sourceforge.pebble.domain.BlogEntry.getResponses()
  }

  /**
   * Gets a collection of all comments.
   *
   * @return a List of Comment instances
   */
  public List<Comment> getComments() {
    List<Comment> allComments = new ArrayList();
    //#blogentry.java:457: method: List net.sourceforge.pebble.domain.BlogEntry.getComments()
    //#input(List getComments()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(List getComments()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(List getComments()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(List getComments()): this
    //#input(List getComments()): this.comments
    //#output(List getComments()): new ArrayList(getComments#1) num objects
    //#output(List getComments()): return_value
    //#new obj(List getComments()): new ArrayList(getComments#1)
    //#pre[2] (List getComments()): this.comments != null
    //#presumption(List getComments()): java.util.Iterator:next(...).__Tag@460 == net/sourceforge/pebble/domain/Comment
    //#presumption(List getComments()): java.util.Iterator:next(...)@460 != null
    //#post(List getComments()): return_value == &new ArrayList(getComments#1)
    //#post(List getComments()): new ArrayList(getComments#1) num objects == 1
    //#unanalyzed(List getComments()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(List getComments()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(List getComments()): Effects-of-calling:java.util.List:add
    //#unanalyzed(List getComments()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getComments()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(List getComments()): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(List getComments()): Effects-of-calling:getComments
    //#test_vector(List getComments()): java.util.Iterator:hasNext(...)@459: {1}, {0}
    Iterator it = comments.iterator();
    while (it.hasNext()) {
      allComments.addAll(getComments((Comment)it.next()));
    }

    return allComments;
    //#blogentry.java:463: end of method: List net.sourceforge.pebble.domain.BlogEntry.getComments()
  }

  private List<Comment> getComments(Comment comment) {
    List<Comment> allComments = new ArrayList();
    //#blogentry.java:467: method: List net.sourceforge.pebble.domain.BlogEntry.getComments(Comment)
    //#input(List getComments(Comment)): comment
    //#input(List getComments(Comment)): comment.__Tag
    //#input(List getComments(Comment)): comment.comments
    //#input(List getComments(Comment)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(List getComments(Comment)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(List getComments(Comment)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(List getComments(Comment)): this
    //#output(List getComments(Comment)): new ArrayList(getComments#1) num objects
    //#output(List getComments(Comment)): return_value
    //#new obj(List getComments(Comment)): new ArrayList(getComments#1)
    //#pre[1] (List getComments(Comment)): comment != null
    //#pre[2] (List getComments(Comment)): comment.__Tag == net/sourceforge/pebble/domain/Comment
    //#pre[3] (List getComments(Comment)): init'ed(comment.comments)
    //#presumption(List getComments(Comment)): java.util.Iterator:next(...).__Tag@471 == net/sourceforge/pebble/domain/Comment
    //#presumption(List getComments(Comment)): java.util.Iterator:next(...)@471 != null
    //#post(List getComments(Comment)): return_value == &new ArrayList(getComments#1)
    //#post(List getComments(Comment)): new ArrayList(getComments#1) num objects == 1
    //#unanalyzed(List getComments(Comment)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(List getComments(Comment)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(List getComments(Comment)): Effects-of-calling:java.util.List:add
    //#unanalyzed(List getComments(Comment)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getComments(Comment)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(List getComments(Comment)): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(List getComments(Comment)): Effects-of-calling:getComments
    //#test_vector(List getComments(Comment)): java.util.Iterator:hasNext(...)@470: {1}, {0}
    allComments.add(comment);
    Iterator it = comment.getComments().iterator();
    while (it.hasNext()) {
      allComments.addAll(getComments((Comment)it.next()));
    }

    return allComments;
    //#blogentry.java:474: end of method: List net.sourceforge.pebble.domain.BlogEntry.getComments(Comment)
  }

  /**
   * Gets the number of comments that have been left for this blog entry.
   *
   * @return the number of comments as a int
   */
  public int getNumberOfComments() {
    return getComments().size();
    //#blogentry.java:483: method: int net.sourceforge.pebble.domain.BlogEntry.getNumberOfComments()
    //#input(int getNumberOfComments()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(int getNumberOfComments()): __Descendant_Table[others]
    //#input(int getNumberOfComments()): __Dispatch_Table.getComments()Ljava/util/List;
    //#input(int getNumberOfComments()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(int getNumberOfComments()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(int getNumberOfComments()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(int getNumberOfComments()): this
    //#input(int getNumberOfComments()): this.__Tag
    //#input(int getNumberOfComments()): this.comments
    //#output(int getNumberOfComments()): return_value
    //#pre[2] (int getNumberOfComments()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (int getNumberOfComments()): this.comments != null
    //#post(int getNumberOfComments()): init'ed(return_value)
    //#unanalyzed(int getNumberOfComments()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(int getNumberOfComments()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(int getNumberOfComments()): Effects-of-calling:java.util.List:add
    //#unanalyzed(int getNumberOfComments()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(int getNumberOfComments()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(int getNumberOfComments()): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(int getNumberOfComments()): Effects-of-calling:getComments
    //#blogentry.java:483: end of method: int net.sourceforge.pebble.domain.BlogEntry.getNumberOfComments()
  }

  /**
   * Gets a collection of all trackbacks.
   *
   * @return a List of TrackBack instances
   */
  public List<TrackBack> getTrackBacks() {
    return new ArrayList<TrackBack>(trackBacks);
    //#blogentry.java:492: method: List net.sourceforge.pebble.domain.BlogEntry.getTrackBacks()
    //#input(List getTrackBacks()): this
    //#input(List getTrackBacks()): this.trackBacks
    //#output(List getTrackBacks()): new ArrayList(getTrackBacks#1) num objects
    //#output(List getTrackBacks()): return_value
    //#new obj(List getTrackBacks()): new ArrayList(getTrackBacks#1)
    //#pre[2] (List getTrackBacks()): init'ed(this.trackBacks)
    //#post(List getTrackBacks()): return_value == &new ArrayList(getTrackBacks#1)
    //#post(List getTrackBacks()): new ArrayList(getTrackBacks#1) num objects == 1
    //#blogentry.java:492: end of method: List net.sourceforge.pebble.domain.BlogEntry.getTrackBacks()
  }

  /**
   * Gets the number of trackbacks that have been left for this blog entry.
   *
   * @return the number of trackbacks as a int
   */
  public int getNumberOfTrackBacks() {
    return trackBacks.size();
    //#blogentry.java:501: method: int net.sourceforge.pebble.domain.BlogEntry.getNumberOfTrackBacks()
    //#input(int getNumberOfTrackBacks()): this
    //#input(int getNumberOfTrackBacks()): this.trackBacks
    //#output(int getNumberOfTrackBacks()): return_value
    //#pre[2] (int getNumberOfTrackBacks()): this.trackBacks != null
    //#post(int getNumberOfTrackBacks()): init'ed(return_value)
    //#blogentry.java:501: end of method: int net.sourceforge.pebble.domain.BlogEntry.getNumberOfTrackBacks()
  }

  /**
   * Gets the number of responses that have been left for this blog entry.
   *
   * @return the number of responses as a int
   */
  public int getNumberOfResponses() {
    return getResponses().size();
    //#blogentry.java:510: method: int net.sourceforge.pebble.domain.BlogEntry.getNumberOfResponses()
    //#input(int getNumberOfResponses()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(int getNumberOfResponses()): __Descendant_Table[others]
    //#input(int getNumberOfResponses()): __Dispatch_Table.getComments()Ljava/util/List;
    //#input(int getNumberOfResponses()): __Dispatch_Table.getResponses()Ljava/util/List;
    //#input(int getNumberOfResponses()): __Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(int getNumberOfResponses()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(int getNumberOfResponses()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(int getNumberOfResponses()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(int getNumberOfResponses()): this
    //#input(int getNumberOfResponses()): this.__Tag
    //#input(int getNumberOfResponses()): this.comments
    //#input(int getNumberOfResponses()): this.trackBacks
    //#output(int getNumberOfResponses()): return_value
    //#pre[2] (int getNumberOfResponses()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (int getNumberOfResponses()): this.comments != null
    //#pre[4] (int getNumberOfResponses()): init'ed(this.trackBacks)
    //#post(int getNumberOfResponses()): init'ed(return_value)
    //#unanalyzed(int getNumberOfResponses()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(int getNumberOfResponses()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(int getNumberOfResponses()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(int getNumberOfResponses()): Effects-of-calling:java.util.List:add
    //#unanalyzed(int getNumberOfResponses()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(int getNumberOfResponses()): Effects-of-calling:getComments
    //#unanalyzed(int getNumberOfResponses()): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(int getNumberOfResponses()): Effects-of-calling:java.util.Collections:sort
    //#blogentry.java:510: end of method: int net.sourceforge.pebble.domain.BlogEntry.getNumberOfResponses()
  }

  /**
   * Creates a new comment for this blog entry. This method doesn't actually
   * <b>add</b> the comment too.
   *
   * @param title     the title of the comment
   * @param body      the body of the comment
   * @param author    the author of the comment
   * @param email     the author's e-mail address
   * @param website   the author's website
   * @param ipAddress the IP address of the author
   * @param date      the date that the comment was created
   * @param state     the state of the comment
   * @return a new Comment instance with the specified properties
   */
  public Comment createComment(String title, String body, String author, String email, String website, String ipAddress, Date date, State state) {
    return new Comment(title, body, author, email, website, ipAddress, date, state, this);
    //#blogentry.java:528: method: Comment net.sourceforge.pebble.domain.BlogEntry.createComment(String, String, String, String, String, String, Date, State)
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): author
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): body
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): date
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): email
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): ipAddress
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).__Tag
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#2).__Tag
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.areEventsEnabled()Z
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isApproved()Z
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isRejected()Z
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setAuthor(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setBody(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setEmail(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setWebsite(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Descendant_Table[others]
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/State.APPROVED
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/State.REJECTED
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.areEventsEnabled()Z
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isApproved()Z
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isRejected()Z
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): state
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): state.__Tag
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): this
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): title
    //#input(Comment createComment(String, String, String, String, String, String, Date, State)): website
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): new ArrayList(Comment#1) num objects
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): new ArrayList(Content#1) num objects
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): new ArrayList(Content#3) num objects
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): new Comment(createComment#1) num objects
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.__Tag
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.authenticated
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.author
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.blogEntry
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.body
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.comments
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.date
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.email
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.events
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.eventsEnabled
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.ipAddress
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.propertyChangeEvents
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.propertyChangeSupport
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.spamScore
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.state
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.title
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.website
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): new PropertyChangeSupport(Content#2) num objects
    //#output(Comment createComment(String, String, String, String, String, String, Date, State)): return_value
    //#new obj(Comment createComment(String, String, String, String, String, String, Date, State)): new ArrayList(Comment#1)
    //#new obj(Comment createComment(String, String, String, String, String, String, Date, State)): new ArrayList(Content#1)
    //#new obj(Comment createComment(String, String, String, String, String, String, Date, State)): new ArrayList(Content#3)
    //#new obj(Comment createComment(String, String, String, String, String, String, Date, State)): new Comment(createComment#1)
    //#new obj(Comment createComment(String, String, String, String, String, String, Date, State)): new PropertyChangeSupport(Content#2)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): return_value == &new Comment(createComment#1)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): new ArrayList(Comment#1) num objects == 1
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): new ArrayList(Content#1) num objects == 1
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): new ArrayList(Content#3) num objects == 1
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): new Comment(createComment#1) num objects == 1
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): new PropertyChangeSupport(Content#2) num objects == 1
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.__Tag == net/sourceforge/pebble/domain/Comment
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): init'ed(return_value.authenticated)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.author == One-of{&"Anonymous", author}
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.author != null
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.blogEntry == this
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.blogEntry != null
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.body == One-of{null, body}
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): init'ed(return_value.body)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.comments == &new ArrayList(Comment#1)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): init'ed(return_value.date)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): init'ed(return_value.email)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.events == &new ArrayList(Content#1)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): init'ed(return_value.eventsEnabled)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.ipAddress == One-of{null, ipAddress}
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): init'ed(return_value.ipAddress)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.propertyChangeEvents == &new ArrayList(Content#3)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): return_value.propertyChangeSupport == &new PropertyChangeSupport(Content#2)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): init'ed(return_value.spamScore)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): possibly_updated(return_value.state)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): possibly_updated(return_value.title)
    //#post(Comment createComment(String, String, String, String, String, String, Date, State)): init'ed(return_value.website)
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:getState
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:areEventsEnabled
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:isApproved
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.api.event.PebbleEvent
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:isRejected
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.domain.Content
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:transformHTML
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:java.util.Date
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getBlog
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:setState
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:getBlogEntry
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:java.util.EventObject
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:addEvent
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getTitle
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.domain.Response
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:filterHTML
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:java.beans.PropertyChangeSupport
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:java.beans.PropertyChangeSupport:addPropertyChangeListener
    //#unanalyzed(Comment createComment(String, String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.domain.Response:setState
    //#blogentry.java:528: end of method: Comment net.sourceforge.pebble.domain.BlogEntry.createComment(String, String, String, String, String, String, Date, State)
  }

  /**
   * Creates a new comment for this blog entry, with a creation date of now.
   * This method doesn't actually <b>add</b> the comment too.
   *
   * @param title   the title of the comment
   * @param body    the body of the comment
   * @param author  the author of the comment
   * @param email   the author's e-mail address
   * @param website the author's website
   * @param ipAddress the IP address of the author
   * @return a new Comment instance with the specified properties
   */
  public Comment createComment(String title, String body, String author, String email, String website, String ipAddress) {
    Calendar cal = getBlog().getCalendar();
    //#blogentry.java:544: method: Comment net.sourceforge.pebble.domain.BlogEntry.createComment(String, String, String, String, String, String)
    //#blogentry.java:544: Warning: method not available
    //#    -- call on Calendar net.sourceforge.pebble.domain.Blog:getCalendar()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: Comment createComment(String, String, String, String, String, String)
    //#    unanalyzed callee: Calendar net.sourceforge.pebble.domain.Blog:getCalendar()
    //#input(Comment createComment(String, String, String, String, String, String)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(Comment createComment(String, String, String, String, String, String)): __Descendant_Table[others]
    //#input(Comment createComment(String, String, String, String, String, String)): __Dispatch_Table.createComment(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Date;Lnet/sourceforge/pebble/domain/State;)Lnet/sourceforge/pebble/domain/Comment;
    //#input(Comment createComment(String, String, String, String, String, String)): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Comment createComment(String, String, String, String, String, String)): author
    //#input(Comment createComment(String, String, String, String, String, String)): body
    //#input(Comment createComment(String, String, String, String, String, String)): email
    //#input(Comment createComment(String, String, String, String, String, String)): ipAddress
    //#input(Comment createComment(String, String, String, String, String, String)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).__Tag
    //#input(Comment createComment(String, String, String, String, String, String)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#2).__Tag
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.areEventsEnabled()Z
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isApproved()Z
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isRejected()Z
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setAuthor(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setBody(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setEmail(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setWebsite(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Descendant_Table[others]
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/State.APPROVED
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/State.REJECTED
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.areEventsEnabled()Z
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isApproved()Z
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isRejected()Z
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(Comment createComment(String, String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(Comment createComment(String, String, String, String, String, String)): this
    //#input(Comment createComment(String, String, String, String, String, String)): this.__Tag
    //#input(Comment createComment(String, String, String, String, String, String)): this.blog
    //#input(Comment createComment(String, String, String, String, String, String)): title
    //#input(Comment createComment(String, String, String, String, String, String)): website
    //#output(Comment createComment(String, String, String, String, String, String)): new ArrayList(Comment#1) num objects
    //#output(Comment createComment(String, String, String, String, String, String)): new ArrayList(Content#1) num objects
    //#output(Comment createComment(String, String, String, String, String, String)): new ArrayList(Content#3) num objects
    //#output(Comment createComment(String, String, String, String, String, String)): new Comment(createComment#1*) num objects
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.__Tag
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.authenticated
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.author
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.blogEntry
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.body
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.comments
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.date
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.email
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.events
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.eventsEnabled
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.ipAddress
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.propertyChangeEvents
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.propertyChangeSupport
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.spamScore
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.state
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.title
    //#output(Comment createComment(String, String, String, String, String, String)): return_value.website
    //#output(Comment createComment(String, String, String, String, String, String)): new PropertyChangeSupport(Content#2) num objects
    //#output(Comment createComment(String, String, String, String, String, String)): return_value
    //#new obj(Comment createComment(String, String, String, String, String, String)): new ArrayList(Comment#1)
    //#new obj(Comment createComment(String, String, String, String, String, String)): new ArrayList(Content#1)
    //#new obj(Comment createComment(String, String, String, String, String, String)): new ArrayList(Content#3)
    //#new obj(Comment createComment(String, String, String, String, String, String)): new Comment(createComment#1*)
    //#new obj(Comment createComment(String, String, String, String, String, String)): new PropertyChangeSupport(Content#2)
    //#pre[8] (Comment createComment(String, String, String, String, String, String)): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[9] (Comment createComment(String, String, String, String, String, String)): this.blog != null
    //#presumption(Comment createComment(String, String, String, String, String, String)): net.sourceforge.pebble.domain.Blog:getCalendar(...)@544 != null
    //#post(Comment createComment(String, String, String, String, String, String)): return_value == &new Comment(createComment#1*)
    //#post(Comment createComment(String, String, String, String, String, String)): new ArrayList(Comment#1) num objects == 1
    //#post(Comment createComment(String, String, String, String, String, String)): new ArrayList(Content#1) num objects == 1
    //#post(Comment createComment(String, String, String, String, String, String)): new ArrayList(Content#3) num objects == 1
    //#post(Comment createComment(String, String, String, String, String, String)): new Comment(createComment#1*) num objects == 1
    //#post(Comment createComment(String, String, String, String, String, String)): new PropertyChangeSupport(Content#2) num objects == 1
    //#post(Comment createComment(String, String, String, String, String, String)): return_value.__Tag == net/sourceforge/pebble/domain/Comment
    //#post(Comment createComment(String, String, String, String, String, String)): init'ed(return_value.authenticated)
    //#post(Comment createComment(String, String, String, String, String, String)): return_value.author == One-of{&"Anonymous", author}
    //#post(Comment createComment(String, String, String, String, String, String)): return_value.author != null
    //#post(Comment createComment(String, String, String, String, String, String)): return_value.blogEntry == this
    //#post(Comment createComment(String, String, String, String, String, String)): return_value.blogEntry != null
    //#post(Comment createComment(String, String, String, String, String, String)): return_value.body == One-of{null, body}
    //#post(Comment createComment(String, String, String, String, String, String)): init'ed(return_value.body)
    //#post(Comment createComment(String, String, String, String, String, String)): return_value.comments == &new ArrayList(Comment#1)
    //#post(Comment createComment(String, String, String, String, String, String)): init'ed(return_value.date)
    //#post(Comment createComment(String, String, String, String, String, String)): init'ed(return_value.email)
    //#post(Comment createComment(String, String, String, String, String, String)): return_value.events == &new ArrayList(Content#1)
    //#post(Comment createComment(String, String, String, String, String, String)): init'ed(return_value.eventsEnabled)
    //#post(Comment createComment(String, String, String, String, String, String)): return_value.ipAddress == One-of{null, ipAddress}
    //#post(Comment createComment(String, String, String, String, String, String)): init'ed(return_value.ipAddress)
    //#post(Comment createComment(String, String, String, String, String, String)): return_value.propertyChangeEvents == &new ArrayList(Content#3)
    //#post(Comment createComment(String, String, String, String, String, String)): return_value.propertyChangeSupport == &new PropertyChangeSupport(Content#2)
    //#post(Comment createComment(String, String, String, String, String, String)): init'ed(return_value.spamScore)
    //#post(Comment createComment(String, String, String, String, String, String)): possibly_updated(return_value.state)
    //#post(Comment createComment(String, String, String, String, String, String)): possibly_updated(return_value.title)
    //#post(Comment createComment(String, String, String, String, String, String)): init'ed(return_value.website)
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:getState
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:areEventsEnabled
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:isApproved
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.api.event.PebbleEvent
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:isRejected
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.domain.Content
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:transformHTML
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:java.util.Date
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getBlog
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:setState
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:getBlogEntry
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:java.util.EventObject
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:addEvent
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getTitle
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.domain.Response
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:filterHTML
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:java.beans.PropertyChangeSupport
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:java.beans.PropertyChangeSupport:addPropertyChangeListener
    //#unanalyzed(Comment createComment(String, String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.domain.Response:setState
    return createComment(title, body, author, email, website, ipAddress, cal.getTime(), State.APPROVED);
    //#blogentry.java:545: end of method: Comment net.sourceforge.pebble.domain.BlogEntry.createComment(String, String, String, String, String, String)
  }

  /**
   * Adds the specified comment.
   *
   * @param comment a Comment instance
   */
  public synchronized void addComment(Comment comment) {
    if (comment == null) {
    //#blogentry.java:554: method: void net.sourceforge.pebble.domain.BlogEntry.addComment(Comment)
    //#input(void addComment(Comment)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void addComment(Comment)): __Descendant_Table[others]
    //#input(void addComment(Comment)): __Dispatch_Table.addComment(Lnet/sourceforge/pebble/domain/Comment;)V
    //#input(void addComment(Comment)): __Dispatch_Table.addEvent(Lnet/sourceforge/pebble/api/event/PebbleEvent;)V
    //#input(void addComment(Comment)): __Dispatch_Table.areEventsEnabled()Z
    //#input(void addComment(Comment)): __Dispatch_Table.getComment(J)Lnet/sourceforge/pebble/domain/Comment;
    //#input(void addComment(Comment)): __Dispatch_Table.getComments()Ljava/util/List;
    //#input(void addComment(Comment)): comment
    //#input(void addComment(Comment)): comment...__Tag
    //#input(void addComment(Comment)): comment...date
    //#input(void addComment(Comment)): comment.__Tag
    //#input(void addComment(Comment)): comment.blogEntry
    //#input(void addComment(Comment)): comment.date
    //#input(void addComment(Comment)): comment.parent
    //#input(void addComment(Comment)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void addComment(Comment)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void addComment(Comment)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.addComment(Lnet/sourceforge/pebble/domain/Comment;)V
    //#input(void addComment(Comment)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(void addComment(Comment)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(void addComment(Comment)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getId()J
    //#input(void addComment(Comment)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getParent()Lnet/sourceforge/pebble/domain/Comment;
    //#input(void addComment(Comment)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setBlogEntry(Lnet/sourceforge/pebble/domain/BlogEntry;)V
    //#input(void addComment(Comment)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(void addComment(Comment)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setEventsEnabled(Z)V
    //#input(void addComment(Comment)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setParent(Lnet/sourceforge/pebble/domain/Comment;)V
    //#input(void addComment(Comment)): this
    //#input(void addComment(Comment)): this.__Tag
    //#input(void addComment(Comment)): this.comments
    //#input(void addComment(Comment)): this.events
    //#input(void addComment(Comment)): this.eventsEnabled
    //#output(void addComment(Comment)): comment.blogEntry
    //#output(void addComment(Comment)): comment.date
    //#output(void addComment(Comment)): comment.eventsEnabled
    //#output(void addComment(Comment)): comment.parent
    //#pre[2] (void addComment(Comment)): (soft) comment...__Tag == net/sourceforge/pebble/domain/Comment
    //#pre[3] (void addComment(Comment)): (soft) comment...date != null
    //#pre[4] (void addComment(Comment)): (soft) comment.__Tag == net/sourceforge/pebble/domain/Comment
    //#pre[5] (void addComment(Comment)): (soft) comment.blogEntry != null
    //#pre[6] (void addComment(Comment)): (soft) comment.date != null
    //#pre[8] (void addComment(Comment)): (soft) init'ed(comment.parent)
    //#pre[10] (void addComment(Comment)): (soft) this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[11] (void addComment(Comment)): (soft) this.comments != null
    //#pre[12] (void addComment(Comment)): (soft) this.events != null
    //#pre[13] (void addComment(Comment)): (soft) init'ed(this.eventsEnabled)
    //#presumption(void addComment(Comment)): getParent(...).__Tag@558 == net/sourceforge/pebble/domain/Comment
    //#presumption(void addComment(Comment)): getParent(...).date@558 != null
    //#presumption(void addComment(Comment)): java.util.Calendar:getTime(...)@187 != null
    //#presumption(void addComment(Comment)): java.util.Date:getTime(...)@562 <= 18_446_744_073_709_551_614
    //#presumption(void addComment(Comment)): parent.comments@568 != null
    //#post(void addComment(Comment)): (soft) comment.blogEntry != null
    //#post(void addComment(Comment)): possibly_updated(comment.date)
    //#post(void addComment(Comment)): possibly_updated(comment.eventsEnabled)
    //#post(void addComment(Comment)): init'ed(comment.parent)
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:java.util.Date
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getBlog
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:java.util.EventObject
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:getComment
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:addComment
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:getComments
    //#unanalyzed(void addComment(Comment)): Effects-of-calling:java.util.List:addAll
    //#test_vector(void addComment(Comment)): comment: Inverse{null}, Addr_Set{null}
    //#test_vector(void addComment(Comment)): comment.parent: Addr_Set{null}, Inverse{null}
    //#test_vector(void addComment(Comment)): this.eventsEnabled: {0}, {1}
      return;
    }

    Comment existingComment = getComment(comment.getId());
    if (existingComment != null && existingComment != comment) {
      // there is an existing comment with the same ID, but it's
      // not the same instance
      comment.setDate(new Date(comment.getDate().getTime() + 1));
    //#blogentry.java:562: ?precondition failure
    //#    net/sourceforge/pebble/domain/Response.getDate: init'ed(this.date)
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: void addComment(Comment)
    //#    basic block: bb_5
    //#    assertion: init'ed(comment.date)
    //#    callee: Date net/sourceforge/pebble/domain/Response.getDate()
    //#    callee assertion: init'ed(this.date)
    //#    callee file: response.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 172
    //#    VN: comment.date
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#blogentry.java:562: ?null dereference
    //#    getDate(...) != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: void addComment(Comment)
    //#    basic block: bb_5
    //#    assertion: getDate(...) != null
    //#    VN: comment.date
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
      addComment(comment);
    } else if (existingComment != null) {
      return;
    } else {
      if (comment.getParent() != null) {
        Comment parent = getComment(comment.getParent().getId());
    //#blogentry.java:568: ?use of default init
    //#    init'ed(getParent(...).__Tag)
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: void addComment(Comment)
    //#    basic block: bb_9
    //#    assertion: init'ed(getParent(...).__Tag)
    //#    VN: getParent(...).__Tag
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#blogentry.java:568: ?null dereference
    //#    net/sourceforge/pebble/domain/Comment.__Descendant_Table[getParent(...).__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: void addComment(Comment)
    //#    basic block: bb_9
    //#    assertion: net/sourceforge/pebble/domain/Comment.__Descendant_Table[getParent(...).__Tag] != null
    //#    VN: net/sourceforge/pebble/domain/Comment.__Descendant_Table[getParent(...).__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#blogentry.java:568: ?precondition failure
    //#    net/sourceforge/pebble/domain/Response.getId: this.date != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: void addComment(Comment)
    //#    basic block: bb_9
    //#    assertion: getParent(...).date != null
    //#    callee: long net/sourceforge/pebble/domain/Response.getId()
    //#    callee assertion: this.date != null
    //#    callee file: response.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 91
    //#    VN: getParent(...).date
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null, Invalid}
    //#    Attribs:  Ptr  null in Bad
        if (parent != null) {
          parent.addComment(comment);
    //#blogentry.java:570: ?use of default init
    //#    init'ed(parent.__Tag)
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: void addComment(Comment)
    //#    basic block: bb_10
    //#    assertion: init'ed(parent.__Tag)
    //#    VN: java.util.Iterator:next(...)@673.__Tag
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#blogentry.java:570: ?null dereference
    //#    net/sourceforge/pebble/domain/Comment.__Descendant_Table[parent.__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: void addComment(Comment)
    //#    basic block: bb_10
    //#    assertion: net/sourceforge/pebble/domain/Comment.__Descendant_Table[parent.__Tag] != null
    //#    VN: net/sourceforge/pebble/domain/Comment.__Descendant_Table[parent.__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
        } else {
          comments.add(comment);
        }
      } else {
        comments.add(comment);
      }
      comment.setBlogEntry(this);

      if (areEventsEnabled()) {
        addEvent(new CommentEvent(comment, CommentEvent.COMMENT_ADDED));
        comment.setEventsEnabled(true);
      }
    }
  }
    //#blogentry.java:584: end of method: void net.sourceforge.pebble.domain.BlogEntry.addComment(Comment)

  /**
   * Creates a new trackback for this blog entry. This method doesn't actually
   * <b>add</b> the trackback too.
   *
   * @param title    the title of the entry
   * @param excerpt  the excerpt of the entry
   * @param url      the url (permalink) of the entry
   * @param blogName the name of the blog
   * @param ipAddress   the IP address of the author
   * @param date     the date the trackback was received
   * @return a new TrackBack instance with the specified properties
   */
  public TrackBack createTrackBack(String title, String excerpt, String url, String blogName, String ipAddress, Date date, State state) {
    return new TrackBack(title, excerpt, url, blogName, ipAddress, date, state, this);
    //#blogentry.java:599: method: TrackBack net.sourceforge.pebble.domain.BlogEntry.createTrackBack(String, String, String, String, String, Date, State)
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): blogName
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): date
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): excerpt
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): ipAddress
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).__Tag
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#2).__Tag
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.areEventsEnabled()Z
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isApproved()Z
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isRejected()Z
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Descendant_Table[others]
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/State.APPROVED
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/State.REJECTED
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.areEventsEnabled()Z
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isApproved()Z
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isRejected()Z
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setBlogName(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setExcerpt(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setUrl(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): state
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): state.__Tag
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): this
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): title
    //#input(TrackBack createTrackBack(String, String, String, String, String, Date, State)): url
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): new ArrayList(Content#1) num objects
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): new ArrayList(Content#3) num objects
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): new PropertyChangeSupport(Content#2) num objects
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): new TrackBack(createTrackBack#1) num objects
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.__Tag
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.blogEntry
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.blogName
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.date
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.events
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.eventsEnabled
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.excerpt
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.ipAddress
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.propertyChangeEvents
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.propertyChangeSupport
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.spamScore
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.state
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.title
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.url
    //#output(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value
    //#new obj(TrackBack createTrackBack(String, String, String, String, String, Date, State)): new ArrayList(Content#1)
    //#new obj(TrackBack createTrackBack(String, String, String, String, String, Date, State)): new ArrayList(Content#3)
    //#new obj(TrackBack createTrackBack(String, String, String, String, String, Date, State)): new PropertyChangeSupport(Content#2)
    //#new obj(TrackBack createTrackBack(String, String, String, String, String, Date, State)): new TrackBack(createTrackBack#1)
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value == &new TrackBack(createTrackBack#1)
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): new ArrayList(Content#1) num objects == 1
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): new ArrayList(Content#3) num objects == 1
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): new PropertyChangeSupport(Content#2) num objects == 1
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): new TrackBack(createTrackBack#1) num objects == 1
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.__Tag == net/sourceforge/pebble/domain/TrackBack
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.blogEntry == this
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.blogEntry != null
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.blogName == One-of{blogName, &""}
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.blogName != null
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): init'ed(return_value.date)
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.events == &new ArrayList(Content#1)
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): init'ed(return_value.eventsEnabled)
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.excerpt == One-of{excerpt, &""}
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.excerpt != null
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.ipAddress == One-of{null, ipAddress}
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): init'ed(return_value.ipAddress)
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.propertyChangeEvents == &new ArrayList(Content#3)
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.propertyChangeSupport == &new PropertyChangeSupport(Content#2)
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): init'ed(return_value.spamScore)
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): possibly_updated(return_value.state)
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): possibly_updated(return_value.title)
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): return_value.url == url
    //#post(TrackBack createTrackBack(String, String, String, String, String, Date, State)): init'ed(return_value.url)
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:getState
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:areEventsEnabled
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:isApproved
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.api.event.PebbleEvent
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:isRejected
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.domain.Content
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:transformHTML
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:java.util.Date
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getBlog
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:setState
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:getBlogEntry
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:java.util.EventObject
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:addEvent
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getTitle
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:java.beans.PropertyChangeSupport
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:java.beans.PropertyChangeSupport:addPropertyChangeListener
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String, Date, State)): Effects-of-calling:net.sourceforge.pebble.domain.Response:setState
    //#blogentry.java:599: end of method: TrackBack net.sourceforge.pebble.domain.BlogEntry.createTrackBack(String, String, String, String, String, Date, State)
  }

  /**
   * Creates a new trackback for this blog entry with a date of now.
   * This method doesn't actually <b>add</b> the trackback too.
   *
   * @param title       the title of the entry
   * @param excerpt     the excerpt of the entry
   * @param url         the url (permalink) of the entry
   * @param blogName    the name of the blog
   * @param ipAddress   the IP address of the author
   * @return a new Comment instance with the specified properties
   */
  public TrackBack createTrackBack(String title, String excerpt, String url, String blogName, String ipAddress) {
    Calendar cal = getBlog().getCalendar();
    //#blogentry.java:614: method: TrackBack net.sourceforge.pebble.domain.BlogEntry.createTrackBack(String, String, String, String, String)
    //#blogentry.java:614: Warning: method not available
    //#    -- call on Calendar net.sourceforge.pebble.domain.Blog:getCalendar()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: TrackBack createTrackBack(String, String, String, String, String)
    //#    unanalyzed callee: Calendar net.sourceforge.pebble.domain.Blog:getCalendar()
    //#input(TrackBack createTrackBack(String, String, String, String, String)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(TrackBack createTrackBack(String, String, String, String, String)): __Descendant_Table[others]
    //#input(TrackBack createTrackBack(String, String, String, String, String)): __Dispatch_Table.createTrackBack(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Date;Lnet/sourceforge/pebble/domain/State;)Lnet/sourceforge/pebble/domain/TrackBack;
    //#input(TrackBack createTrackBack(String, String, String, String, String)): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(TrackBack createTrackBack(String, String, String, String, String)): blogName
    //#input(TrackBack createTrackBack(String, String, String, String, String)): excerpt
    //#input(TrackBack createTrackBack(String, String, String, String, String)): ipAddress
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).__Tag
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#2).__Tag
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.areEventsEnabled()Z
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isApproved()Z
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isRejected()Z
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Descendant_Table[others]
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/State.APPROVED
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/State.REJECTED
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.areEventsEnabled()Z
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isApproved()Z
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isRejected()Z
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setBlogName(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setExcerpt(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setUrl(Ljava/lang/String;)V
    //#input(TrackBack createTrackBack(String, String, String, String, String)): this
    //#input(TrackBack createTrackBack(String, String, String, String, String)): this.__Tag
    //#input(TrackBack createTrackBack(String, String, String, String, String)): this.blog
    //#input(TrackBack createTrackBack(String, String, String, String, String)): title
    //#input(TrackBack createTrackBack(String, String, String, String, String)): url
    //#output(TrackBack createTrackBack(String, String, String, String, String)): new ArrayList(Content#1) num objects
    //#output(TrackBack createTrackBack(String, String, String, String, String)): new ArrayList(Content#3) num objects
    //#output(TrackBack createTrackBack(String, String, String, String, String)): new PropertyChangeSupport(Content#2) num objects
    //#output(TrackBack createTrackBack(String, String, String, String, String)): new TrackBack(createTrackBack#1*) num objects
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value.__Tag
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value.blogEntry
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value.blogName
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value.date
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value.events
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value.eventsEnabled
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value.excerpt
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value.ipAddress
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value.propertyChangeEvents
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value.propertyChangeSupport
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value.spamScore
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value.state
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value.title
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value.url
    //#output(TrackBack createTrackBack(String, String, String, String, String)): return_value
    //#new obj(TrackBack createTrackBack(String, String, String, String, String)): new ArrayList(Content#1)
    //#new obj(TrackBack createTrackBack(String, String, String, String, String)): new ArrayList(Content#3)
    //#new obj(TrackBack createTrackBack(String, String, String, String, String)): new PropertyChangeSupport(Content#2)
    //#new obj(TrackBack createTrackBack(String, String, String, String, String)): new TrackBack(createTrackBack#1*)
    //#pre[7] (TrackBack createTrackBack(String, String, String, String, String)): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[8] (TrackBack createTrackBack(String, String, String, String, String)): this.blog != null
    //#presumption(TrackBack createTrackBack(String, String, String, String, String)): net.sourceforge.pebble.domain.Blog:getCalendar(...)@614 != null
    //#post(TrackBack createTrackBack(String, String, String, String, String)): return_value == &new TrackBack(createTrackBack#1*)
    //#post(TrackBack createTrackBack(String, String, String, String, String)): new ArrayList(Content#1) num objects == 1
    //#post(TrackBack createTrackBack(String, String, String, String, String)): new ArrayList(Content#3) num objects == 1
    //#post(TrackBack createTrackBack(String, String, String, String, String)): new PropertyChangeSupport(Content#2) num objects == 1
    //#post(TrackBack createTrackBack(String, String, String, String, String)): new TrackBack(createTrackBack#1*) num objects == 1
    //#post(TrackBack createTrackBack(String, String, String, String, String)): return_value.__Tag == net/sourceforge/pebble/domain/TrackBack
    //#post(TrackBack createTrackBack(String, String, String, String, String)): return_value.blogEntry == this
    //#post(TrackBack createTrackBack(String, String, String, String, String)): return_value.blogEntry != null
    //#post(TrackBack createTrackBack(String, String, String, String, String)): return_value.blogName == One-of{blogName, &""}
    //#post(TrackBack createTrackBack(String, String, String, String, String)): return_value.blogName != null
    //#post(TrackBack createTrackBack(String, String, String, String, String)): init'ed(return_value.date)
    //#post(TrackBack createTrackBack(String, String, String, String, String)): return_value.events == &new ArrayList(Content#1)
    //#post(TrackBack createTrackBack(String, String, String, String, String)): init'ed(return_value.eventsEnabled)
    //#post(TrackBack createTrackBack(String, String, String, String, String)): return_value.excerpt == One-of{excerpt, &""}
    //#post(TrackBack createTrackBack(String, String, String, String, String)): return_value.excerpt != null
    //#post(TrackBack createTrackBack(String, String, String, String, String)): return_value.ipAddress == One-of{null, ipAddress}
    //#post(TrackBack createTrackBack(String, String, String, String, String)): init'ed(return_value.ipAddress)
    //#post(TrackBack createTrackBack(String, String, String, String, String)): return_value.propertyChangeEvents == &new ArrayList(Content#3)
    //#post(TrackBack createTrackBack(String, String, String, String, String)): return_value.propertyChangeSupport == &new PropertyChangeSupport(Content#2)
    //#post(TrackBack createTrackBack(String, String, String, String, String)): init'ed(return_value.spamScore)
    //#post(TrackBack createTrackBack(String, String, String, String, String)): possibly_updated(return_value.state)
    //#post(TrackBack createTrackBack(String, String, String, String, String)): possibly_updated(return_value.title)
    //#post(TrackBack createTrackBack(String, String, String, String, String)): return_value.url == url
    //#post(TrackBack createTrackBack(String, String, String, String, String)): init'ed(return_value.url)
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:getState
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:areEventsEnabled
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:isApproved
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.api.event.PebbleEvent
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:isRejected
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.domain.Content
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:transformHTML
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:java.util.Date
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getBlog
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:setState
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:getBlogEntry
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:java.util.EventObject
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:addEvent
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getTitle
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:java.beans.PropertyChangeSupport
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:java.beans.PropertyChangeSupport:addPropertyChangeListener
    //#unanalyzed(TrackBack createTrackBack(String, String, String, String, String)): Effects-of-calling:net.sourceforge.pebble.domain.Response:setState
    return createTrackBack(title, excerpt, url, blogName, ipAddress, cal.getTime(), State.APPROVED);
    //#blogentry.java:615: end of method: TrackBack net.sourceforge.pebble.domain.BlogEntry.createTrackBack(String, String, String, String, String)
  }

  /**
   * Adds the specified trackback.
   *
   * @param trackBack a TrackBack instance
   */
  public synchronized void addTrackBack(TrackBack trackBack) {
    if (trackBack == null || trackBacks.contains(trackBack)) {
    //#blogentry.java:624: method: void net.sourceforge.pebble.domain.BlogEntry.addTrackBack(TrackBack)
    //#input(void addTrackBack(TrackBack)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void addTrackBack(TrackBack)): __Descendant_Table[others]
    //#input(void addTrackBack(TrackBack)): __Dispatch_Table.addEvent(Lnet/sourceforge/pebble/api/event/PebbleEvent;)V
    //#input(void addTrackBack(TrackBack)): __Dispatch_Table.areEventsEnabled()Z
    //#input(void addTrackBack(TrackBack)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void addTrackBack(TrackBack)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(void addTrackBack(TrackBack)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setEventsEnabled(Z)V
    //#input(void addTrackBack(TrackBack)): this
    //#input(void addTrackBack(TrackBack)): this.__Tag
    //#input(void addTrackBack(TrackBack)): this.events
    //#input(void addTrackBack(TrackBack)): this.eventsEnabled
    //#input(void addTrackBack(TrackBack)): this.trackBacks
    //#input(void addTrackBack(TrackBack)): trackBack
    //#input(void addTrackBack(TrackBack)): trackBack.__Tag
    //#output(void addTrackBack(TrackBack)): trackBack.eventsEnabled
    //#pre[3] (void addTrackBack(TrackBack)): (soft) this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[4] (void addTrackBack(TrackBack)): (soft) this.events != null
    //#pre[5] (void addTrackBack(TrackBack)): (soft) init'ed(this.eventsEnabled)
    //#pre[6] (void addTrackBack(TrackBack)): (soft) this.trackBacks != null
    //#pre[8] (void addTrackBack(TrackBack)): (soft) trackBack.__Tag == net/sourceforge/pebble/domain/TrackBack
    //#post(void addTrackBack(TrackBack)): possibly_updated(trackBack.eventsEnabled)
    //#unanalyzed(void addTrackBack(TrackBack)): Effects-of-calling:net.sourceforge.pebble.api.event.PebbleEvent
    //#unanalyzed(void addTrackBack(TrackBack)): Effects-of-calling:java.util.EventObject
    //#unanalyzed(void addTrackBack(TrackBack)): Effects-of-calling:java.util.List:add
    //#test_vector(void addTrackBack(TrackBack)): this.eventsEnabled: {0}, {1}
    //#test_vector(void addTrackBack(TrackBack)): trackBack: Addr_Set{null}, Inverse{null}
    //#test_vector(void addTrackBack(TrackBack)): java.util.List:contains(...)@624: {0}, {1}
      return;
    }

    trackBacks.add(trackBack);

    if (areEventsEnabled()) {
      addEvent(new TrackBackEvent(trackBack, TrackBackEvent.TRACKBACK_ADDED));
      trackBack.setEventsEnabled(true);
    }
  }
    //#blogentry.java:634: end of method: void net.sourceforge.pebble.domain.BlogEntry.addTrackBack(TrackBack)

  /**
   * Removes the specified comment.
   *
   * @param id    the id of the comment to be removed
   */
  public synchronized void removeComment(long id) {
    Comment comment = getComment(id);
    //#blogentry.java:642: method: void net.sourceforge.pebble.domain.BlogEntry.removeComment(long)
    //#input(void removeComment(long)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void removeComment(long)): __Descendant_Table[others]
    //#input(void removeComment(long)): __Dispatch_Table.addEvent(Lnet/sourceforge/pebble/api/event/PebbleEvent;)V
    //#input(void removeComment(long)): __Dispatch_Table.areEventsEnabled()Z
    //#input(void removeComment(long)): __Dispatch_Table.getComment(J)Lnet/sourceforge/pebble/domain/Comment;
    //#input(void removeComment(long)): __Dispatch_Table.getComments()Ljava/util/List;
    //#input(void removeComment(long)): id
    //#input(void removeComment(long)): log
    //#input(void removeComment(long)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void removeComment(long)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void removeComment(long)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.areEventsEnabled()Z
    //#input(void removeComment(long)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(void removeComment(long)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(void removeComment(long)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getId()J
    //#input(void removeComment(long)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getParent()Lnet/sourceforge/pebble/domain/Comment;
    //#input(void removeComment(long)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.removeComment(Lnet/sourceforge/pebble/domain/Comment;)V
    //#input(void removeComment(long)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setParent(Lnet/sourceforge/pebble/domain/Comment;)V
    //#input(void removeComment(long)): this
    //#input(void removeComment(long)): this.__Tag
    //#input(void removeComment(long)): this.comments
    //#input(void removeComment(long)): this.events
    //#input(void removeComment(long)): this.eventsEnabled
    //#pre[4] (void removeComment(long)): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[2] (void removeComment(long)): (soft) log != null
    //#pre[5] (void removeComment(long)): (soft) this.comments != null
    //#pre[6] (void removeComment(long)): (soft) this.events != null
    //#pre[7] (void removeComment(long)): (soft) init'ed(this.eventsEnabled)
    //#presumption(void removeComment(long)): child.blogEntry@646 != null
    //#presumption(void removeComment(long)): child.comments@646 != null
    //#presumption(void removeComment(long)): comment.__Tag@646 == net/sourceforge/pebble/domain/Comment
    //#presumption(void removeComment(long)): comment.blogEntry@646 != null
    //#presumption(void removeComment(long)): comment.blogEntry@646 != null
    //#presumption(void removeComment(long)): comment.blogEntry@647 != null
    //#presumption(void removeComment(long)): comment.comments@646 != null
    //#presumption(void removeComment(long)): comment.comments@646 != null
    //#presumption(void removeComment(long)): comment.comments@647 != null
    //#presumption(void removeComment(long)): getParent(...).__Tag@646 == net/sourceforge/pebble/domain/Comment
    //#presumption(void removeComment(long)): getParent(...).blogEntry@646 != null
    //#presumption(void removeComment(long)): getParent(...).blogEntry@647 != null
    //#presumption(void removeComment(long)): getParent(...).comments@646 != null
    //#presumption(void removeComment(long)): getParent(...).comments@647 != null
    //#presumption(void removeComment(long)): java.util.Iterator:next(...).__Tag@646 == net/sourceforge/pebble/domain/Comment
    //#unanalyzed(void removeComment(long)): Effects-of-calling:areEventsEnabled
    //#unanalyzed(void removeComment(long)): Effects-of-calling:getBlogEntry
    //#unanalyzed(void removeComment(long)): Effects-of-calling:java.util.EventObject
    //#unanalyzed(void removeComment(long)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:addEvent
    //#unanalyzed(void removeComment(long)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void removeComment(long)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void removeComment(long)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void removeComment(long)): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void removeComment(long)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void removeComment(long)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void removeComment(long)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void removeComment(long)): Effects-of-calling:removeComment
    //#unanalyzed(void removeComment(long)): Effects-of-calling:java.util.List:remove
    //#unanalyzed(void removeComment(long)): Effects-of-calling:getComments
    //#unanalyzed(void removeComment(long)): Effects-of-calling:java.util.List:addAll
    //#test_vector(void removeComment(long)): java.util.Iterator:hasNext(...)@646: {1}, {0}
    if (comment != null) {

      // get all children and delete them
      for (Comment child : comment.getComments()) {
    //#blogentry.java:646: ?use of default init
    //#    init'ed(comment.__Tag)
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: void removeComment(long)
    //#    basic block: bb_2
    //#    assertion: init'ed(comment.__Tag)
    //#    VN: java.util.Iterator:next(...)@673.__Tag
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#blogentry.java:646: ?null dereference
    //#    net/sourceforge/pebble/domain/Comment.__Descendant_Table[comment.__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: void removeComment(long)
    //#    basic block: bb_2
    //#    assertion: net/sourceforge/pebble/domain/Comment.__Descendant_Table[comment.__Tag] != null
    //#    VN: net/sourceforge/pebble/domain/Comment.__Descendant_Table[comment.__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
        comment.removeComment(child);
      }

      if (comment.getParent() != null) {
        comment.getParent().removeComment(comment);
      } else {
        comments.remove(comment);
      }

      if (areEventsEnabled()) {
        addEvent(new CommentEvent(comment, CommentEvent.COMMENT_REMOVED));
      }
    } else {
      log.warn("A comment with id=" + id + " could not be found - " +
    //#blogentry.java:660: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: void removeComment(long)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object)
        "perhaps it has been removed already.");
    }
  }
    //#blogentry.java:663: end of method: void net.sourceforge.pebble.domain.BlogEntry.removeComment(long)

  /**
   * Gets the specified comment.
   *
   * @param id    the id of the comment
   */
  public Comment getComment(long id) {
    Iterator it = getComments().iterator();
    //#blogentry.java:671: method: Comment net.sourceforge.pebble.domain.BlogEntry.getComment(long)
    //#input(Comment getComment(long)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(Comment getComment(long)): __Descendant_Table[others]
    //#input(Comment getComment(long)): __Dispatch_Table.getComments()Ljava/util/List;
    //#input(Comment getComment(long)): id
    //#input(Comment getComment(long)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(Comment getComment(long)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(Comment getComment(long)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(Comment getComment(long)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getId()J
    //#input(Comment getComment(long)): this
    //#input(Comment getComment(long)): this.__Tag
    //#input(Comment getComment(long)): this.comments
    //#output(Comment getComment(long)): return_value
    //#pre[3] (Comment getComment(long)): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[4] (Comment getComment(long)): this.comments != null
    //#presumption(Comment getComment(long)): comment.date@673 != null
    //#presumption(Comment getComment(long)): java.util.Iterator:next(...).__Tag@673 == net/sourceforge/pebble/domain/Comment
    //#presumption(Comment getComment(long)): java.util.Iterator:next(...)@673 != null
    //#post(Comment getComment(long)): init'ed(return_value)
    //#unanalyzed(Comment getComment(long)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Comment getComment(long)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Comment getComment(long)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(Comment getComment(long)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Comment getComment(long)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Comment getComment(long)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Comment getComment(long)): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(Comment getComment(long)): Effects-of-calling:getComments
    //#test_vector(Comment getComment(long)): java.util.Iterator:hasNext(...)@672: {1}, {0}
    while (it.hasNext()) {
      Comment comment = (Comment) it.next();
      if (comment.getId() == id) {
        return comment;
      }
    }

    return null;
    //#blogentry.java:679: end of method: Comment net.sourceforge.pebble.domain.BlogEntry.getComment(long)
  }

  /**
   * Gets the specified TrackBack.
   *
   * @param id    the id of the TrackBack
   */
  public TrackBack getTrackBack(long id) {
    Iterator it = getTrackBacks().iterator();
    //#blogentry.java:688: method: TrackBack net.sourceforge.pebble.domain.BlogEntry.getTrackBack(long)
    //#input(TrackBack getTrackBack(long)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(TrackBack getTrackBack(long)): __Descendant_Table[others]
    //#input(TrackBack getTrackBack(long)): __Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(TrackBack getTrackBack(long)): id
    //#input(TrackBack getTrackBack(long)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(TrackBack getTrackBack(long)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(TrackBack getTrackBack(long)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getId()J
    //#input(TrackBack getTrackBack(long)): this
    //#input(TrackBack getTrackBack(long)): this.__Tag
    //#input(TrackBack getTrackBack(long)): this.trackBacks
    //#output(TrackBack getTrackBack(long)): return_value
    //#pre[3] (TrackBack getTrackBack(long)): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[4] (TrackBack getTrackBack(long)): init'ed(this.trackBacks)
    //#presumption(TrackBack getTrackBack(long)): java.util.Iterator:next(...).__Tag@690 == net/sourceforge/pebble/domain/TrackBack
    //#presumption(TrackBack getTrackBack(long)): java.util.Iterator:next(...)@690 != null
    //#presumption(TrackBack getTrackBack(long)): trackBack.date@690 != null
    //#post(TrackBack getTrackBack(long)): init'ed(return_value)
    //#unanalyzed(TrackBack getTrackBack(long)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(TrackBack getTrackBack(long)): Effects-of-calling:java.util.Date:getTime
    //#test_vector(TrackBack getTrackBack(long)): java.util.Iterator:hasNext(...)@689: {1}, {0}
    while (it.hasNext()) {
      TrackBack trackBack = (TrackBack)it.next();
      if (trackBack.getId() == id) {
        return trackBack;
      }
    }

    return null;
    //#blogentry.java:696: end of method: TrackBack net.sourceforge.pebble.domain.BlogEntry.getTrackBack(long)
  }

  /**
   * Gets the response specified by the guid.
   *
   * @param guid    the response guid
   * @return  a Response object, or null if no response exists
   */
  public Response getResponse(String guid) {
    long id = Long.parseLong(guid.substring(guid.lastIndexOf("/")+1));
    //#blogentry.java:706: method: Response net.sourceforge.pebble.domain.BlogEntry.getResponse(String)
    //#input(Response getResponse(String)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(Response getResponse(String)): __Descendant_Table[others]
    //#input(Response getResponse(String)): __Dispatch_Table.getComment(J)Lnet/sourceforge/pebble/domain/Comment;
    //#input(Response getResponse(String)): __Dispatch_Table.getComments()Ljava/util/List;
    //#input(Response getResponse(String)): __Dispatch_Table.getTrackBack(J)Lnet/sourceforge/pebble/domain/TrackBack;
    //#input(Response getResponse(String)): __Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(Response getResponse(String)): guid
    //#input(Response getResponse(String)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(Response getResponse(String)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(Response getResponse(String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(Response getResponse(String)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getId()J
    //#input(Response getResponse(String)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(Response getResponse(String)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(Response getResponse(String)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getId()J
    //#input(Response getResponse(String)): this
    //#input(Response getResponse(String)): this.__Tag
    //#input(Response getResponse(String)): this.comments
    //#input(Response getResponse(String)): this.trackBacks
    //#output(Response getResponse(String)): return_value
    //#pre[1] (Response getResponse(String)): guid != null
    //#pre[3] (Response getResponse(String)): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[4] (Response getResponse(String)): (soft) this.comments != null
    //#pre[5] (Response getResponse(String)): (soft) init'ed(this.trackBacks)
    //#presumption(Response getResponse(String)): java.lang.String:lastIndexOf(...)@706 <= 4_294_967_294
    //#post(Response getResponse(String)): init'ed(return_value)
    //#unanalyzed(Response getResponse(String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Response getResponse(String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Response getResponse(String)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Response getResponse(String)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(Response getResponse(String)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Response getResponse(String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Response getResponse(String)): Effects-of-calling:getComments
    //#unanalyzed(Response getResponse(String)): Effects-of-calling:java.util.List:addAll
    //#test_vector(Response getResponse(String)): java.lang.String:startsWith(...)@707: {0}, {1}
    if (guid.startsWith("c")) {
      return getComment(id);
    } else {
      return getTrackBack(id);
    //#blogentry.java:710: end of method: Response net.sourceforge.pebble.domain.BlogEntry.getResponse(String)
    }
  }

  /**
   * Removes the specified TrackBack.
   *
   * @param id    the id of the TrackBack to be removed
   */
  public synchronized void removeTrackBack(long id) {
    TrackBack trackBack = getTrackBack(id);
    //#blogentry.java:720: method: void net.sourceforge.pebble.domain.BlogEntry.removeTrackBack(long)
    //#input(void removeTrackBack(long)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void removeTrackBack(long)): __Descendant_Table[others]
    //#input(void removeTrackBack(long)): __Dispatch_Table.addEvent(Lnet/sourceforge/pebble/api/event/PebbleEvent;)V
    //#input(void removeTrackBack(long)): __Dispatch_Table.areEventsEnabled()Z
    //#input(void removeTrackBack(long)): __Dispatch_Table.getTrackBack(J)Lnet/sourceforge/pebble/domain/TrackBack;
    //#input(void removeTrackBack(long)): __Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(void removeTrackBack(long)): id
    //#input(void removeTrackBack(long)): log
    //#input(void removeTrackBack(long)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void removeTrackBack(long)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(void removeTrackBack(long)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getId()J
    //#input(void removeTrackBack(long)): this
    //#input(void removeTrackBack(long)): this.__Tag
    //#input(void removeTrackBack(long)): this.events
    //#input(void removeTrackBack(long)): this.eventsEnabled
    //#input(void removeTrackBack(long)): this.trackBacks
    //#pre[4] (void removeTrackBack(long)): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[2] (void removeTrackBack(long)): (soft) log != null
    //#pre[5] (void removeTrackBack(long)): (soft) this.events != null
    //#pre[6] (void removeTrackBack(long)): (soft) init'ed(this.eventsEnabled)
    //#pre[7] (void removeTrackBack(long)): (soft) this.trackBacks != null
    //#unanalyzed(void removeTrackBack(long)): Effects-of-calling:net.sourceforge.pebble.api.event.PebbleEvent
    //#unanalyzed(void removeTrackBack(long)): Effects-of-calling:java.util.EventObject
    //#unanalyzed(void removeTrackBack(long)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void removeTrackBack(long)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void removeTrackBack(long)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void removeTrackBack(long)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void removeTrackBack(long)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void removeTrackBack(long)): Effects-of-calling:java.util.List:iterator
    //#test_vector(void removeTrackBack(long)): this.eventsEnabled: {0}, {1}
    if (trackBack != null) {
      trackBacks.remove(trackBack);

      if (areEventsEnabled()) {
        addEvent(new TrackBackEvent(trackBack, TrackBackEvent.TRACKBACK_REMOVED));
      }
    } else {
      log.warn("A TrackBack with id=" + id + " could not be found - " +
    //#blogentry.java:728: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: void removeTrackBack(long)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object)
          "perhaps it has been removed already.");
    }
  }
    //#blogentry.java:731: end of method: void net.sourceforge.pebble.domain.BlogEntry.removeTrackBack(long)

  /**
   * Removes the specified comment or TrackBack.
   *
   * @param response    the Response to be removed
   */
  public void removeResponse(Response response) {
    if (response instanceof Comment) {
    //#blogentry.java:739: method: void net.sourceforge.pebble.domain.BlogEntry.removeResponse(Response)
    //#input(void removeResponse(Response)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void removeResponse(Response)): __Descendant_Table[others]
    //#input(void removeResponse(Response)): __Dispatch_Table.addEvent(Lnet/sourceforge/pebble/api/event/PebbleEvent;)V
    //#input(void removeResponse(Response)): __Dispatch_Table.areEventsEnabled()Z
    //#input(void removeResponse(Response)): __Dispatch_Table.getComment(J)Lnet/sourceforge/pebble/domain/Comment;
    //#input(void removeResponse(Response)): __Dispatch_Table.getComments()Ljava/util/List;
    //#input(void removeResponse(Response)): __Dispatch_Table.getTrackBack(J)Lnet/sourceforge/pebble/domain/TrackBack;
    //#input(void removeResponse(Response)): __Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(void removeResponse(Response)): __Dispatch_Table.removeComment(J)V
    //#input(void removeResponse(Response)): __Dispatch_Table.removeTrackBack(J)V
    //#input(void removeResponse(Response)): log
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.areEventsEnabled()Z
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getId()J
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getParent()Lnet/sourceforge/pebble/domain/Comment;
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.removeComment(Lnet/sourceforge/pebble/domain/Comment;)V
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setParent(Lnet/sourceforge/pebble/domain/Comment;)V
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/Response.__Descendant_Table[others]
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getId()J
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(void removeResponse(Response)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getId()J
    //#input(void removeResponse(Response)): response
    //#input(void removeResponse(Response)): response.__Tag
    //#input(void removeResponse(Response)): response.date
    //#input(void removeResponse(Response)): this
    //#input(void removeResponse(Response)): this.__Tag
    //#input(void removeResponse(Response)): this.comments
    //#input(void removeResponse(Response)): this.events
    //#input(void removeResponse(Response)): this.eventsEnabled
    //#input(void removeResponse(Response)): this.trackBacks
    //#pre[1] (void removeResponse(Response)): (soft) log != null
    //#pre[4] (void removeResponse(Response)): (soft) response.date != null
    //#pre[6] (void removeResponse(Response)): (soft) this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[7] (void removeResponse(Response)): (soft) this.comments != null
    //#pre[8] (void removeResponse(Response)): (soft) this.events != null
    //#pre[9] (void removeResponse(Response)): (soft) init'ed(this.eventsEnabled)
    //#pre[10] (void removeResponse(Response)): (soft) this.trackBacks != null
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:areEventsEnabled
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:net.sourceforge.pebble.api.event.PebbleEvent
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:getBlogEntry
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:java.util.EventObject
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:addEvent
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:getComment
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:getTrackBack
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:java.util.List:remove
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:removeComment
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:getComments
    //#unanalyzed(void removeResponse(Response)): Effects-of-calling:java.util.List:addAll
    //#test_vector(void removeResponse(Response)): response.__Tag: {793_344}, {804_352}
      removeComment(response.getId());
    } else if (response instanceof TrackBack) {
      removeTrackBack(response.getId());
    }
  }
    //#blogentry.java:744: end of method: void net.sourceforge.pebble.domain.BlogEntry.removeResponse(Response)

  /**
   * Returns the blog entry that was posted before this one.
   *
   * @return  a BlogEntry instance, or null if this is the first entry
   */
  public BlogEntry getPreviousBlogEntry() {
    return getBlog().getPreviousBlogEntry(this);
    //#blogentry.java:752: method: BlogEntry net.sourceforge.pebble.domain.BlogEntry.getPreviousBlogEntry()
    //#input(BlogEntry getPreviousBlogEntry()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(BlogEntry getPreviousBlogEntry()): __Descendant_Table[others]
    //#input(BlogEntry getPreviousBlogEntry()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(BlogEntry getPreviousBlogEntry()): __Dispatch_Table.getDate()Ljava/util/Date;
    //#input(BlogEntry getPreviousBlogEntry()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/AbstractBlog]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/MultiBlog]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[others]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogEntryIndex()Lnet/sourceforge/pebble/index/BlogEntryIndex;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForDay(III)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForDay(Ljava/util/Date;)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForFirstMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForPreviousYear(Lnet/sourceforge/pebble/domain/Year;)Lnet/sourceforge/pebble/domain/Year;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForThisMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getPreviousBlogEntry(Lnet/sourceforge/pebble/domain/BlogEntry;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getLastBlogEntry()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getPreviousBlogEntry(Ljava/lang/String;)Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getPreviousDay()Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForDay(I)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForFirstDay()Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForLastDay()Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForPreviousDay(Lnet/sourceforge/pebble/domain/Day;)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForPreviousMonth(Lnet/sourceforge/pebble/domain/Month;)Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[net/sourceforge/pebble/index/BlogEntryIndex]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[others]
    //#input(BlogEntry getPreviousBlogEntry()): net/sourceforge/pebble/index/BlogEntryIndex.__Dispatch_Table.getBlogEntries()Ljava/util/List;
    //#input(BlogEntry getPreviousBlogEntry()): this
    //#input(BlogEntry getPreviousBlogEntry()): this.__Tag
    //#input(BlogEntry getPreviousBlogEntry()): this.blog
    //#input(BlogEntry getPreviousBlogEntry()): this.blog.__Tag
    //#input(BlogEntry getPreviousBlogEntry()): this.blog.blogEntryIndex
    //#input(BlogEntry getPreviousBlogEntry()): this.blog.blogEntryIndex.__Tag
    //#input(BlogEntry getPreviousBlogEntry()): this.blog.blogEntryIndex.indexEntries
    //#input(BlogEntry getPreviousBlogEntry()): this.blog.properties
    //#input(BlogEntry getPreviousBlogEntry()): this.blog.years
    //#input(BlogEntry getPreviousBlogEntry()): this.date
    //#input(BlogEntry getPreviousBlogEntry()): this.id
    //#output(BlogEntry getPreviousBlogEntry()): return_value
    //#pre[2] (BlogEntry getPreviousBlogEntry()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (BlogEntry getPreviousBlogEntry()): this.blog != null
    //#pre[4] (BlogEntry getPreviousBlogEntry()): this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[5] (BlogEntry getPreviousBlogEntry()): init'ed(this.blog.blogEntryIndex)
    //#pre[10] (BlogEntry getPreviousBlogEntry()): init'ed(this.date)
    //#pre[11] (BlogEntry getPreviousBlogEntry()): init'ed(this.id)
    //#pre[6] (BlogEntry getPreviousBlogEntry()): (soft) this.blog.blogEntryIndex.__Tag == net/sourceforge/pebble/index/BlogEntryIndex
    //#pre[7] (BlogEntry getPreviousBlogEntry()): (soft) init'ed(this.blog.blogEntryIndex.indexEntries)
    //#pre[8] (BlogEntry getPreviousBlogEntry()): (soft) this.blog.properties != null
    //#pre[9] (BlogEntry getPreviousBlogEntry()): (soft) this.blog.years != null
    //#post(BlogEntry getPreviousBlogEntry()): init'ed(return_value)
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:setEventsEnabled
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:getId
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:getConfiguredFactory
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:getBlogEntryDAO
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:getBlog
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:getCompositeKeyForBlogEntry
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:setPersistent
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:net.sourceforge.pebble.domain.BlogServiceException
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:net.sf.ehcache.Cache:get
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:net.sf.ehcache.Element:getValue
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:loadBlogEntry
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:net.sf.ehcache.Element
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:net.sf.ehcache.Cache:put
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:clone
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:getBlogEntry
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.List:add
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:getTimeZone
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:getLocale
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.Locale
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.TimeZone:getTimeZone
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.Calendar:get
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:getBlogForMonth
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:getBlogForDay
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.List:get
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.List:size
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.List:isEmpty
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:setDate
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.Date
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.lang.Long:parseLong
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.List:indexOf
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:getBlogForPreviousDay
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:getMonth
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:getYear
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(BlogEntry getPreviousBlogEntry()): Effects-of-calling:getBlogForPreviousYear
    //#blogentry.java:752: end of method: BlogEntry net.sourceforge.pebble.domain.BlogEntry.getPreviousBlogEntry()
  }

  /**
   * Returns the blog entry that was posted after this one.
   *
   * @return  a BlogEntry instance, or null is this is the last entry
   */
  public BlogEntry getNextBlogEntry() {
    return getBlog().getNextBlogEntry(this);
    //#blogentry.java:761: method: BlogEntry net.sourceforge.pebble.domain.BlogEntry.getNextBlogEntry()
    //#input(BlogEntry getNextBlogEntry()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(BlogEntry getNextBlogEntry()): __Descendant_Table[others]
    //#input(BlogEntry getNextBlogEntry()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(BlogEntry getNextBlogEntry()): __Dispatch_Table.getDate()Ljava/util/Date;
    //#input(BlogEntry getNextBlogEntry()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/AbstractBlog]
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/MultiBlog]
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[others]
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForDay(III)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForDay(Ljava/util/Date;)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForNextYear(Lnet/sourceforge/pebble/domain/Year;)Lnet/sourceforge/pebble/domain/Year;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForToday()Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getNextBlogEntry(Lnet/sourceforge/pebble/domain/BlogEntry;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getFirstBlogEntry()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getNextBlogEntry(Ljava/lang/String;)Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getNextDay()Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForDay(I)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForFirstDay()Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForNextDay(Lnet/sourceforge/pebble/domain/Day;)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForNextMonth(Lnet/sourceforge/pebble/domain/Month;)Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(BlogEntry getNextBlogEntry()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(BlogEntry getNextBlogEntry()): this
    //#input(BlogEntry getNextBlogEntry()): this.__Tag
    //#input(BlogEntry getNextBlogEntry()): this.blog
    //#input(BlogEntry getNextBlogEntry()): this.blog.__Tag
    //#input(BlogEntry getNextBlogEntry()): this.blog.properties
    //#input(BlogEntry getNextBlogEntry()): this.blog.years
    //#input(BlogEntry getNextBlogEntry()): this.date
    //#input(BlogEntry getNextBlogEntry()): this.id
    //#output(BlogEntry getNextBlogEntry()): return_value
    //#pre[2] (BlogEntry getNextBlogEntry()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (BlogEntry getNextBlogEntry()): this.blog != null
    //#pre[4] (BlogEntry getNextBlogEntry()): this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[5] (BlogEntry getNextBlogEntry()): this.blog.properties != null
    //#pre[6] (BlogEntry getNextBlogEntry()): this.blog.years != null
    //#pre[7] (BlogEntry getNextBlogEntry()): init'ed(this.date)
    //#pre[8] (BlogEntry getNextBlogEntry()): init'ed(this.id)
    //#post(BlogEntry getNextBlogEntry()): init'ed(return_value)
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:setEventsEnabled
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getId
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getConfiguredFactory
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getBlogEntryDAO
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getBlog
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getCompositeKeyForBlogEntry
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:setPersistent
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:net.sourceforge.pebble.domain.BlogServiceException
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:net.sf.ehcache.Cache:get
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:net.sf.ehcache.Element:getValue
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:loadBlogEntry
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:net.sf.ehcache.Element
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:net.sf.ehcache.Cache:put
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:clone
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getBlogEntry
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.List:add
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getTimeZone
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getLocale
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.Locale
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.TimeZone:getTimeZone
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.Calendar:get
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getBlogForMonth
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getBlogForDay
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.List:get
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.List:size
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.List:isEmpty
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:setDate
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.List:lastIndexOf
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getBlogForNextDay
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getBlogForFirstDay
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getMonth
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getYear
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(BlogEntry getNextBlogEntry()): Effects-of-calling:getBlogForNextYear
    //#blogentry.java:761: end of method: BlogEntry net.sourceforge.pebble.domain.BlogEntry.getNextBlogEntry()
  }

  public void validate(ValidationContext context) {
  }
    //#blogentry.java:765: method: void net.sourceforge.pebble.domain.BlogEntry.validate(ValidationContext)
    //#blogentry.java:765: end of method: void net.sourceforge.pebble.domain.BlogEntry.validate(ValidationContext)

  /**
   * Indicates whether some other object is "equal to" this one.
   *
   * @param o   the reference object with which to compare.
   * @return <code>true</code> if this object is the same as the obj
   *         argument; <code>false</code> otherwise.
   * @see #hashCode()
   * @see java.util.Hashtable
   */
  public boolean equals(Object o) {
    if (this == o) {
    //#blogentry.java:777: method: bool net.sourceforge.pebble.domain.BlogEntry.equals(Object)
    //#input(bool equals(Object)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(bool equals(Object)): __Descendant_Table[others]
    //#input(bool equals(Object)): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(bool equals(Object)): __Dispatch_Table.getGuid()Ljava/lang/String;
    //#input(bool equals(Object)): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(bool equals(Object)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(bool equals(Object)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(bool equals(Object)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(bool equals(Object)): o
    //#input(bool equals(Object)): o.__Tag
    //#input(bool equals(Object)): o.blog
    //#input(bool equals(Object)): o.blog.__Tag
    //#input(bool equals(Object)): o.blog.id
    //#input(bool equals(Object)): o.id
    //#input(bool equals(Object)): this
    //#input(bool equals(Object)): this.__Tag
    //#input(bool equals(Object)): this.blog
    //#input(bool equals(Object)): this.blog.__Tag
    //#input(bool equals(Object)): this.blog.id
    //#input(bool equals(Object)): this.id
    //#output(bool equals(Object)): return_value
    //#pre[5] (bool equals(Object)): (soft) o.blog != null
    //#pre[6] (bool equals(Object)): (soft) o.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[7] (bool equals(Object)): (soft) init'ed(o.blog.id)
    //#pre[8] (bool equals(Object)): (soft) init'ed(o.id)
    //#pre[11] (bool equals(Object)): (soft) this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[12] (bool equals(Object)): (soft) this.blog != null
    //#pre[13] (bool equals(Object)): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[14] (bool equals(Object)): (soft) init'ed(this.blog.id)
    //#pre[15] (bool equals(Object)): (soft) init'ed(this.id)
    //#post(bool equals(Object)): init'ed(return_value)
    //#unanalyzed(bool equals(Object)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(bool equals(Object)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(bool equals(Object)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(bool equals(Object)): Effects-of-calling:getId
    //#test_vector(bool equals(Object)): this == o: {0}, {1}
      return true;
    }

    if (!(o instanceof BlogEntry)) {
      return false;
    }

    BlogEntry blogEntry = (BlogEntry)o;
    return getGuid().equals(blogEntry.getGuid());
    //#blogentry.java:786: end of method: bool net.sourceforge.pebble.domain.BlogEntry.equals(Object)
  }

  public String getGuid() {
    return "blogEntry/" + getBlog().getId() + "/" + getId();
    //#blogentry.java:790: method: String net.sourceforge.pebble.domain.BlogEntry.getGuid()
    //#input(String getGuid()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(String getGuid()): __Descendant_Table[others]
    //#input(String getGuid()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(String getGuid()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(String getGuid()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getGuid()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(String getGuid()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(String getGuid()): this
    //#input(String getGuid()): this.__Tag
    //#input(String getGuid()): this.blog
    //#input(String getGuid()): this.blog.__Tag
    //#input(String getGuid()): this.blog.id
    //#input(String getGuid()): this.id
    //#output(String getGuid()): return_value
    //#pre[2] (String getGuid()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (String getGuid()): this.blog != null
    //#pre[4] (String getGuid()): this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[5] (String getGuid()): init'ed(this.blog.id)
    //#pre[6] (String getGuid()): init'ed(this.id)
    //#post(String getGuid()): return_value != null
    //#blogentry.java:790: end of method: String net.sourceforge.pebble.domain.BlogEntry.getGuid()
  }

  public int hashCode() {
    return getGuid().hashCode();
    //#blogentry.java:794: method: int net.sourceforge.pebble.domain.BlogEntry.hashCode()
    //#input(int hashCode()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(int hashCode()): __Descendant_Table[others]
    //#input(int hashCode()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(int hashCode()): __Dispatch_Table.getGuid()Ljava/lang/String;
    //#input(int hashCode()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(int hashCode()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(int hashCode()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(int hashCode()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(int hashCode()): this
    //#input(int hashCode()): this.__Tag
    //#input(int hashCode()): this.blog
    //#input(int hashCode()): this.blog.__Tag
    //#input(int hashCode()): this.blog.id
    //#input(int hashCode()): this.id
    //#output(int hashCode()): return_value
    //#pre[2] (int hashCode()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (int hashCode()): this.blog != null
    //#pre[4] (int hashCode()): this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[5] (int hashCode()): init'ed(this.blog.id)
    //#pre[6] (int hashCode()): init'ed(this.id)
    //#post(int hashCode()): init'ed(return_value)
    //#unanalyzed(int hashCode()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(int hashCode()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(int hashCode()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(int hashCode()): Effects-of-calling:getId
    //#blogentry.java:794: end of method: int net.sourceforge.pebble.domain.BlogEntry.hashCode()
  }

  /**
   * Creates and returns a copy of this object.
   *
   * @return a clone of this instance.
   * @see Cloneable
   */
  public Object clone() {
    BlogEntry entry = new BlogEntry(getBlog());
    //#blogentry.java:804: method: Object net.sourceforge.pebble.domain.BlogEntry.clone()
    //#input(Object clone()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(Object clone()): __Descendant_Table[others]
    //#input(Object clone()): __Dispatch_Table.addCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(Object clone()): __Dispatch_Table.addComment(Lnet/sourceforge/pebble/domain/Comment;)V
    //#input(Object clone()): __Dispatch_Table.addEvent(Lnet/sourceforge/pebble/api/event/PebbleEvent;)V
    //#input(Object clone()): __Dispatch_Table.addTrackBack(Lnet/sourceforge/pebble/domain/TrackBack;)V
    //#input(Object clone()): __Dispatch_Table.areEventsEnabled()Z
    //#input(Object clone()): __Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(Object clone()): __Dispatch_Table.getAuthor()Ljava/lang/String;
    //#input(Object clone()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Object clone()): __Dispatch_Table.getBody()Ljava/lang/String;
    //#input(Object clone()): __Dispatch_Table.getCategories()Ljava/util/Set;
    //#input(Object clone()): __Dispatch_Table.getComment(J)Lnet/sourceforge/pebble/domain/Comment;
    //#input(Object clone()): __Dispatch_Table.getComments()Ljava/util/List;
    //#input(Object clone()): __Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Object clone()): __Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#input(Object clone()): __Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(Object clone()): __Dispatch_Table.getResponses()Ljava/util/List;
    //#input(Object clone()): __Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Object clone()): __Dispatch_Table.getSubtitle()Ljava/lang/String;
    //#input(Object clone()): __Dispatch_Table.getTags()Ljava/lang/String;
    //#input(Object clone()): __Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(Object clone()): __Dispatch_Table.getTitle()Ljava/lang/String;
    //#input(Object clone()): __Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(Object clone()): __Dispatch_Table.isPersistent()Z
    //#input(Object clone()): __Dispatch_Table.isPublished()Z
    //#input(Object clone()): __Dispatch_Table.isUnpublished()Z
    //#input(Object clone()): __Dispatch_Table.setAttachment(Lnet/sourceforge/pebble/domain/Attachment;)V
    //#input(Object clone()): __Dispatch_Table.setAuthor(Ljava/lang/String;)V
    //#input(Object clone()): __Dispatch_Table.setBody(Ljava/lang/String;)V
    //#input(Object clone()): __Dispatch_Table.setCommentsEnabled(Z)V
    //#input(Object clone()): __Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Object clone()): __Dispatch_Table.setEventsEnabled(Z)V
    //#input(Object clone()): __Dispatch_Table.setExcerpt(Ljava/lang/String;)V
    //#input(Object clone()): __Dispatch_Table.setOriginalPermalink(Ljava/lang/String;)V
    //#input(Object clone()): __Dispatch_Table.setPersistent(Z)V
    //#input(Object clone()): __Dispatch_Table.setPublished(Z)V
    //#input(Object clone()): __Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(Object clone()): __Dispatch_Table.setSubtitle(Ljava/lang/String;)V
    //#input(Object clone()): __Dispatch_Table.setTags(Ljava/lang/String;)V
    //#input(Object clone()): __Dispatch_Table.setTimeZoneId(Ljava/lang/String;)V
    //#input(Object clone()): __Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(Object clone()): __Dispatch_Table.setTrackBacksEnabled(Z)V
    //#input(Object clone()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).__Tag
    //#input(Object clone()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#2).__Tag
    //#input(Object clone()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#4).__Tag
    //#input(Object clone()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#4).name
    //#input(Object clone()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).__Tag
    //#input(Object clone()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name
    //#input(Object clone()): net/sourceforge/pebble/domain/Attachment.__Descendant_Table[net/sourceforge/pebble/domain/Attachment]
    //#input(Object clone()): net/sourceforge/pebble/domain/Attachment.__Descendant_Table[others]
    //#input(Object clone()): net/sourceforge/pebble/domain/Attachment.__Dispatch_Table.clone()Ljava/lang/Object;
    //#input(Object clone()): net/sourceforge/pebble/domain/Attachment.__Dispatch_Table.setSize(J)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Attachment.__Dispatch_Table.setType(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Attachment.__Dispatch_Table.setUrl(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Object clone()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(Object clone()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category;
    //#input(Object clone()): net/sourceforge/pebble/domain/Category.__Descendant_Table[net/sourceforge/pebble/domain/Category]
    //#input(Object clone()): net/sourceforge/pebble/domain/Category.__Descendant_Table[others]
    //#input(Object clone()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(Object clone()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getParent()Lnet/sourceforge/pebble/domain/Category;
    //#input(Object clone()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.addComment(Lnet/sourceforge/pebble/domain/Comment;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.areEventsEnabled()Z
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.clone()Ljava/lang/Object;
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getId()J
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getParent()Lnet/sourceforge/pebble/domain/Comment;
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isApproved()Z
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isRejected()Z
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setAuthenticated(Z)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setAuthor(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setBlogEntry(Lnet/sourceforge/pebble/domain/BlogEntry;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setBody(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setEmail(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setEventsEnabled(Z)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setParent(Lnet/sourceforge/pebble/domain/Comment;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setWebsite(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(Object clone()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(Object clone()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(Object clone()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(Object clone()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(Object clone()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Object clone()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Object clone()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(Object clone()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(Object clone()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(Object clone()): net/sourceforge/pebble/domain/Response.__Descendant_Table[others]
    //#input(Object clone()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Object clone()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setEventsEnabled(Z)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/State.APPROVED
    //#input(Object clone()): net/sourceforge/pebble/domain/State.PUBLISHED
    //#input(Object clone()): net/sourceforge/pebble/domain/State.REJECTED
    //#input(Object clone()): net/sourceforge/pebble/domain/State.UNPUBLISHED
    //#input(Object clone()): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(Object clone()): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(Object clone()): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(Object clone()): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Object clone()): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(Object clone()): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[others]
    //#input(Object clone()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(Object clone()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Object clone()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Object clone()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(Object clone()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/domain/Tag]
    //#input(Object clone()): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/index/IndexedTag]
    //#input(Object clone()): net/sourceforge/pebble/domain/Tag.__Descendant_Table[others]
    //#input(Object clone()): net/sourceforge/pebble/domain/Tag.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Object clone()): net/sourceforge/pebble/domain/Tag.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.areEventsEnabled()Z
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.clone()Ljava/lang/Object;
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isApproved()Z
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isRejected()Z
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setBlogEntry(Lnet/sourceforge/pebble/domain/BlogEntry;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setBlogName(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setEventsEnabled(Z)V
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setExcerpt(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setIpAddress(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setTitle(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setUrl(Ljava/lang/String;)V
    //#input(Object clone()): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Object clone()): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(Object clone()): this
    //#input(Object clone()): this.__Tag
    //#input(Object clone()): this.attachment
    //#input(Object clone()): this.attachment.__Tag
    //#input(Object clone()): this.attachment.size
    //#input(Object clone()): this.attachment.type
    //#input(Object clone()): this.attachment.url
    //#input(Object clone()): this.author
    //#input(Object clone()): this.blog
    //#input(Object clone()): this.blog.__Tag
    //#input(Object clone()): this.blog.rootCategory...__Tag
    //#input(Object clone()): this.blog.rootCategory.__Tag
    //#input(Object clone()): this.body
    //#input(Object clone()): this.categories
    //#input(Object clone()): this.comments
    //#input(Object clone()): this.commentsEnabled
    //#input(Object clone()): this.date
    //#input(Object clone()): this.excerpt
    //#input(Object clone()): this.originalPermalink
    //#input(Object clone()): this.persistent
    //#input(Object clone()): this.state
    //#input(Object clone()): this.state.__Tag
    //#input(Object clone()): this.state.name
    //#input(Object clone()): this.subtitle
    //#input(Object clone()): this.tags
    //#input(Object clone()): this.timeZoneId
    //#input(Object clone()): this.title
    //#input(Object clone()): this.trackBacks
    //#input(Object clone()): this.trackBacksEnabled
    //#output(Object clone()): new ArrayList(BlogEntry#2) num objects
    //#output(Object clone()): new ArrayList(BlogEntry#3) num objects
    //#output(Object clone()): new ArrayList(Content#1) num objects
    //#output(Object clone()): new ArrayList(Content#3) num objects
    //#output(Object clone()): new ArrayList(parse#1) num objects
    //#output(Object clone()): new Attachment(clone#1*) num objects
    //#output(Object clone()): new Attachment(clone#1*).__Tag
    //#output(Object clone()): new Attachment(clone#1*).size
    //#output(Object clone()): new Attachment(clone#1*).type
    //#output(Object clone()): new Attachment(clone#1*).url
    //#output(Object clone()): new BlogEntry(clone#1) num objects
    //#output(Object clone()): return_value.__Tag
    //#output(Object clone()): return_value.attachment
    //#output(Object clone()): return_value.author
    //#output(Object clone()): return_value.blog
    //#output(Object clone()): return_value.body
    //#output(Object clone()): return_value.categories
    //#output(Object clone()): return_value.comments
    //#output(Object clone()): return_value.commentsEnabled
    //#output(Object clone()): return_value.date
    //#output(Object clone()): return_value.events
    //#output(Object clone()): return_value.eventsEnabled
    //#output(Object clone()): return_value.excerpt
    //#output(Object clone()): return_value.id
    //#output(Object clone()): return_value.lockedBy
    //#output(Object clone()): return_value.originalPermalink
    //#output(Object clone()): return_value.permalink
    //#output(Object clone()): return_value.persistent
    //#output(Object clone()): return_value.propertyChangeEvents
    //#output(Object clone()): return_value.propertyChangeSupport
    //#output(Object clone()): return_value.state
    //#output(Object clone()): return_value.subtitle
    //#output(Object clone()): return_value.tags
    //#output(Object clone()): return_value.tagsAsCommaSeparated
    //#output(Object clone()): return_value.tagsAsList
    //#output(Object clone()): return_value.timeZoneId
    //#output(Object clone()): return_value.title
    //#output(Object clone()): return_value.trackBacks
    //#output(Object clone()): return_value.trackBacksEnabled
    //#output(Object clone()): new Date(PageBasedContent#2) num objects
    //#output(Object clone()): new HashSet(BlogEntry#1) num objects
    //#output(Object clone()): new LinkedList(PageBasedContent#1) num objects
    //#output(Object clone()): new PropertyChangeSupport(Content#2) num objects
    //#output(Object clone()): return_value
    //#new obj(Object clone()): new ArrayList(BlogEntry#2)
    //#new obj(Object clone()): new ArrayList(BlogEntry#3)
    //#new obj(Object clone()): new ArrayList(Content#1)
    //#new obj(Object clone()): new ArrayList(Content#3)
    //#new obj(Object clone()): new ArrayList(parse#1)
    //#new obj(Object clone()): new Attachment(clone#1*)
    //#new obj(Object clone()): new BlogEntry(clone#1)
    //#new obj(Object clone()): new Date(PageBasedContent#2)
    //#new obj(Object clone()): new HashSet(BlogEntry#1)
    //#new obj(Object clone()): new LinkedList(PageBasedContent#1)
    //#new obj(Object clone()): new PropertyChangeSupport(Content#2)
    //#pre[6] (Object clone()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[7] (Object clone()): init'ed(this.attachment)
    //#pre[12] (Object clone()): init'ed(this.author)
    //#pre[13] (Object clone()): init'ed(this.blog)
    //#pre[22] (Object clone()): init'ed(this.body)
    //#pre[23] (Object clone()): this.categories != null
    //#pre[24] (Object clone()): this.comments != null
    //#pre[25] (Object clone()): init'ed(this.commentsEnabled)
    //#pre[26] (Object clone()): this.date != null
    //#pre[27] (Object clone()): init'ed(this.excerpt)
    //#pre[28] (Object clone()): init'ed(this.originalPermalink)
    //#pre[29] (Object clone()): init'ed(this.persistent)
    //#pre[30] (Object clone()): this.state != null
    //#pre[31] (Object clone()): this.state.__Tag == net/sourceforge/pebble/domain/State
    //#pre[33] (Object clone()): init'ed(this.subtitle)
    //#pre[34] (Object clone()): init'ed(this.tags)
    //#pre[35] (Object clone()): init'ed(this.timeZoneId)
    //#pre[36] (Object clone()): init'ed(this.title)
    //#pre[37] (Object clone()): init'ed(this.trackBacks)
    //#pre[38] (Object clone()): init'ed(this.trackBacksEnabled)
    //#pre[3] (Object clone()): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#4).name != null
    //#pre[4] (Object clone()): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name != null
    //#pre[8] (Object clone()): (soft) this.attachment.__Tag == net/sourceforge/pebble/domain/Attachment
    //#pre[9] (Object clone()): (soft) init'ed(this.attachment.size)
    //#pre[10] (Object clone()): (soft) init'ed(this.attachment.type)
    //#pre[11] (Object clone()): (soft) init'ed(this.attachment.url)
    //#pre[32] (Object clone()): (soft) init'ed(this.state.name)
    //#presumption(Object clone()): comment.blogEntry@835 != null
    //#presumption(Object clone()): java.util.Calendar:getTime(...)@187 != null
    //#presumption(Object clone()): java.util.Iterator:next(...).__Tag@827 == net/sourceforge/pebble/domain/Category
    //#presumption(Object clone()): java.util.Iterator:next(...).__Tag@835 == net/sourceforge/pebble/domain/Comment
    //#presumption(Object clone()): java.util.Iterator:next(...).__Tag@843 == net/sourceforge/pebble/domain/TrackBack
    //#presumption(Object clone()): java.util.Iterator:next(...)@835 != null
    //#presumption(Object clone()): java.util.Iterator:next(...)@843 != null
    //#presumption(Object clone()): trackBack.blogEntry@843 != null
    //#post(Object clone()): return_value == &new BlogEntry(clone#1)
    //#post(Object clone()): new ArrayList(BlogEntry#2) num objects == 1
    //#post(Object clone()): new ArrayList(BlogEntry#3) num objects == 1
    //#post(Object clone()): new ArrayList(parse#1) num objects == 1
    //#post(Object clone()): new BlogEntry(clone#1) num objects == 1
    //#post(Object clone()): new Date(PageBasedContent#2) num objects == 1
    //#post(Object clone()): new HashSet(BlogEntry#1) num objects == 1
    //#post(Object clone()): new LinkedList(PageBasedContent#1) num objects == 1
    //#post(Object clone()): new ArrayList(Content#1) num objects >= 1
    //#post(Object clone()): new ArrayList(Content#3) num objects >= 1
    //#post(Object clone()): new Attachment(clone#1*) num objects <= 1
    //#post(Object clone()): init'ed(new Attachment(clone#1*).__Tag)
    //#post(Object clone()): (soft) init'ed(new Attachment(clone#1*).size)
    //#post(Object clone()): init'ed(new Attachment(clone#1*).type)
    //#post(Object clone()): init'ed(new Attachment(clone#1*).url)
    //#post(Object clone()): return_value.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#post(Object clone()): init'ed(return_value.attachment)
    //#post(Object clone()): init'ed(return_value.author)
    //#post(Object clone()): return_value.blog == this.blog
    //#post(Object clone()): init'ed(return_value.blog)
    //#post(Object clone()): return_value.body == this.body
    //#post(Object clone()): init'ed(return_value.body)
    //#post(Object clone()): return_value.categories == &new HashSet(BlogEntry#1)
    //#post(Object clone()): return_value.comments == &new ArrayList(BlogEntry#2)
    //#post(Object clone()): return_value.commentsEnabled == this.commentsEnabled
    //#post(Object clone()): init'ed(return_value.commentsEnabled)
    //#post(Object clone()): return_value.date == this.date
    //#post(Object clone()): return_value.date != null
    //#post(Object clone()): return_value.events == &new ArrayList(Content#1)
    //#post(Object clone()): init'ed(return_value.eventsEnabled)
    //#post(Object clone()): init'ed(return_value.excerpt)
    //#post(Object clone()): return_value.id != null
    //#post(Object clone()): init'ed(return_value.lockedBy)
    //#post(Object clone()): init'ed(return_value.originalPermalink)
    //#post(Object clone()): init'ed(return_value.permalink)
    //#post(Object clone()): return_value.persistent == this.persistent
    //#post(Object clone()): init'ed(return_value.persistent)
    //#post(Object clone()): return_value.propertyChangeEvents == &new ArrayList(Content#3)
    //#post(Object clone()): return_value.propertyChangeSupport == &new PropertyChangeSupport(Content#2)
    //#post(Object clone()): return_value.state == this.state
    //#post(Object clone()): return_value.state != null
    //#post(Object clone()): return_value.subtitle == this.subtitle
    //#post(Object clone()): init'ed(return_value.subtitle)
    //#post(Object clone()): init'ed(return_value.tags)
    //#post(Object clone()): return_value.tagsAsCommaSeparated != null
    //#post(Object clone()): return_value.tagsAsList == &new ArrayList(parse#1)
    //#post(Object clone()): return_value.timeZoneId == this.timeZoneId
    //#post(Object clone()): init'ed(return_value.timeZoneId)
    //#post(Object clone()): return_value.title == this.title
    //#post(Object clone()): init'ed(return_value.title)
    //#post(Object clone()): return_value.trackBacks == &new ArrayList(BlogEntry#3)
    //#post(Object clone()): return_value.trackBacksEnabled == this.trackBacksEnabled
    //#post(Object clone()): init'ed(return_value.trackBacksEnabled)
    //#post(Object clone()): new PropertyChangeSupport(Content#2) num objects >= 1
    //#unanalyzed(Object clone()): Effects-of-calling:getState
    //#unanalyzed(Object clone()): Effects-of-calling:areEventsEnabled
    //#unanalyzed(Object clone()): Effects-of-calling:isApproved
    //#unanalyzed(Object clone()): Effects-of-calling:net.sourceforge.pebble.api.event.PebbleEvent
    //#unanalyzed(Object clone()): Effects-of-calling:isRejected
    //#unanalyzed(Object clone()): Effects-of-calling:net.sourceforge.pebble.domain.Content
    //#unanalyzed(Object clone()): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:transformHTML
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.Date
    //#unanalyzed(Object clone()): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getBlog
    //#unanalyzed(Object clone()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Object clone()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(Object clone()): Effects-of-calling:setState
    //#unanalyzed(Object clone()): Effects-of-calling:getBlogEntry
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.EventObject
    //#unanalyzed(Object clone()): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:addEvent
    //#unanalyzed(Object clone()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Object clone()): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getTitle
    //#unanalyzed(Object clone()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Object clone()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Object clone()): Effects-of-calling:net.sourceforge.pebble.domain.Response
    //#unanalyzed(Object clone()): Effects-of-calling:net.sourceforge.pebble.domain.TrackBack
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.HashSet
    //#unanalyzed(Object clone()): Effects-of-calling:java.beans.PropertyChangeSupport:firePropertyChange
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.Set:contains
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.Set:add
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Object clone()): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:filterHTML
    //#unanalyzed(Object clone()): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(Object clone()): Effects-of-calling:net.sourceforge.pebble.domain.Comment
    //#unanalyzed(Object clone()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(Object clone()): Effects-of-calling:getComment
    //#unanalyzed(Object clone()): Effects-of-calling:addComment
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.List:contains
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.List:add
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Object clone()): Effects-of-calling:getComments
    //#unanalyzed(Object clone()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(Object clone()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(Object clone()): Effects-of-calling:java.lang.String:replaceAll
    //#unanalyzed(Object clone()): Effects-of-calling:java.lang.String:toLowerCase
    //#unanalyzed(Object clone()): Effects-of-calling:java.lang.String:split
    //#unanalyzed(Object clone()): Effects-of-calling:getAllTags
    //#unanalyzed(Object clone()): Effects-of-calling:getTagsAsList
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.Set:size
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.Collections:reverse
    //#unanalyzed(Object clone()): Effects-of-calling:getRootCategory
    //#unanalyzed(Object clone()): Effects-of-calling:java.beans.PropertyChangeSupport
    //#unanalyzed(Object clone()): Effects-of-calling:java.beans.PropertyChangeSupport:addPropertyChangeListener
    //#unanalyzed(Object clone()): Effects-of-calling:java.util.LinkedList
    //#unanalyzed(Object clone()): Effects-of-calling:setDate
    //#unanalyzed(Object clone()): Effects-of-calling:net.sourceforge.pebble.domain.Response:setState
    //#test_vector(Object clone()): this.attachment: Addr_Set{null}, Inverse{null}
    //#test_vector(Object clone()): java.util.Iterator:hasNext(...)@826: {1}, {0}
    //#test_vector(Object clone()): java.util.Iterator:hasNext(...)@834: {1}, {0}
    //#test_vector(Object clone()): java.util.Iterator:hasNext(...)@842: {1}, {0}
    entry.setEventsEnabled(false);
    entry.setPersistent(isPersistent());
    entry.setPublished(isPublished());
    entry.setTitle(getTitle());
    entry.setSubtitle(getSubtitle());
    entry.setExcerpt(getExcerpt());
    entry.setBody(getBody());
    entry.setDate(getDate());
    entry.setTimeZoneId(timeZoneId);
    entry.setState(getState());
    entry.setAuthor(getAuthor());
    entry.setOriginalPermalink(getOriginalPermalink());
    entry.setCommentsEnabled(commentsEnabled);
    entry.setTrackBacksEnabled(trackBacksEnabled);

    if (attachment != null) {
      entry.setAttachment((Attachment)attachment.clone());
    }

    // copy the categories
    Iterator it = categories.iterator();
    while (it.hasNext()) {
      entry.addCategory((Category)it.next());
    }

    entry.setTags(getTags());

    // also copy the comments
    it = getComments().iterator();
    while (it.hasNext()) {
      Comment comment = (Comment)it.next();
      Comment clonedComment = (Comment)comment.clone();
      entry.addComment(clonedComment);
    //#blogentry.java:837: ?!precondition failure
    //#    net/sourceforge/pebble/domain/BlogEntry.addComment: (soft) comment...__Tag == net/sourceforge/pebble/domain/Comment
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: Object clone()
    //#    basic block: bb_19
    //#    assertion: (soft) undefined == 793_344
    //#    callee: void net/sourceforge/pebble/domain/BlogEntry.addComment(Comment)
    //#    callee assertion: (soft) comment...__Tag == net/sourceforge/pebble/domain/Comment
    //#    callee file: blogentry.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 554
    //#    VN: undefined
    //#    Expected: {793_344}
    //#    Bad: {0, Invalid}
    //#    Attribs:  Int  Exp singleton  Bad singleton  Bad overlaps +/-1000  Soft  Bad < Exp
    //#blogentry.java:837: ?!precondition failure
    //#    net/sourceforge/pebble/domain/BlogEntry.addComment: (soft) comment...date != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: Object clone()
    //#    basic block: bb_19
    //#    assertion: (soft) undefined != null
    //#    callee: void net/sourceforge/pebble/domain/BlogEntry.addComment(Comment)
    //#    callee assertion: (soft) comment...date != null
    //#    callee file: blogentry.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 554
    //#    VN: undefined
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null, Invalid}
    //#    Attribs:  Ptr  null in Bad  Soft
    }

    // and TrackBacks
    it = getTrackBacks().iterator();
    while (it.hasNext()) {
      TrackBack trackBack = (TrackBack)it.next();
      TrackBack clonedTrackBack = (TrackBack)trackBack.clone();
      clonedTrackBack.setBlogEntry(entry);
      entry.addTrackBack(clonedTrackBack);
    }

    return entry;
    //#blogentry.java:849: end of method: Object net.sourceforge.pebble.domain.BlogEntry.clone()
  }

  /**
   * Sets whether events are enabled.
   *
   * @param b   true to enable events, false otherwise
   */
  void setEventsEnabled(boolean b) {
    super.setEventsEnabled(b);
    //#blogentry.java:858: method: void net.sourceforge.pebble.domain.BlogEntry.setEventsEnabled(bool)
    //#input(void setEventsEnabled(bool)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void setEventsEnabled(bool)): __Descendant_Table[others]
    //#input(void setEventsEnabled(bool)): __Dispatch_Table.getComments()Ljava/util/List;
    //#input(void setEventsEnabled(bool)): __Dispatch_Table.getResponses()Ljava/util/List;
    //#input(void setEventsEnabled(bool)): __Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(void setEventsEnabled(bool)): b
    //#input(void setEventsEnabled(bool)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void setEventsEnabled(bool)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void setEventsEnabled(bool)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(void setEventsEnabled(bool)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.setEventsEnabled(Z)V
    //#input(void setEventsEnabled(bool)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void setEventsEnabled(bool)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void setEventsEnabled(bool)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void setEventsEnabled(bool)): net/sourceforge/pebble/domain/Response.__Descendant_Table[others]
    //#input(void setEventsEnabled(bool)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.setEventsEnabled(Z)V
    //#input(void setEventsEnabled(bool)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.setEventsEnabled(Z)V
    //#input(void setEventsEnabled(bool)): this
    //#input(void setEventsEnabled(bool)): this.__Tag
    //#input(void setEventsEnabled(bool)): this.comments
    //#input(void setEventsEnabled(bool)): this.trackBacks
    //#output(void setEventsEnabled(bool)): this.eventsEnabled
    //#pre[3] (void setEventsEnabled(bool)): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[4] (void setEventsEnabled(bool)): this.comments != null
    //#pre[5] (void setEventsEnabled(bool)): init'ed(this.trackBacks)
    //#presumption(void setEventsEnabled(bool)): java.util.Iterator:next(...).__Tag@861 in {net/sourceforge/pebble/domain/Comment, net/sourceforge/pebble/domain/Response, net/sourceforge/pebble/domain/TrackBack}
    //#presumption(void setEventsEnabled(bool)): java.util.Iterator:next(...)@861 != null
    //#post(void setEventsEnabled(bool)): init'ed(this.eventsEnabled)
    //#unanalyzed(void setEventsEnabled(bool)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void setEventsEnabled(bool)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void setEventsEnabled(bool)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void setEventsEnabled(bool)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void setEventsEnabled(bool)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void setEventsEnabled(bool)): Effects-of-calling:getComments
    //#unanalyzed(void setEventsEnabled(bool)): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(void setEventsEnabled(bool)): Effects-of-calling:java.util.Collections:sort
    //#test_vector(void setEventsEnabled(bool)): java.util.Iterator:hasNext(...)@861: {1}, {0}

    // and cascade
    for (Response response : getResponses()) {
      response.setEventsEnabled(b);
    }
  }
    //#blogentry.java:864: end of method: void net.sourceforge.pebble.domain.BlogEntry.setEventsEnabled(bool)

  public void clearEvents() {
    super.clearEvents();
    //#blogentry.java:867: method: void net.sourceforge.pebble.domain.BlogEntry.clearEvents()
    //#input(void clearEvents()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void clearEvents()): __Descendant_Table[others]
    //#input(void clearEvents()): __Dispatch_Table.getComments()Ljava/util/List;
    //#input(void clearEvents()): __Dispatch_Table.getResponses()Ljava/util/List;
    //#input(void clearEvents()): __Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(void clearEvents()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void clearEvents()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void clearEvents()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.clearEvents()V
    //#input(void clearEvents()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(void clearEvents()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void clearEvents()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void clearEvents()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void clearEvents()): net/sourceforge/pebble/domain/Response.__Descendant_Table[others]
    //#input(void clearEvents()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.clearEvents()V
    //#input(void clearEvents()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.clearEvents()V
    //#input(void clearEvents()): this
    //#input(void clearEvents()): this.__Tag
    //#input(void clearEvents()): this.comments
    //#input(void clearEvents()): this.trackBacks
    //#output(void clearEvents()): new ArrayList(clearEvents#1*) num objects
    //#output(void clearEvents()): this.events
    //#new obj(void clearEvents()): new ArrayList(clearEvents#1*)
    //#pre[2] (void clearEvents()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (void clearEvents()): this.comments != null
    //#pre[4] (void clearEvents()): init'ed(this.trackBacks)
    //#presumption(void clearEvents()): java.util.Iterator:next(...).__Tag@869 in {net/sourceforge/pebble/domain/Comment, net/sourceforge/pebble/domain/Response, net/sourceforge/pebble/domain/TrackBack}
    //#presumption(void clearEvents()): java.util.Iterator:next(...)@869 != null
    //#post(void clearEvents()): this.events != null
    //#post(void clearEvents()): new ArrayList(clearEvents#1*) num objects >= 1
    //#unanalyzed(void clearEvents()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void clearEvents()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void clearEvents()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void clearEvents()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void clearEvents()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void clearEvents()): Effects-of-calling:getComments
    //#unanalyzed(void clearEvents()): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(void clearEvents()): Effects-of-calling:java.util.Collections:sort
    //#test_vector(void clearEvents()): java.util.Iterator:hasNext(...)@869: {1}, {0}

    for (Response response : getResponses()) {
      response.clearEvents();
    }
  }
    //#blogentry.java:872: end of method: void net.sourceforge.pebble.domain.BlogEntry.clearEvents()

  /**
   * Sets the state of this blog entry.
   */
  void setState(State state) {
    State previousState = getState();
    //#blogentry.java:878: method: void net.sourceforge.pebble.domain.BlogEntry.setState(State)
    //#input(void setState(State)): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void setState(State)): __Descendant_Table[others]
    //#input(void setState(State)): __Dispatch_Table.addEvent(Lnet/sourceforge/pebble/api/event/PebbleEvent;)V
    //#input(void setState(State)): __Dispatch_Table.areEventsEnabled()Z
    //#input(void setState(State)): __Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void setState(State)): __Dispatch_Table.isPublished()Z
    //#input(void setState(State)): __Dispatch_Table.isUnpublished()Z
    //#input(void setState(State)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#4).__Tag
    //#input(void setState(State)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#4).name
    //#input(void setState(State)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).__Tag
    //#input(void setState(State)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name
    //#input(void setState(State)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void setState(State)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void setState(State)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void setState(State)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(void setState(State)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void setState(State)): net/sourceforge/pebble/domain/State.PUBLISHED
    //#input(void setState(State)): net/sourceforge/pebble/domain/State.UNPUBLISHED
    //#input(void setState(State)): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(void setState(State)): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(void setState(State)): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(void setState(State)): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void setState(State)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void setState(State)): state
    //#input(void setState(State)): state.__Tag
    //#input(void setState(State)): state.name
    //#input(void setState(State)): this
    //#input(void setState(State)): this.__Tag
    //#input(void setState(State)): this.events
    //#input(void setState(State)): this.eventsEnabled
    //#input(void setState(State)): this.state
    //#input(void setState(State)): this.state.__Tag
    //#output(void setState(State)): this.state
    //#pre[3] (void setState(State)): init'ed(this.state)
    //#pre[9] (void setState(State)): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[11] (void setState(State)): init'ed(this.eventsEnabled)
    //#pre[1] (void setState(State)): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#4).name != null
    //#pre[2] (void setState(State)): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name != null
    //#pre[4] (void setState(State)): (soft) state != null
    //#pre[6] (void setState(State)): (soft) state.__Tag == net/sourceforge/pebble/domain/State
    //#pre[7] (void setState(State)): (soft) init'ed(state.name)
    //#pre[10] (void setState(State)): (soft) this.events != null
    //#post(void setState(State)): this.state == state
    //#post(void setState(State)): (soft) this.state != null
    //#unanalyzed(void setState(State)): Effects-of-calling:net.sourceforge.pebble.api.event.PebbleEvent
    //#unanalyzed(void setState(State)): Effects-of-calling:java.util.EventObject
    //#unanalyzed(void setState(State)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void setState(State)): Effects-of-calling:java.lang.String:equals
    //#test_vector(void setState(State)): this.eventsEnabled: {0}, {1}
    super.setState(state);

    if (areEventsEnabled()) {
      if (isPublished() && previousState == State.UNPUBLISHED) {
        addEvent(new BlogEntryEvent(this, BlogEntryEvent.BLOG_ENTRY_PUBLISHED));
      } else if (isUnpublished() && previousState == State.PUBLISHED) {
        addEvent(new BlogEntryEvent(this, BlogEntryEvent.BLOG_ENTRY_UNPUBLISHED));
      }
    }
  }
    //#blogentry.java:888: end of method: void net.sourceforge.pebble.domain.BlogEntry.setState(State)

  public String toString() {
    return getGuid() + ":" + super.hashCode();
    //#blogentry.java:891: method: String net.sourceforge.pebble.domain.BlogEntry.toString()
    //#input(String toString()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(String toString()): __Descendant_Table[others]
    //#input(String toString()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(String toString()): __Dispatch_Table.getGuid()Ljava/lang/String;
    //#input(String toString()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(String toString()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String toString()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(String toString()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(String toString()): this
    //#input(String toString()): this.__Tag
    //#input(String toString()): this.blog
    //#input(String toString()): this.blog.__Tag
    //#input(String toString()): this.blog.id
    //#input(String toString()): this.id
    //#output(String toString()): return_value
    //#pre[2] (String toString()): this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (String toString()): this.blog != null
    //#pre[4] (String toString()): this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[5] (String toString()): init'ed(this.blog.id)
    //#pre[6] (String toString()): init'ed(this.id)
    //#post(String toString()): return_value != null
    //#unanalyzed(String toString()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String toString()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String toString()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String toString()): Effects-of-calling:getId
    //#blogentry.java:891: end of method: String net.sourceforge.pebble.domain.BlogEntry.toString()
  }

  public TimeZone getTimeZone() {
    return TimeZone.getTimeZone(getTimeZoneId());
    //#blogentry.java:895: method: TimeZone net.sourceforge.pebble.domain.BlogEntry.getTimeZone()
    //#input(TimeZone getTimeZone()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(TimeZone getTimeZone()): __Descendant_Table[others]
    //#input(TimeZone getTimeZone()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(TimeZone getTimeZone()): __Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(TimeZone getTimeZone()): this
    //#input(TimeZone getTimeZone()): this.__Tag
    //#input(TimeZone getTimeZone()): this.blog
    //#input(TimeZone getTimeZone()): this.timeZoneId
    //#output(TimeZone getTimeZone()): return_value
    //#pre[4] (TimeZone getTimeZone()): init'ed(this.timeZoneId)
    //#pre[2] (TimeZone getTimeZone()): (soft) this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (TimeZone getTimeZone()): (soft) this.blog != null
    //#post(TimeZone getTimeZone()): init'ed(return_value)
    //#unanalyzed(TimeZone getTimeZone()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getTimeZoneId
    //#blogentry.java:895: end of method: TimeZone net.sourceforge.pebble.domain.BlogEntry.getTimeZone()
  }

  public String getTimeZoneId() {
    if (this.timeZoneId != null) {
    //#blogentry.java:899: method: String net.sourceforge.pebble.domain.BlogEntry.getTimeZoneId()
    //#input(String getTimeZoneId()): __Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(String getTimeZoneId()): __Descendant_Table[others]
    //#input(String getTimeZoneId()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(String getTimeZoneId()): this
    //#input(String getTimeZoneId()): this.__Tag
    //#input(String getTimeZoneId()): this.blog
    //#input(String getTimeZoneId()): this.timeZoneId
    //#output(String getTimeZoneId()): return_value
    //#pre[4] (String getTimeZoneId()): init'ed(this.timeZoneId)
    //#pre[2] (String getTimeZoneId()): (soft) this.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (String getTimeZoneId()): (soft) this.blog != null
    //#post(String getTimeZoneId()): init'ed(return_value)
    //#test_vector(String getTimeZoneId()): this.timeZoneId: Addr_Set{null}, Inverse{null}
      return timeZoneId;
    } else {
      return getBlog().getTimeZoneId();
    //#blogentry.java:902: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.domain.Blog:getTimeZoneId()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.BlogEntry
    //#    method: String getTimeZoneId()
    //#    unanalyzed callee: String net.sourceforge.pebble.domain.Blog:getTimeZoneId()
    //#blogentry.java:902: end of method: String net.sourceforge.pebble.domain.BlogEntry.getTimeZoneId()
    }
  }

  public void setTimeZoneId(String timeZoneId) {
    this.timeZoneId = timeZoneId;
    //#blogentry.java:907: method: void net.sourceforge.pebble.domain.BlogEntry.setTimeZoneId(String)
    //#input(void setTimeZoneId(String)): this
    //#input(void setTimeZoneId(String)): timeZoneId
    //#output(void setTimeZoneId(String)): this.timeZoneId
    //#post(void setTimeZoneId(String)): this.timeZoneId == timeZoneId
    //#post(void setTimeZoneId(String)): init'ed(this.timeZoneId)
  }
    //#blogentry.java:908: end of method: void net.sourceforge.pebble.domain.BlogEntry.setTimeZoneId(String)

}    //#blogentry.java:: end of class: net.sourceforge.pebble.domain.BlogEntry
