//# 46 errors, 6,882 messages
//#
/*
    //#blog.java:1:1: class: net.sourceforge.pebble.domain.Blog
 * 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 java.io.File;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
import java.util.StringTokenizer;

import javax.servlet.http.HttpServletRequest;

import net.sourceforge.pebble.Configuration;
import net.sourceforge.pebble.Constants;
import net.sourceforge.pebble.PebbleContext;
import net.sourceforge.pebble.PluginProperties;
import net.sourceforge.pebble.aggregator.NewsFeedCache;
import net.sourceforge.pebble.aggregator.NewsFeedEntry;
import net.sourceforge.pebble.api.confirmation.CommentConfirmationStrategy;
import net.sourceforge.pebble.api.confirmation.TrackBackConfirmationStrategy;
import net.sourceforge.pebble.api.decorator.ContentDecorator;
import net.sourceforge.pebble.api.event.EventDispatcher;
import net.sourceforge.pebble.api.event.blog.BlogEvent;
import net.sourceforge.pebble.api.event.blog.BlogListener;
import net.sourceforge.pebble.api.event.blogentry.BlogEntryListener;
import net.sourceforge.pebble.api.event.comment.CommentListener;
import net.sourceforge.pebble.api.event.trackback.TrackBackListener;
import net.sourceforge.pebble.api.permalink.PermalinkProvider;
import net.sourceforge.pebble.confirmation.DefaultConfirmationStrategy;
import net.sourceforge.pebble.dao.CategoryDAO;
import net.sourceforge.pebble.dao.DAOFactory;
import net.sourceforge.pebble.dao.PersistenceException;
import net.sourceforge.pebble.decorator.ContentDecoratorChain;
import net.sourceforge.pebble.decorator.HideUnapprovedResponsesDecorator;
import net.sourceforge.pebble.event.AuditListener;
import net.sourceforge.pebble.event.DefaultEventDispatcher;
import net.sourceforge.pebble.event.EventListenerList;
import net.sourceforge.pebble.event.blogentry.EmailSubscriptionListener;
import net.sourceforge.pebble.index.AuthorIndex;
import net.sourceforge.pebble.index.AuthorIndexListener;
import net.sourceforge.pebble.index.BlogEntryIndex;
import net.sourceforge.pebble.index.BlogEntryIndexListener;
import net.sourceforge.pebble.index.CategoryIndex;
import net.sourceforge.pebble.index.CategoryIndexListener;
import net.sourceforge.pebble.index.EmailSubscriptionList;
import net.sourceforge.pebble.index.ResponseIndex;
import net.sourceforge.pebble.index.ResponseIndexListener;
import net.sourceforge.pebble.index.SearchIndex;
import net.sourceforge.pebble.index.SearchIndexListener;
import net.sourceforge.pebble.index.StaticPageIndex;
import net.sourceforge.pebble.index.TagIndex;
import net.sourceforge.pebble.index.TagIndexListener;
import net.sourceforge.pebble.logging.AbstractLogger;
import net.sourceforge.pebble.logging.CombinedLogFormatLogger;
import net.sourceforge.pebble.permalink.DefaultPermalinkProvider;
import net.sourceforge.pebble.util.StringUtils;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Represents a blog.
 *
 * @author    Simon Brown
 */
public class Blog extends AbstractBlog {

  private static final Log log = LogFactory.getLog(Blog.class);
    //#blog.java:105: method: net.sourceforge.pebble.domain.Blog.net.sourceforge.pebble.domain.Blog__static_init
    //#blog.java:105: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: net.sourceforge.pebble.domain.Blog__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.addCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.clearMessages()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.error(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getAbout()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getApprovedResponses()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getArchives()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getAuthor()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getAuthorIndex()Lnet/sourceforge/pebble/index/AuthorIndex;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogContributors()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogContributorsAsString()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogEntries()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogEntries(Ljava/util/List;)Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogEntryIndex()Lnet/sourceforge/pebble/index/BlogEntryIndex;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogEntryListeners()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForDay(III)Lnet/sourceforge/pebble/domain/Day;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForDay(Ljava/util/Date;)Lnet/sourceforge/pebble/domain/Day;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForFirstMonth()Lnet/sourceforge/pebble/domain/Month;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForNextYear(Lnet/sourceforge/pebble/domain/Year;)Lnet/sourceforge/pebble/domain/Year;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForPreviousYear(Lnet/sourceforge/pebble/domain/Year;)Lnet/sourceforge/pebble/domain/Year;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForThisMonth()Lnet/sourceforge/pebble/domain/Month;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForThisYear()Lnet/sourceforge/pebble/domain/Year;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForToday()Lnet/sourceforge/pebble/domain/Day;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogListeners()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogOwners()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogOwnersAsString()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogPublishers()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogPublishersAsString()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogReaders()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogReadersAsString()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCategories()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCategory(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Category;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCategoryIndex()Lnet/sourceforge/pebble/index/CategoryIndex;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCharacterEncoding()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCommentConfirmationStrategy()Lnet/sourceforge/pebble/api/confirmation/CommentConfirmationStrategy;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCommentConfirmationStrategyName()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCommentListeners()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getContentDecoratorChain()Lnet/sourceforge/pebble/decorator/ContentDecoratorChain;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getContentDecorators()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getContext()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCountry()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getDate()Ljava/util/Date;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getDateOfLastResponse()Ljava/util/Date;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getDefaultProperties()Ljava/util/Properties;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getDescription()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getDomainName()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getEditableTheme()Lnet/sourceforge/pebble/domain/Theme;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getEmail()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getEmailAddresses()Ljava/util/Collection;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getEmailSubscriptionList()Lnet/sourceforge/pebble/index/EmailSubscriptionList;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getEventDispatcher()Lnet/sourceforge/pebble/api/event/EventDispatcher;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getEventDispatcherName()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getEventListenerList()Lnet/sourceforge/pebble/event/EventListenerList;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getFilesDirectory()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getFirstEmailAddress()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getHomePage()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getId()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getImage()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getImagesDirectory()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getIndexesDirectory()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getLanguage()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getLastModified()Ljava/util/Date;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getLocale()Ljava/util/Locale;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getLogger()Lnet/sourceforge/pebble/logging/AbstractLogger;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getLoggerName()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getLogsDirectory()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getLuceneAnalyzer()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getMessages()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getName()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNewsFeedEntries()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNextBlogEntry(Lnet/sourceforge/pebble/domain/BlogEntry;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfApprovedResponses()I
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfBlogEntries()I
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfMessages()I
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfPendingResponses()I
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfPublishedBlogEntries()I
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfRejectedResponses()I
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfResponses()I
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfStaticPages()I
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfUnpublishedBlogEntries()I
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getPendingResponses()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getPermalinkProviderName()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getPluginProperties()Lnet/sourceforge/pebble/PluginProperties;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getPluginPropertiesFile()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getPreviousBlogEntry(Lnet/sourceforge/pebble/domain/BlogEntry;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getProperties()Ljava/util/Properties;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getProtocol()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentApprovedResponses()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentBlogEntries()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentBlogEntries(I)Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentBlogEntriesOnHomePage()I
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentNewsFeedEntries()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentPublishedBlogEntries()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentPublishedBlogEntries(I)Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentPublishedBlogEntries(Ljava/lang/String;)Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentPublishedBlogEntries(Lnet/sourceforge/pebble/domain/Category;)Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentPublishedBlogEntries(Lnet/sourceforge/pebble/domain/Tag;)Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentResponsesOnHomePage()I
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRefererFilterManager()Lnet/sourceforge/pebble/domain/RefererFilterManager;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRejectedResponses()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRelativeUrl()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getResponseIndex()Lnet/sourceforge/pebble/index/ResponseIndex;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRoot()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getSearchIndex()Lnet/sourceforge/pebble/index/SearchIndex;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getSearchIndexDirectory()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getStaticPageIndex()Lnet/sourceforge/pebble/index/StaticPageIndex;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getStringsFromProperty(Ljava/lang/String;)Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTag(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Tag;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTagIndex()Lnet/sourceforge/pebble/index/TagIndex;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTags()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTheme()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getThemeDirectory()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTrackBackConfirmationStrategy()Lnet/sourceforge/pebble/api/confirmation/TrackBackConfirmationStrategy;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTrackBackConfirmationStrategyName()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTrackBackListeners()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getUnpublishedBlogEntries()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getUrl()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getUsersInRole(Ljava/lang/String;)Ljava/util/Collection;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getYears()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.info(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.init()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.initBlogEntryListeners()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.initBlogListeners()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.initCommentListeners()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.initDecorators()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.initEventDispatcher()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.initLogger()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.initTrackBackListeners()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.isConfigured()Z
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.isPrivate()Z
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.isPublic()Z
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.isRichTextEditorForCommentsEnabled()Z
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.isUserInRole(Ljava/lang/String;Ljava/lang/String;)Z
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.loadProperties()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.log(Ljavax/servlet/http/HttpServletRequest;I)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.reindex()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.reindexBlogEntries()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.reindexStaticPages()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.removeCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.removeProperty(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setDate(Ljava/util/Date;)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setEditableTheme(Lnet/sourceforge/pebble/domain/Theme;)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setId(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setPermalinkProvider(Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setProperty(Ljava/lang/String;Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setRecentBlogEntries(Ljava/util/List;)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setRoot(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setRootCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.start()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.stop()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.storeProperties()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.toString()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.truncateMessages()V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.warn(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.Blog__static_init): log
    //#output(net.sourceforge.pebble.domain.Blog__static_init): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#output(net.sourceforge.pebble.domain.Blog__static_init): net/sourceforge/pebble/domain/TimePeriod.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Descendant_Table[net/sourceforge/pebble/domain/Blog] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.domain.Blog__static_init): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.domain.Blog__static_init): net/sourceforge/pebble/domain/TimePeriod.__Descendant_Table[net/sourceforge/pebble/domain/Blog] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.addCategory(Lnet/sourceforge/pebble/domain/Category;)V == &addCategory
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.clearMessages()V == &net/sourceforge/pebble/domain/AbstractBlog.clearMessages
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.equals(Ljava/lang/Object;)Z == &equals
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.error(Ljava/lang/String;)V == &net/sourceforge/pebble/domain/AbstractBlog.error
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getAbout()Ljava/lang/String; == &getAbout
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getApprovedResponses()Ljava/util/List; == &getApprovedResponses
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getArchives()Ljava/util/List; == &getArchives
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getAuthor()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getAuthor
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getAuthorIndex()Lnet/sourceforge/pebble/index/AuthorIndex; == &getAuthorIndex
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog; == &net/sourceforge/pebble/domain/TimePeriod.getBlog
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogContributors()Ljava/util/List; == &getBlogContributors
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogContributorsAsString()Ljava/lang/String; == &getBlogContributorsAsString
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogEntries()Ljava/util/List; == &getBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogEntries(Ljava/util/List;)Ljava/util/List; == &getBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogEntryIndex()Lnet/sourceforge/pebble/index/BlogEntryIndex; == &getBlogEntryIndex
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogEntryListeners()Ljava/util/List; == &getBlogEntryListeners
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForDay(III)Lnet/sourceforge/pebble/domain/Day; == &getBlogForDay
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForDay(Ljava/util/Date;)Lnet/sourceforge/pebble/domain/Day; == &getBlogForDay
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForFirstMonth()Lnet/sourceforge/pebble/domain/Month; == &getBlogForFirstMonth
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month; == &getBlogForMonth
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForNextYear(Lnet/sourceforge/pebble/domain/Year;)Lnet/sourceforge/pebble/domain/Year; == &getBlogForNextYear
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForPreviousYear(Lnet/sourceforge/pebble/domain/Year;)Lnet/sourceforge/pebble/domain/Year; == &getBlogForPreviousYear
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForThisMonth()Lnet/sourceforge/pebble/domain/Month; == &getBlogForThisMonth
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForThisYear()Lnet/sourceforge/pebble/domain/Year; == &getBlogForThisYear
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForToday()Lnet/sourceforge/pebble/domain/Day; == &getBlogForToday
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year; == &getBlogForYear
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogListeners()Ljava/util/List; == &getBlogListeners
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogOwners()Ljava/util/List; == &getBlogOwners
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogOwnersAsString()Ljava/lang/String; == &getBlogOwnersAsString
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogPublishers()Ljava/util/List; == &getBlogPublishers
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogPublishersAsString()Ljava/lang/String; == &getBlogPublishersAsString
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogReaders()Ljava/util/List; == &getBlogReaders
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getBlogReadersAsString()Ljava/lang/String; == &getBlogReadersAsString
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCalendar()Ljava/util/Calendar; == &net/sourceforge/pebble/domain/AbstractBlog.getCalendar
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCategories()Ljava/util/List; == &getCategories
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCategory(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Category; == &getCategory
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCategoryIndex()Lnet/sourceforge/pebble/index/CategoryIndex; == &getCategoryIndex
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCharacterEncoding()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getCharacterEncoding
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCommentConfirmationStrategy()Lnet/sourceforge/pebble/api/confirmation/CommentConfirmationStrategy; == &getCommentConfirmationStrategy
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCommentConfirmationStrategyName()Ljava/lang/String; == &getCommentConfirmationStrategyName
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCommentListeners()Ljava/util/List; == &getCommentListeners
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getContentDecoratorChain()Lnet/sourceforge/pebble/decorator/ContentDecoratorChain; == &getContentDecoratorChain
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getContentDecorators()Ljava/util/List; == &getContentDecorators
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getContext()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getContext
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getCountry()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getCountry
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getDate()Ljava/util/Date; == &net/sourceforge/pebble/domain/TimePeriod.getDate
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getDateOfLastResponse()Ljava/util/Date; == &getDateOfLastResponse
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getDefaultProperties()Ljava/util/Properties; == &getDefaultProperties
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getDescription()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getDescription
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getDomainName()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getDomainName
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getEditableTheme()Lnet/sourceforge/pebble/domain/Theme; == &getEditableTheme
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getEmail()Ljava/lang/String; == &getEmail
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getEmailAddresses()Ljava/util/Collection; == &getEmailAddresses
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getEmailSubscriptionList()Lnet/sourceforge/pebble/index/EmailSubscriptionList; == &getEmailSubscriptionList
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getEventDispatcher()Lnet/sourceforge/pebble/api/event/EventDispatcher; == &getEventDispatcher
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getEventDispatcherName()Ljava/lang/String; == &getEventDispatcherName
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getEventListenerList()Lnet/sourceforge/pebble/event/EventListenerList; == &getEventListenerList
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getFilesDirectory()Ljava/lang/String; == &getFilesDirectory
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getFirstEmailAddress()Ljava/lang/String; == &getFirstEmailAddress
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getHomePage()Ljava/lang/String; == &getHomePage
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getId()Ljava/lang/String; == &getId
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getImage()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getImage
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getImagesDirectory()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getImagesDirectory
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getIndexesDirectory()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getIndexesDirectory
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getLanguage()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getLanguage
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getLastModified()Ljava/util/Date; == &getLastModified
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getLocale()Ljava/util/Locale; == &net/sourceforge/pebble/domain/AbstractBlog.getLocale
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getLogger()Lnet/sourceforge/pebble/logging/AbstractLogger; == &getLogger
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getLoggerName()Ljava/lang/String; == &getLoggerName
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getLogsDirectory()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getLogsDirectory
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getLuceneAnalyzer()Ljava/lang/String; == &getLuceneAnalyzer
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getMessages()Ljava/util/List; == &net/sourceforge/pebble/domain/AbstractBlog.getMessages
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getName()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getName
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNewsFeedEntries()Ljava/util/List; == &getNewsFeedEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNextBlogEntry(Lnet/sourceforge/pebble/domain/BlogEntry;)Lnet/sourceforge/pebble/domain/BlogEntry; == &getNextBlogEntry
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfApprovedResponses()I == &getNumberOfApprovedResponses
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfBlogEntries()I == &getNumberOfBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfMessages()I == &net/sourceforge/pebble/domain/AbstractBlog.getNumberOfMessages
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfPendingResponses()I == &getNumberOfPendingResponses
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfPublishedBlogEntries()I == &getNumberOfPublishedBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfRejectedResponses()I == &getNumberOfRejectedResponses
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfResponses()I == &getNumberOfResponses
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfStaticPages()I == &getNumberOfStaticPages
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getNumberOfUnpublishedBlogEntries()I == &getNumberOfUnpublishedBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getPendingResponses()Ljava/util/List; == &getPendingResponses
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider; == &getPermalinkProvider
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getPermalinkProviderName()Ljava/lang/String; == &getPermalinkProviderName
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getPluginProperties()Lnet/sourceforge/pebble/PluginProperties; == &getPluginProperties
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getPluginPropertiesFile()Ljava/lang/String; == &getPluginPropertiesFile
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getPreviousBlogEntry(Lnet/sourceforge/pebble/domain/BlogEntry;)Lnet/sourceforge/pebble/domain/BlogEntry; == &getPreviousBlogEntry
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getProperties()Ljava/util/Properties; == &net/sourceforge/pebble/domain/AbstractBlog.getProperties
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getProperty
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getProtocol()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getProtocol
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentApprovedResponses()Ljava/util/List; == &getRecentApprovedResponses
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentBlogEntries()Ljava/util/List; == &net/sourceforge/pebble/domain/AbstractBlog.getRecentBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentBlogEntries(I)Ljava/util/List; == &getRecentBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentBlogEntriesOnHomePage()I == &net/sourceforge/pebble/domain/AbstractBlog.getRecentBlogEntriesOnHomePage
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentNewsFeedEntries()Ljava/util/List; == &getRecentNewsFeedEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentPublishedBlogEntries()Ljava/util/List; == &getRecentPublishedBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentPublishedBlogEntries(I)Ljava/util/List; == &getRecentPublishedBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentPublishedBlogEntries(Ljava/lang/String;)Ljava/util/List; == &getRecentPublishedBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentPublishedBlogEntries(Lnet/sourceforge/pebble/domain/Category;)Ljava/util/List; == &getRecentPublishedBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentPublishedBlogEntries(Lnet/sourceforge/pebble/domain/Tag;)Ljava/util/List; == &getRecentPublishedBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRecentResponsesOnHomePage()I == &net/sourceforge/pebble/domain/AbstractBlog.getRecentResponsesOnHomePage
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRefererFilterManager()Lnet/sourceforge/pebble/domain/RefererFilterManager; == &getRefererFilterManager
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRejectedResponses()Ljava/util/List; == &getRejectedResponses
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRelativeUrl()Ljava/lang/String; == &getRelativeUrl
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getResponseIndex()Lnet/sourceforge/pebble/index/ResponseIndex; == &getResponseIndex
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRoot()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getRoot
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category; == &getRootCategory
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getSearchIndex()Lnet/sourceforge/pebble/index/SearchIndex; == &getSearchIndex
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getSearchIndexDirectory()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getSearchIndexDirectory
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getStaticPageIndex()Lnet/sourceforge/pebble/index/StaticPageIndex; == &getStaticPageIndex
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getStringsFromProperty(Ljava/lang/String;)Ljava/util/List; == &getStringsFromProperty
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTag(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Tag; == &getTag
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTagIndex()Lnet/sourceforge/pebble/index/TagIndex; == &getTagIndex
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTags()Ljava/util/List; == &getTags
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTheme()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getTheme
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getThemeDirectory()Ljava/lang/String; == &getThemeDirectory
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTimeZone()Ljava/util/TimeZone; == &net/sourceforge/pebble/domain/AbstractBlog.getTimeZone
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTimeZoneId()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.getTimeZoneId
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTrackBackConfirmationStrategy()Lnet/sourceforge/pebble/api/confirmation/TrackBackConfirmationStrategy; == &getTrackBackConfirmationStrategy
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTrackBackConfirmationStrategyName()Ljava/lang/String; == &getTrackBackConfirmationStrategyName
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getTrackBackListeners()Ljava/util/List; == &getTrackBackListeners
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getUnpublishedBlogEntries()Ljava/util/List; == &getUnpublishedBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getUrl()Ljava/lang/String; == &getUrl
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getUsersInRole(Ljava/lang/String;)Ljava/util/Collection; == &getUsersInRole
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.getYears()Ljava/util/List; == &getYears
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.info(Ljava/lang/String;)V == &net/sourceforge/pebble/domain/AbstractBlog.info
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.init()V == &init
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.initBlogEntryListeners()V == &initBlogEntryListeners
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.initBlogListeners()V == &initBlogListeners
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.initCommentListeners()V == &initCommentListeners
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.initDecorators()V == &initDecorators
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.initEventDispatcher()V == &initEventDispatcher
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.initLogger()V == &initLogger
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.initTrackBackListeners()V == &initTrackBackListeners
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.isConfigured()Z == &net/sourceforge/pebble/domain/AbstractBlog.isConfigured
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.isPrivate()Z == &isPrivate
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.isPublic()Z == &isPublic
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.isRichTextEditorForCommentsEnabled()Z == &isRichTextEditorForCommentsEnabled
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.isUserInRole(Ljava/lang/String;Ljava/lang/String;)Z == &isUserInRole
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.loadProperties()V == &net/sourceforge/pebble/domain/AbstractBlog.loadProperties
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.log(Ljavax/servlet/http/HttpServletRequest;I)V == &log
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.reindex()V == &reindex
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.reindexBlogEntries()V == &reindexBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.reindexStaticPages()V == &reindexStaticPages
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.removeCategory(Lnet/sourceforge/pebble/domain/Category;)V == &removeCategory
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.removeProperty(Ljava/lang/String;)V == &net/sourceforge/pebble/domain/AbstractBlog.removeProperty
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setDate(Ljava/util/Date;)V == &net/sourceforge/pebble/domain/TimePeriod.setDate
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setEditableTheme(Lnet/sourceforge/pebble/domain/Theme;)V == &setEditableTheme
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setId(Ljava/lang/String;)V == &setId
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setPermalinkProvider(Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;)V == &setPermalinkProvider
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setProperty(Ljava/lang/String;Ljava/lang/String;)V == &net/sourceforge/pebble/domain/AbstractBlog.setProperty
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setRecentBlogEntries(Ljava/util/List;)V == &net/sourceforge/pebble/domain/AbstractBlog.setRecentBlogEntries
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setRoot(Ljava/lang/String;)V == &net/sourceforge/pebble/domain/AbstractBlog.setRoot
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.setRootCategory(Lnet/sourceforge/pebble/domain/Category;)V == &setRootCategory
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.start()V == &start
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.stop()V == &stop
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.storeProperties()V == &net/sourceforge/pebble/domain/AbstractBlog.storeProperties
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.toString()Ljava/lang/String; == &net/sourceforge/pebble/domain/AbstractBlog.toString
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.truncateMessages()V == &net/sourceforge/pebble/domain/AbstractBlog.truncateMessages
    //#post(net.sourceforge.pebble.domain.Blog__static_init): __Dispatch_Table.warn(Ljava/lang/String;)V == &net/sourceforge/pebble/domain/AbstractBlog.warn
    //#post(net.sourceforge.pebble.domain.Blog__static_init): init'ed(log)
    //#blog.java:105: end of method: net.sourceforge.pebble.domain.Blog.net.sourceforge.pebble.domain.Blog__static_init

  public static final String ABOUT_KEY = "about";
  public static final String EMAIL_KEY = "email";
  public static final String BLOG_OWNERS_KEY = "blogOwners";
  public static final String BLOG_PUBLISHERS_KEY = "blogPublishers";
  public static final String BLOG_CONTRIBUTORS_KEY = "blogContributors";
  public static final String BLOG_READERS_KEY = "blogReaders";
  public static final String PRIVATE_KEY = "private";
  public static final String LUCENE_ANALYZER_KEY = "luceneAnalyzer";
  public static final String CONTENT_DECORATORS_KEY = "decorators";
  public static final String BLOG_LISTENERS_KEY = "blogListeners";
  public static final String BLOG_ENTRY_LISTENERS_KEY = "blogEntryListeners";
  public static final String COMMENT_LISTENERS_KEY = "commentListeners";
  public static final String TRACKBACK_LISTENERS_KEY = "trackBackListeners";
  public static final String EVENT_DISPATCHER_KEY = "eventDispatcher";
  public static final String LOGGER_KEY = "logger";
  public static final String PERMALINK_PROVIDER_KEY = "permalinkProviderName";
  public static final String COMMENT_CONFIRMATION_STRATEGY_KEY = "commentConfirmationStrategy";
  public static final String TRACKBACK_CONFIRMATION_STRATEGY_KEY = "trackBackConfirmationStrategy";
  public static final String RICH_TEXT_EDITOR_FOR_COMMENTS_ENABLED_KEY = "richTextEditorForCommentsEnabled";
  public static final String HOME_PAGE_KEY = "homePage";

  /** the ID of this blog */
  private String id = "default";

  /** the collection of Year instance that this root blog is managing */
  private List<Year> years;

  /** the root category associated with this blog */
  private Category rootCategory;

  /** the referer filter associated with this blog */
  private RefererFilterManager refererFilterManager;

  /** the editable theme belonging to this blog */
  private Theme editableTheme;

  /** the permalink provider in use */
  private PermalinkProvider permalinkProvider;

  /** the log used to log referers, requests, etc */
  private AbstractLogger logger;

  /** the decorator chain associated with this blog */
  private ContentDecoratorChain decoratorChain;

  private CommentConfirmationStrategy commentConfirmationStrategy;
  private TrackBackConfirmationStrategy trackBackConfirmationStrategy;

  /** the event dispatcher */
  private EventDispatcher eventDispatcher;

  /** the event listener list */
  private EventListenerList eventListenerList;

  /** the plugin properties */
  private PluginProperties pluginProperties;

  private SearchIndex searchIndex;
  private BlogEntryIndex blogEntryIndex;
  private ResponseIndex responseIndex;
  private TagIndex tagIndex;
  private CategoryIndex categoryIndex;
  private AuthorIndex authorIndex;
  private StaticPageIndex staticPageIndex;

  private EmailSubscriptionList emailSubscriptionList;

  /**
   * Creates a new Blog instance, based at the specified location.
   *
   * @param root    an absolute path pointing to the root directory of the blog
   */
  public Blog(String root) {
    super(root);
    //#blog.java:180: method: void net.sourceforge.pebble.domain.Blog.net.sourceforge.pebble.domain.Blog(String)
    //#input(void net.sourceforge.pebble.domain.Blog(String)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void net.sourceforge.pebble.domain.Blog(String)): __Descendant_Table[others]
    //#input(void net.sourceforge.pebble.domain.Blog(String)): __Dispatch_Table.init()V
    //#input(void net.sourceforge.pebble.domain.Blog(String)): root
    //#input(void net.sourceforge.pebble.domain.Blog(String)): this
    //#input(void net.sourceforge.pebble.domain.Blog(String)): this.__Tag
    //#output(void net.sourceforge.pebble.domain.Blog(String)): new LinkedList(AbstractBlog#1) num objects
    //#output(void net.sourceforge.pebble.domain.Blog(String)): this.__Tag
    //#output(void net.sourceforge.pebble.domain.Blog(String)): this.blog
    //#output(void net.sourceforge.pebble.domain.Blog(String)): this.id
    //#output(void net.sourceforge.pebble.domain.Blog(String)): this.messages
    //#output(void net.sourceforge.pebble.domain.Blog(String)): this.root
    //#new obj(void net.sourceforge.pebble.domain.Blog(String)): new LinkedList(AbstractBlog#1)
    //#pre[1] (void net.sourceforge.pebble.domain.Blog(String)): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#post(void net.sourceforge.pebble.domain.Blog(String)): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#post(void net.sourceforge.pebble.domain.Blog(String)): init'ed(this.blog)
    //#post(void net.sourceforge.pebble.domain.Blog(String)): init'ed(this.id)
    //#post(void net.sourceforge.pebble.domain.Blog(String)): init'ed(this.messages)
    //#post(void net.sourceforge.pebble.domain.Blog(String)): init'ed(this.root)
    //#post(void net.sourceforge.pebble.domain.Blog(String)): new LinkedList(AbstractBlog#1) num objects == 1
    //#unanalyzed(void net.sourceforge.pebble.domain.Blog(String)): Effects-of-calling:java.util.LinkedList

    // probably Blog should be made a final class if init is called from here - 
    // see javadoc comment on AbstractBlog.init() for reasons
    init();
    //#blog.java:184: Warning: call too complex - analysis skipped
    //#    -- call on void init()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void net.sourceforge.pebble.domain.Blog(String)
    //#    unanalyzed callee: void init()
  }
    //#blog.java:185: end of method: void net.sourceforge.pebble.domain.Blog.net.sourceforge.pebble.domain.Blog(String)

  /**
   * Initialize this blog - prepare it for use.
   * Note: As this blog instance is passed to the various participants while
   * it is being initialized, this method is dependent on the correct order
   * of calls: Keep in mind that 'this' is only partly initialized until the
   * end of this method...
   */

  protected void init() {
    super.init();
    //#blog.java:196: method: void net.sourceforge.pebble.domain.Blog.init()
    //#blog.java:196: Warning: suspicious precondition
    //#    the precondition for net/sourceforge/pebble/dao/DAOFactory.configuredFactory.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void init()
    //#    suspicious precondition index: [2]
    //#    Attribs:  Soft
    //#input(void init()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void init()): __Descendant_Table[others]
    //#input(void init()): __Dispatch_Table.error(Ljava/lang/String;)V
    //#input(void init()): __Dispatch_Table.getBlogEntryListeners()Ljava/util/List;
    //#input(void init()): __Dispatch_Table.getBlogForDay(III)Lnet/sourceforge/pebble/domain/Day;
    //#input(void init()): __Dispatch_Table.getBlogForDay(Ljava/util/Date;)Lnet/sourceforge/pebble/domain/Day;
    //#input(void init()): __Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month;
    //#input(void init()): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(void init()): __Dispatch_Table.getBlogListeners()Ljava/util/List;
    //#input(void init()): __Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#input(void init()): __Dispatch_Table.getCategory(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Category;
    //#input(void init()): __Dispatch_Table.getCommentConfirmationStrategyName()Ljava/lang/String;
    //#input(void init()): __Dispatch_Table.getCommentListeners()Ljava/util/List;
    //#input(void init()): __Dispatch_Table.getContentDecorators()Ljava/util/List;
    //#input(void init()): __Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(void init()): __Dispatch_Table.getDefaultProperties()Ljava/util/Properties;
    //#input(void init()): __Dispatch_Table.getEventDispatcherName()Ljava/lang/String;
    //#input(void init()): __Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(void init()): __Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(void init()): __Dispatch_Table.getLoggerName()Ljava/lang/String;
    //#input(void init()): __Dispatch_Table.getPermalinkProviderName()Ljava/lang/String;
    //#input(void init()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(void init()): __Dispatch_Table.getRoot()Ljava/lang/String;
    //#input(void init()): __Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(void init()): __Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(void init()): __Dispatch_Table.getTrackBackConfirmationStrategyName()Ljava/lang/String;
    //#input(void init()): __Dispatch_Table.getTrackBackListeners()Ljava/util/List;
    //#input(void init()): __Dispatch_Table.loadProperties()V
    //#input(void init()): __Dispatch_Table.setPermalinkProvider(Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;)V
    //#input(void init()): __Dispatch_Table.warn(Ljava/lang/String;)V
    //#input(void init()): log
    //#input(void init()): net/sourceforge/pebble/api/confirmation/CommentConfirmationStrategy.__Descendant_Table[net/sourceforge/pebble/api/confirmation/CommentConfirmationStrategy]
    //#input(void init()): net/sourceforge/pebble/api/confirmation/CommentConfirmationStrategy.__Descendant_Table[net/sourceforge/pebble/confirmation/AbstractConfirmationStrategy]
    //#input(void init()): net/sourceforge/pebble/api/confirmation/CommentConfirmationStrategy.__Descendant_Table[net/sourceforge/pebble/confirmation/DefaultConfirmationStrategy]
    //#input(void init()): net/sourceforge/pebble/api/confirmation/CommentConfirmationStrategy.__Descendant_Table[net/sourceforge/pebble/confirmation/ImageCaptchaConfirmationStrategy]
    //#input(void init()): net/sourceforge/pebble/api/confirmation/CommentConfirmationStrategy.__Descendant_Table[net/sourceforge/pebble/confirmation/NoOpConfirmationStrategy]
    //#input(void init()): net/sourceforge/pebble/api/confirmation/CommentConfirmationStrategy.__Descendant_Table[net/sourceforge/pebble/confirmation/SimpleMathsConfirmationStrategy]
    //#input(void init()): net/sourceforge/pebble/api/confirmation/CommentConfirmationStrategy.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/api/confirmation/TrackBackConfirmationStrategy.__Descendant_Table[net/sourceforge/pebble/api/confirmation/TrackBackConfirmationStrategy]
    //#input(void init()): net/sourceforge/pebble/api/confirmation/TrackBackConfirmationStrategy.__Descendant_Table[net/sourceforge/pebble/confirmation/AbstractConfirmationStrategy]
    //#input(void init()): net/sourceforge/pebble/api/confirmation/TrackBackConfirmationStrategy.__Descendant_Table[net/sourceforge/pebble/confirmation/DefaultConfirmationStrategy]
    //#input(void init()): net/sourceforge/pebble/api/confirmation/TrackBackConfirmationStrategy.__Descendant_Table[net/sourceforge/pebble/confirmation/ImageCaptchaConfirmationStrategy]
    //#input(void init()): net/sourceforge/pebble/api/confirmation/TrackBackConfirmationStrategy.__Descendant_Table[net/sourceforge/pebble/confirmation/NoOpConfirmationStrategy]
    //#input(void init()): net/sourceforge/pebble/api/confirmation/TrackBackConfirmationStrategy.__Descendant_Table[net/sourceforge/pebble/confirmation/SimpleMathsConfirmationStrategy]
    //#input(void init()): net/sourceforge/pebble/api/confirmation/TrackBackConfirmationStrategy.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/api/decorator/ContentDecorator.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/api/decorator/ContentDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/api/event/EventDispatcher.__Descendant_Table[net/sourceforge/pebble/api/event/EventDispatcher]
    //#input(void init()): net/sourceforge/pebble/api/event/EventDispatcher.__Descendant_Table[net/sourceforge/pebble/event/DefaultEventDispatcher]
    //#input(void init()): net/sourceforge/pebble/api/event/EventDispatcher.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/api/event/EventDispatcher.__Dispatch_Table.setEventListenerList(Lnet/sourceforge/pebble/event/EventListenerList;)V
    //#input(void init()): net/sourceforge/pebble/api/event/blog/BlogListener.__Descendant_Table[net/sourceforge/pebble/api/event/blog/BlogListener]
    //#input(void init()): net/sourceforge/pebble/api/event/blog/BlogListener.__Descendant_Table[net/sourceforge/pebble/event/blog/PebbleAPIBlogEntryAggregator]
    //#input(void init()): net/sourceforge/pebble/api/event/blog/BlogListener.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/api/event/blogentry/BlogEntryListener.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/api/event/comment/CommentListener.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/api/event/trackback/TrackBackListener.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(void init()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/dao/CategoryDAO.__Descendant_Table[net/sourceforge/pebble/dao/CategoryDAO]
    //#input(void init()): net/sourceforge/pebble/dao/CategoryDAO.__Descendant_Table[net/sourceforge/pebble/dao/file/FileCategoryDAO]
    //#input(void init()): net/sourceforge/pebble/dao/CategoryDAO.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/dao/CategoryDAO.__Dispatch_Table.getCategories(Lnet/sourceforge/pebble/domain/Blog;)Lnet/sourceforge/pebble/domain/Category;
    //#input(void init()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[net/sourceforge/pebble/dao/DAOFactory]
    //#input(void init()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[net/sourceforge/pebble/dao/file/FileDAOFactory]
    //#input(void init()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/dao/DAOFactory.__Dispatch_Table.getCategoryDAO()Lnet/sourceforge/pebble/dao/CategoryDAO;
    //#input(void init()): net/sourceforge/pebble/dao/DAOFactory.__Dispatch_Table.getRefererFilterDAO()Lnet/sourceforge/pebble/dao/RefererFilterDAO;
    //#input(void init()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory
    //#input(void init()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory.__Tag
    //#input(void init()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory.categoryDAO
    //#input(void init()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory.refererFilterDAO
    //#input(void init()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory.refererFilterDAO.__Tag
    //#input(void init()): net/sourceforge/pebble/dao/RefererFilterDAO.__Descendant_Table[net/sourceforge/pebble/dao/RefererFilterDAO]
    //#input(void init()): net/sourceforge/pebble/dao/RefererFilterDAO.__Descendant_Table[net/sourceforge/pebble/dao/file/FileRefererFilterDAO]
    //#input(void init()): net/sourceforge/pebble/dao/RefererFilterDAO.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/dao/RefererFilterDAO.__Dispatch_Table.getRefererFilters(Lnet/sourceforge/pebble/domain/Blog;)Ljava/util/Collection;
    //#input(void init()): net/sourceforge/pebble/dao/file/FileCategoryDAO.__Dispatch_Table.getCategories(Lnet/sourceforge/pebble/domain/Blog;)Lnet/sourceforge/pebble/domain/Category;
    //#input(void init()): net/sourceforge/pebble/dao/file/FileDAOFactory.__Dispatch_Table.getCategoryDAO()Lnet/sourceforge/pebble/dao/CategoryDAO;
    //#input(void init()): net/sourceforge/pebble/dao/file/FileDAOFactory.__Dispatch_Table.getRefererFilterDAO()Lnet/sourceforge/pebble/dao/RefererFilterDAO;
    //#input(void init()): net/sourceforge/pebble/dao/file/FileRefererFilterDAO.__Dispatch_Table.getRefererFilters(Lnet/sourceforge/pebble/domain/Blog;)Ljava/util/Collection;
    //#input(void init()): net/sourceforge/pebble/dao/file/FileRefererFilterDAO.log
    //#input(void init()): net/sourceforge/pebble/decorator/AbstractTagsDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/BlogCategoriesDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/BlogTagsDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/ContentDecoratorChain.__Descendant_Table[net/sourceforge/pebble/decorator/ContentDecoratorChain]
    //#input(void init()): net/sourceforge/pebble/decorator/ContentDecoratorChain.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/decorator/ContentDecoratorChain.__Dispatch_Table.add(Lnet/sourceforge/pebble/api/decorator/ContentDecorator;)V
    //#input(void init()): net/sourceforge/pebble/decorator/ContentDecoratorChain.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/ContentDecoratorSupport.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/DisableCommentsDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/DisableResponseDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/DisableTrackBacksDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/EntryToPdfDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/EscapeMarkupDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/ExcerptDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/HideUnapprovedResponsesDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/HtmlDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/NoFollowDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/PhotoDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/RadeoxDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/ReadMoreDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/RelatedPostsDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/RelativeUriDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/SocialBookmarksDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/StaticPageTagsDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/TechnoratiTagsDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/decorator/TrackBackAutoDiscoveryDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/AbstractBlog]
    //#input(void init()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void init()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/MultiBlog]
    //#input(void init()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(void init()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getDefaultProperties()Ljava/util/Properties;
    //#input(void init()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(void init()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(void init()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getRoot()Ljava/lang/String;
    //#input(void init()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(void init()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(void init()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.loadProperties()V
    //#input(void init()): net/sourceforge/pebble/domain/AbstractBlog.log
    //#input(void init()): net/sourceforge/pebble/domain/Category.__Descendant_Table[net/sourceforge/pebble/domain/Category]
    //#input(void init()): net/sourceforge/pebble/domain/Category.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.addBlogEntry(Ljava/lang/String;)V
    //#input(void init()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.addSubCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(void init()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void init()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getParent()Lnet/sourceforge/pebble/domain/Category;
    //#input(void init()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getSubCategories()Ljava/util/List;
    //#input(void init()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.isRootCategory()Z
    //#input(void init()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void init()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setId(Ljava/lang/String;)V
    //#input(void init()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setParent(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(void init()): net/sourceforge/pebble/domain/CategoryBuilder.__Descendant_Table[net/sourceforge/pebble/domain/CategoryBuilder]
    //#input(void init()): net/sourceforge/pebble/domain/CategoryBuilder.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.addCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(void init()): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.getCategory(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Category;
    //#input(void init()): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category;
    //#input(void init()): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(void init()): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.addPublishedBlogEntry(Ljava/lang/String;)V
    //#input(void init()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.addUnpublishedBlogEntry(Ljava/lang/String;)V
    //#input(void init()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void init()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(void init()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(void init()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(void init()): net/sourceforge/pebble/domain/Message.__Descendant_Table[net/sourceforge/pebble/domain/Message]
    //#input(void init()): net/sourceforge/pebble/domain/Message.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void init()): net/sourceforge/pebble/domain/MessageType.ERROR
    //#input(void init()): net/sourceforge/pebble/domain/MessageType.WARN
    //#input(void init()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(void init()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void init()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForDay(I)Lnet/sourceforge/pebble/domain/Day;
    //#input(void init()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(void init()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(void init()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(void init()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(void init()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(void init()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getDefaultProperties()Ljava/util/Properties;
    //#input(void init()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(void init()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(void init()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getRoot()Ljava/lang/String;
    //#input(void init()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(void init()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(void init()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.loadProperties()V
    //#input(void init()): net/sourceforge/pebble/domain/RefererFilter.__Descendant_Table[net/sourceforge/pebble/domain/RefererFilter]
    //#input(void init()): net/sourceforge/pebble/domain/RefererFilter.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/domain/RefererFilter.__Dispatch_Table.setExpression(Ljava/lang/String;)V
    //#input(void init()): net/sourceforge/pebble/domain/RefererFilter.__Dispatch_Table.setId(J)V
    //#input(void init()): net/sourceforge/pebble/domain/State.APPROVED
    //#input(void init()): net/sourceforge/pebble/domain/State.PENDING
    //#input(void init()): net/sourceforge/pebble/domain/State.REJECTED
    //#input(void init()): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/domain/Tag]
    //#input(void init()): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/index/IndexedTag]
    //#input(void init()): net/sourceforge/pebble/domain/Tag.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/domain/Tag.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(void init()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(void init()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void init()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(void init()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(void init()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(void init()): net/sourceforge/pebble/event/DefaultEventDispatcher.__Dispatch_Table.setEventListenerList(Lnet/sourceforge/pebble/event/EventListenerList;)V
    //#input(void init()): net/sourceforge/pebble/event/EventListenerList.__Descendant_Table[net/sourceforge/pebble/event/EventListenerList]
    //#input(void init()): net/sourceforge/pebble/event/EventListenerList.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/event/EventListenerList.__Dispatch_Table.addBlogEntryListener(Lnet/sourceforge/pebble/api/event/blogentry/BlogEntryListener;)V
    //#input(void init()): net/sourceforge/pebble/event/EventListenerList.__Dispatch_Table.addBlogListener(Lnet/sourceforge/pebble/api/event/blog/BlogListener;)V
    //#input(void init()): net/sourceforge/pebble/event/EventListenerList.__Dispatch_Table.addCommentListener(Lnet/sourceforge/pebble/api/event/comment/CommentListener;)V
    //#input(void init()): net/sourceforge/pebble/event/EventListenerList.__Dispatch_Table.addTrackBackListener(Lnet/sourceforge/pebble/api/event/trackback/TrackBackListener;)V
    //#input(void init()): net/sourceforge/pebble/event/EventListenerList.log
    //#input(void init()): net/sourceforge/pebble/index/AuthorIndex.log
    //#input(void init()): net/sourceforge/pebble/index/BlogEntryIndex.log
    //#input(void init()): net/sourceforge/pebble/index/CategoryIndex.log
    //#input(void init()): net/sourceforge/pebble/index/EmailSubscriptionList.log
    //#input(void init()): net/sourceforge/pebble/index/IndexedTag.__Descendant_Table[net/sourceforge/pebble/index/IndexedTag]
    //#input(void init()): net/sourceforge/pebble/index/IndexedTag.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.addBlogEntry(Ljava/lang/String;)V
    //#input(void init()): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.calculateRank([I)V
    //#input(void init()): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.getNumberOfBlogEntries()I
    //#input(void init()): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(void init()): net/sourceforge/pebble/index/ResponseIndex.log
    //#input(void init()): net/sourceforge/pebble/index/StaticPageIndex.log
    //#input(void init()): net/sourceforge/pebble/index/TagIndex.__Descendant_Table[net/sourceforge/pebble/index/TagIndex]
    //#input(void init()): net/sourceforge/pebble/index/TagIndex.__Descendant_Table[others]
    //#input(void init()): net/sourceforge/pebble/index/TagIndex.__Dispatch_Table.getTag(Ljava/lang/String;)Lnet/sourceforge/pebble/index/IndexedTag;
    //#input(void init()): net/sourceforge/pebble/index/TagIndex.log
    //#input(void init()): this
    //#input(void init()): this.__Tag
    //#input(void init()): this.decoratorChain.__Tag
    //#input(void init()): this.eventDispatcher.__Tag
    //#input(void init()): this.eventListenerList.__Tag
    //#input(void init()): this.messages
    //#input(void init()): this.root
    //#input(void init()): this.rootCategory
    //#input(void init()): this.rootCategory...__Tag
    //#input(void init()): this.rootCategory.__Tag
    //#output(void init()): new ArrayList(BlogEntryIndex#1) num objects
    //#output(void init()): new ArrayList(BlogEntryIndex#2) num objects
    //#output(void init()): new ArrayList(BlogEntryIndex#3) num objects
    //#output(void init()): new ArrayList(Category#1) num objects
    //#output(void init()): new ArrayList(Category#2) num objects
    //#output(void init()): new ArrayList(Category#3) num objects
    //#output(void init()): new ArrayList(ContentDecoratorChain#1) num objects
    //#output(void init()): new ArrayList(EventListenerList#1) num objects
    //#output(void init()): new ArrayList(EventListenerList#2) num objects
    //#output(void init()): new ArrayList(EventListenerList#3) num objects
    //#output(void init()): new ArrayList(EventListenerList#4) num objects
    //#output(void init()): new ArrayList(ResponseIndex#1) num objects
    //#output(void init()): new ArrayList(ResponseIndex#2) num objects
    //#output(void init()): new ArrayList(ResponseIndex#3) num objects
    //#output(void init()): new ArrayList(TagIndex#2) num objects
    //#output(void init()): new ArrayList(getRefererFilters#1) num objects
    //#output(void init()): new ArrayList(init#5) num objects
    //#output(void init()): new ArrayList(readIndex#1) num objects
    //#output(void init()): new ArrayList(recalculateTagRankings#2) num objects
    //#output(void init()): new AuthorIndex(init#11) num objects
    //#output(void init()): this.authorIndex.__Tag
    //#output(void init()): this.authorIndex.authors
    //#output(void init()): this.authorIndex.blog
    //#output(void init()): new BlogEntryIndex(init#7) num objects
    //#output(void init()): this.blogEntryIndex.__Tag
    //#output(void init()): this.blogEntryIndex.blog
    //#output(void init()): this.blogEntryIndex.indexEntries
    //#output(void init()): this.blogEntryIndex.publishedIndexEntries
    //#output(void init()): this.blogEntryIndex.unpublishedIndexEntries
    //#output(void init()): new Category(getCategory#2*) num objects
    //#output(void init()): new Category(getCategory#2*).__Tag
    //#output(void init()): new Category(getCategory#2*).blog
    //#output(void init()): new Category(getCategory#2*).blogEntries
    //#output(void init()): new Category(getCategory#2*).id
    //#output(void init()): new Category(getCategory#2*).name
    //#output(void init()): new Category(getCategory#2*).parent
    //#output(void init()): new Category(getCategory#2*).subCategories
    //#output(void init()): new Category(getCategory#2*).tags
    //#output(void init()): new Category(getCategory#2*).tagsAsList
    //#output(void init()): new Category(getCategory#3*) num objects
    //#output(void init()): new Category(getCategory#3*).__Tag
    //#output(void init()): new Category(getCategory#3*).blog
    //#output(void init()): new Category(getCategory#3*).blogEntries
    //#output(void init()): new Category(getCategory#3*).id
    //#output(void init()): new Category(getCategory#3*).name
    //#output(void init()): new Category(getCategory#3*).parent
    //#output(void init()): new Category(getCategory#3*).subCategories
    //#output(void init()): new Category(getCategory#3*).tags
    //#output(void init()): new Category(getCategory#3*).tagsAsList
    //#output(void init()): new CategoryIndex(init#10) num objects
    //#output(void init()): this.categoryIndex.__Tag
    //#output(void init()): this.categoryIndex.blog
    //#output(void init()): new CombinedLogFormatLogger(initLogger#4) num objects
    //#output(void init()): new ContentDecoratorChain(init#13) num objects
    //#output(void init()): this.decoratorChain.__Tag
    //#output(void init()): this.decoratorChain.blog
    //#output(void init()): this.decoratorChain.decorators
    //#output(void init()): new DefaultConfirmationStrategy(init#15) num objects
    //#output(void init()): new DefaultConfirmationStrategy(init#15).__Tag
    //#output(void init()): new DefaultConfirmationStrategy(init#17) num objects
    //#output(void init()): new DefaultConfirmationStrategy(init#17).__Tag
    //#output(void init()): new DefaultEventDispatcher(initEventDispatcher#2) num objects
    //#output(void init()): new DefaultEventDispatcher(initEventDispatcher#2).__Tag
    //#output(void init()): new DefaultEventDispatcher(initEventDispatcher#2).eventListenerList
    //#output(void init()): new DefaultPermalinkProvider(init#2) num objects
    //#output(void init()): new DefaultPermalinkProvider(init#2).__Tag
    //#output(void init()): new EmailSubscriptionList(init#18) num objects
    //#output(void init()): this.emailSubscriptionList.__Tag
    //#output(void init()): this.emailSubscriptionList.blog
    //#output(void init()): this.emailSubscriptionList.emailAddresses
    //#output(void init()): new EventListenerList(initEventDispatcher#1) num objects
    //#output(void init()): this.eventListenerList.__Tag
    //#output(void init()): this.eventListenerList.blogEntryListeners
    //#output(void init()): this.eventListenerList.blogListeners
    //#output(void init()): this.eventListenerList.commentListeners
    //#output(void init()): this.eventListenerList.trackBackListeners
    //#output(void init()): new HashMap(AuthorIndex#1) num objects
    //#output(void init()): new HashMap(StaticPageIndex#1) num objects
    //#output(void init()): new HashMap(TagIndex#1) num objects
    //#output(void init()): new LinkedList(EmailSubscriptionList#1) num objects
    //#output(void init()): new PluginProperties(init#4) num objects
    //#output(void init()): new Properties(loadProperties#1) num objects
    //#output(void init()): new RefererFilterManager(init#3) num objects
    //#output(void init()): this.refererFilterManager.__Tag
    //#output(void init()): this.refererFilterManager.filters
    //#output(void init()): this.refererFilterManager.nextId
    //#output(void init()): this.refererFilterManager.rootBlog
    //#output(void init()): new ResponseIndex(init#8) num objects
    //#output(void init()): this.responseIndex.__Tag
    //#output(void init()): this.responseIndex.approvedResponses
    //#output(void init()): this.responseIndex.blog
    //#output(void init()): this.responseIndex.pendingResponses
    //#output(void init()): this.responseIndex.rejectedResponses
    //#output(void init()): new SearchIndex(init#6) num objects
    //#output(void init()): this.searchIndex.__Tag
    //#output(void init()): this.searchIndex.blog
    //#output(void init()): new StaticPageIndex(init#12) num objects
    //#output(void init()): this.staticPageIndex.__Tag
    //#output(void init()): this.staticPageIndex.blog
    //#output(void init()): this.staticPageIndex.index
    //#output(void init()): this.staticPageIndex.lockAttempts
    //#output(void init()): new TagIndex(init#9) num objects
    //#output(void init()): this.tagIndex.__Tag
    //#output(void init()): this.tagIndex.blog
    //#output(void init()): this.tagIndex.orderedTags
    //#output(void init()): this.tagIndex.tags
    //#output(void init()): this.authorIndex
    //#output(void init()): this.blogEntryIndex
    //#output(void init()): this.categoryIndex
    //#output(void init()): this.commentConfirmationStrategy
    //#output(void init()): this.decoratorChain
    //#output(void init()): this.emailSubscriptionList
    //#output(void init()): this.eventDispatcher
    //#output(void init()): this.eventDispatcher.eventListenerList
    //#output(void init()): this.eventListenerList
    //#output(void init()): this.logger
    //#output(void init()): this.messages
    //#output(void init()): this.permalinkProvider
    //#output(void init()): this.pluginProperties
    //#output(void init()): this.properties
    //#output(void init()): this.refererFilterManager
    //#output(void init()): this.responseIndex
    //#output(void init()): this.rootCategory
    //#output(void init()): this.searchIndex
    //#output(void init()): this.staticPageIndex
    //#output(void init()): this.tagIndex
    //#output(void init()): this.trackBackConfirmationStrategy
    //#output(void init()): this.years
    //#new obj(void init()): new ArrayList(BlogEntryIndex#1)
    //#new obj(void init()): new ArrayList(BlogEntryIndex#2)
    //#new obj(void init()): new ArrayList(BlogEntryIndex#3)
    //#new obj(void init()): new ArrayList(Category#1)
    //#new obj(void init()): new ArrayList(Category#2)
    //#new obj(void init()): new ArrayList(Category#3)
    //#new obj(void init()): new ArrayList(ContentDecoratorChain#1)
    //#new obj(void init()): new ArrayList(EventListenerList#1)
    //#new obj(void init()): new ArrayList(EventListenerList#2)
    //#new obj(void init()): new ArrayList(EventListenerList#3)
    //#new obj(void init()): new ArrayList(EventListenerList#4)
    //#new obj(void init()): new ArrayList(ResponseIndex#1)
    //#new obj(void init()): new ArrayList(ResponseIndex#2)
    //#new obj(void init()): new ArrayList(ResponseIndex#3)
    //#new obj(void init()): new ArrayList(TagIndex#2)
    //#new obj(void init()): new ArrayList(getRefererFilters#1)
    //#new obj(void init()): new ArrayList(init#5)
    //#new obj(void init()): new ArrayList(readIndex#1)
    //#new obj(void init()): new ArrayList(recalculateTagRankings#2)
    //#new obj(void init()): new AuthorIndex(init#11)
    //#new obj(void init()): new BlogEntryIndex(init#7)
    //#new obj(void init()): new Category(getCategory#2*)
    //#new obj(void init()): new Category(getCategory#3*)
    //#new obj(void init()): new CategoryIndex(init#10)
    //#new obj(void init()): new CombinedLogFormatLogger(initLogger#4)
    //#new obj(void init()): new ContentDecoratorChain(init#13)
    //#new obj(void init()): new DefaultConfirmationStrategy(init#15)
    //#new obj(void init()): new DefaultConfirmationStrategy(init#17)
    //#new obj(void init()): new DefaultEventDispatcher(initEventDispatcher#2)
    //#new obj(void init()): new DefaultPermalinkProvider(init#2)
    //#new obj(void init()): new EmailSubscriptionList(init#18)
    //#new obj(void init()): new EventListenerList(initEventDispatcher#1)
    //#new obj(void init()): new HashMap(AuthorIndex#1)
    //#new obj(void init()): new HashMap(StaticPageIndex#1)
    //#new obj(void init()): new HashMap(TagIndex#1)
    //#new obj(void init()): new LinkedList(EmailSubscriptionList#1)
    //#new obj(void init()): new PluginProperties(init#4)
    //#new obj(void init()): new Properties(loadProperties#1)
    //#new obj(void init()): new RefererFilterManager(init#3)
    //#new obj(void init()): new ResponseIndex(init#8)
    //#new obj(void init()): new SearchIndex(init#6)
    //#new obj(void init()): new StaticPageIndex(init#12)
    //#new obj(void init()): new TagIndex(init#9)
    //#pre[13] (void init()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[22] (void init()): init'ed(this.root)
    //#pre[1] (void init()): (soft) net/sourceforge/pebble/dao/DAOFactory.configuredFactory != null
    //#pre[2] (void init()): (soft) net/sourceforge/pebble/dao/DAOFactory.configuredFactory.__Tag in {net/sourceforge/pebble/dao/DAOFactory, net/sourceforge/pebble/dao/file/FileDAOFactory}
    //#pre[3] (void init()): (soft) net/sourceforge/pebble/dao/DAOFactory.configuredFactory.categoryDAO != null
    //#pre[4] (void init()): (soft) net/sourceforge/pebble/dao/DAOFactory.configuredFactory.refererFilterDAO != null
    //#pre[6] (void init()): (soft) net/sourceforge/pebble/dao/file/FileRefererFilterDAO.log != null
    //#pre[7] (void init()): (soft) net/sourceforge/pebble/domain/AbstractBlog.log != null
    //#pre[9] (void init()): (soft) this.messages != null
    //#pre[11] (void init()): (soft) init'ed(this.rootCategory)
    //#presumption(void init()): dao.__Tag@210 in {net/sourceforge/pebble/dao/CategoryDAO, net/sourceforge/pebble/dao/file/FileCategoryDAO}
    //#presumption(void init()): java.lang.Class:forName(...)@199 != null
    //#presumption(void init()): java.lang.Class:forName(...)@232 != null
    //#presumption(void init()): java.lang.Class:forName(...)@241 != null
    //#presumption(void init()): java.lang.Class:newInstance(...).__Tag@200 == net/sourceforge/pebble/api/permalink/PermalinkProvider
    //#presumption(void init()): java.lang.Class:newInstance(...).__Tag@233 in {net/sourceforge/pebble/api/confirmation/CommentConfirmationStrategy, net/sourceforge/pebble/confirmation/AbstractConfirmationStrategy, net/sourceforge/pebble/confirmation/DefaultConfirmationStrategy, net/sourceforge/pebble/confirmation/ImageCaptchaConfirmationStrategy, net/sourceforge/pebble/confirmation/NoOpConfirmationStrategy, net/sourceforge/pebble/confirmation/SimpleMathsConfirmationStrategy}
    //#presumption(void init()): java.lang.Class:newInstance(...).__Tag@242 in {net/sourceforge/pebble/api/confirmation/TrackBackConfirmationStrategy, net/sourceforge/pebble/confirmation/AbstractConfirmationStrategy, net/sourceforge/pebble/confirmation/DefaultConfirmationStrategy, net/sourceforge/pebble/confirmation/ImageCaptchaConfirmationStrategy, net/sourceforge/pebble/confirmation/NoOpConfirmationStrategy, net/sourceforge/pebble/confirmation/SimpleMathsConfirmationStrategy}
    //#presumption(void init()): new DefaultPermalinkProvider(init#2).__Tag@202 == net/sourceforge/pebble/api/permalink/PermalinkProvider
    //#post(void init()): this.authorIndex == &new AuthorIndex(init#11)
    //#post(void init()): this.blogEntryIndex == &new BlogEntryIndex(init#7)
    //#post(void init()): this.categoryIndex == &new CategoryIndex(init#10)
    //#post(void init()): this.commentConfirmationStrategy != null
    //#post(void init()): this.decoratorChain == &new ContentDecoratorChain(init#13)
    //#post(void init()): this.emailSubscriptionList == &new EmailSubscriptionList(init#18)
    //#post(void init()): this.eventDispatcher != null
    //#post(void init()): init'ed(this.eventDispatcher.eventListenerList)
    //#post(void init()): this.eventListenerList == &new EventListenerList(initEventDispatcher#1)
    //#post(void init()): init'ed(this.logger)
    //#post(void init()): init'ed(this.messages)
    //#post(void init()): this.permalinkProvider != null
    //#post(void init()): this.pluginProperties == &new PluginProperties(init#4)
    //#post(void init()): this.properties == &new Properties(loadProperties#1)
    //#post(void init()): this.refererFilterManager == &new RefererFilterManager(init#3)
    //#post(void init()): this.responseIndex == &new ResponseIndex(init#8)
    //#post(void init()): (soft) init'ed(this.rootCategory)
    //#post(void init()): this.searchIndex == &new SearchIndex(init#6)
    //#post(void init()): this.staticPageIndex == &new StaticPageIndex(init#12)
    //#post(void init()): this.tagIndex == &new TagIndex(init#9)
    //#post(void init()): this.trackBackConfirmationStrategy != null
    //#post(void init()): this.years == &new ArrayList(init#5)
    //#post(void init()): new ArrayList(BlogEntryIndex#1) num objects == 1
    //#post(void init()): new ArrayList(BlogEntryIndex#2) num objects == 1
    //#post(void init()): new ArrayList(BlogEntryIndex#3) num objects == 1
    //#post(void init()): new ArrayList(ContentDecoratorChain#1) num objects == 1
    //#post(void init()): new ArrayList(EventListenerList#1) num objects == 1
    //#post(void init()): new ArrayList(EventListenerList#2) num objects == 1
    //#post(void init()): new ArrayList(EventListenerList#3) num objects == 1
    //#post(void init()): new ArrayList(EventListenerList#4) num objects == 1
    //#post(void init()): new ArrayList(ResponseIndex#1) num objects == 1
    //#post(void init()): new ArrayList(ResponseIndex#2) num objects == 1
    //#post(void init()): new ArrayList(ResponseIndex#3) num objects == 1
    //#post(void init()): new ArrayList(TagIndex#2) num objects == 1
    //#post(void init()): new ArrayList(init#5) num objects == 1
    //#post(void init()): new AuthorIndex(init#11) num objects == 1
    //#post(void init()): new BlogEntryIndex(init#7) num objects == 1
    //#post(void init()): new CategoryIndex(init#10) num objects == 1
    //#post(void init()): new ContentDecoratorChain(init#13) num objects == 1
    //#post(void init()): new EmailSubscriptionList(init#18) num objects == 1
    //#post(void init()): new EventListenerList(initEventDispatcher#1) num objects == 1
    //#post(void init()): new HashMap(AuthorIndex#1) num objects == 1
    //#post(void init()): new HashMap(StaticPageIndex#1) num objects == 1
    //#post(void init()): new HashMap(TagIndex#1) num objects == 1
    //#post(void init()): new LinkedList(EmailSubscriptionList#1) num objects == 1
    //#post(void init()): new PluginProperties(init#4) num objects == 1
    //#post(void init()): new Properties(loadProperties#1) num objects == 1
    //#post(void init()): new RefererFilterManager(init#3) num objects == 1
    //#post(void init()): new ResponseIndex(init#8) num objects == 1
    //#post(void init()): new SearchIndex(init#6) num objects == 1
    //#post(void init()): new StaticPageIndex(init#12) num objects == 1
    //#post(void init()): new TagIndex(init#9) num objects == 1
    //#post(void init()): init'ed(new ArrayList(Category#1) num objects)
    //#post(void init()): init'ed(new ArrayList(Category#2) num objects)
    //#post(void init()): init'ed(new ArrayList(Category#3) num objects)
    //#post(void init()): new ArrayList(getRefererFilters#1) num objects <= 1
    //#post(void init()): new ArrayList(readIndex#1) num objects == 3
    //#post(void init()): new ArrayList(recalculateTagRankings#2) num objects <= 1
    //#post(void init()): this.authorIndex.__Tag == net/sourceforge/pebble/index/AuthorIndex
    //#post(void init()): this.authorIndex.authors == &new HashMap(AuthorIndex#1)
    //#post(void init()): this.authorIndex.blog == this
    //#post(void init()): this.authorIndex.blog != null
    //#post(void init()): this.blogEntryIndex.blog == this.authorIndex.blog
    //#post(void init()): this.categoryIndex.blog == this.authorIndex.blog
    //#post(void init()): this.decoratorChain.blog == this.authorIndex.blog
    //#post(void init()): this.emailSubscriptionList.blog == this.authorIndex.blog
    //#post(void init()): this.refererFilterManager.rootBlog == this.authorIndex.blog
    //#post(void init()): this.responseIndex.blog == this.authorIndex.blog
    //#post(void init()): this.searchIndex.blog == this.authorIndex.blog
    //#post(void init()): this.staticPageIndex.blog == this.authorIndex.blog
    //#post(void init()): this.tagIndex.blog == this.authorIndex.blog
    //#post(void init()): this.blogEntryIndex.__Tag == net/sourceforge/pebble/index/BlogEntryIndex
    //#post(void init()): this.blogEntryIndex.indexEntries == &new ArrayList(BlogEntryIndex#1)
    //#post(void init()): this.blogEntryIndex.publishedIndexEntries == &new ArrayList(BlogEntryIndex#2)
    //#post(void init()): this.blogEntryIndex.unpublishedIndexEntries == &new ArrayList(BlogEntryIndex#3)
    //#post(void init()): init'ed(new Category(getCategory#2*) num objects)
    //#post(void init()): init'ed(new Category(getCategory#2*).__Tag)
    //#post(void init()): init'ed(new Category(getCategory#2*).blog)
    //#post(void init()): init'ed(new Category(getCategory#2*).blogEntries)
    //#post(void init()): init'ed(new Category(getCategory#2*).id)
    //#post(void init()): init'ed(new Category(getCategory#2*).name)
    //#post(void init()): init'ed(new Category(getCategory#2*).parent)
    //#post(void init()): init'ed(new Category(getCategory#2*).subCategories)
    //#post(void init()): init'ed(new Category(getCategory#2*).tags)
    //#post(void init()): init'ed(new Category(getCategory#2*).tagsAsList)
    //#post(void init()): init'ed(new Category(getCategory#3*) num objects)
    //#post(void init()): init'ed(new Category(getCategory#3*).__Tag)
    //#post(void init()): init'ed(new Category(getCategory#3*).blog)
    //#post(void init()): init'ed(new Category(getCategory#3*).blogEntries)
    //#post(void init()): init'ed(new Category(getCategory#3*).id)
    //#post(void init()): init'ed(new Category(getCategory#3*).name)
    //#post(void init()): init'ed(new Category(getCategory#3*).parent)
    //#post(void init()): init'ed(new Category(getCategory#3*).subCategories)
    //#post(void init()): init'ed(new Category(getCategory#3*).tags)
    //#post(void init()): init'ed(new Category(getCategory#3*).tagsAsList)
    //#post(void init()): this.categoryIndex.__Tag == net/sourceforge/pebble/index/CategoryIndex
    //#post(void init()): new CombinedLogFormatLogger(initLogger#4) num objects <= 1
    //#post(void init()): this.decoratorChain.__Tag == net/sourceforge/pebble/decorator/ContentDecoratorChain
    //#post(void init()): this.decoratorChain.decorators == &new ArrayList(ContentDecoratorChain#1)
    //#post(void init()): new DefaultConfirmationStrategy(init#15) num objects <= 1
    //#post(void init()): init'ed(new DefaultConfirmationStrategy(init#15).__Tag)
    //#post(void init()): new DefaultConfirmationStrategy(init#17) num objects <= 1
    //#post(void init()): init'ed(new DefaultConfirmationStrategy(init#17).__Tag)
    //#post(void init()): new DefaultEventDispatcher(initEventDispatcher#2) num objects <= 1
    //#post(void init()): init'ed(new DefaultEventDispatcher(initEventDispatcher#2).__Tag)
    //#post(void init()): init'ed(new DefaultEventDispatcher(initEventDispatcher#2).eventListenerList)
    //#post(void init()): new DefaultPermalinkProvider(init#2) num objects <= 1
    //#post(void init()): init'ed(new DefaultPermalinkProvider(init#2).__Tag)
    //#post(void init()): this.emailSubscriptionList.__Tag == net/sourceforge/pebble/index/EmailSubscriptionList
    //#post(void init()): this.emailSubscriptionList.emailAddresses == &new LinkedList(EmailSubscriptionList#1)
    //#post(void init()): this.eventListenerList.__Tag == net/sourceforge/pebble/event/EventListenerList
    //#post(void init()): this.eventListenerList.blogEntryListeners == &new ArrayList(EventListenerList#2)
    //#post(void init()): this.eventListenerList.blogListeners == &new ArrayList(EventListenerList#1)
    //#post(void init()): this.eventListenerList.commentListeners == &new ArrayList(EventListenerList#3)
    //#post(void init()): this.eventListenerList.trackBackListeners == &new ArrayList(EventListenerList#4)
    //#post(void init()): this.refererFilterManager.__Tag == net/sourceforge/pebble/domain/RefererFilterManager
    //#post(void init()): this.refererFilterManager.filters == One-of{&new ArrayList(getRefererFilters#1), undefined}
    //#post(void init()): this.refererFilterManager.filters in Addr_Set{null,&new ArrayList(getRefererFilters#1)}
    //#post(void init()): init'ed(this.refererFilterManager.nextId)
    //#post(void init()): this.responseIndex.__Tag == net/sourceforge/pebble/index/ResponseIndex
    //#post(void init()): this.responseIndex.approvedResponses == &new ArrayList(readIndex#1)
    //#post(void init()): this.responseIndex.pendingResponses == &new ArrayList(readIndex#1)
    //#post(void init()): this.responseIndex.rejectedResponses == &new ArrayList(readIndex#1)
    //#post(void init()): this.searchIndex.__Tag == net/sourceforge/pebble/index/SearchIndex
    //#post(void init()): this.staticPageIndex.__Tag == net/sourceforge/pebble/index/StaticPageIndex
    //#post(void init()): this.staticPageIndex.index == &new HashMap(StaticPageIndex#1)
    //#post(void init()): init'ed(this.staticPageIndex.lockAttempts)
    //#post(void init()): this.tagIndex.__Tag == net/sourceforge/pebble/index/TagIndex
    //#post(void init()): this.tagIndex.orderedTags == One-of{&new ArrayList(TagIndex#2), &new ArrayList(recalculateTagRankings#2)}
    //#post(void init()): this.tagIndex.orderedTags in Addr_Set{&new ArrayList(TagIndex#2),&new ArrayList(recalculateTagRankings#2)}
    //#post(void init()): this.tagIndex.tags == &new HashMap(TagIndex#1)
    //#unanalyzed(void init()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void init()): Effects-of-calling:java.util.Properties
    //#unanalyzed(void init()): Effects-of-calling:java.util.Properties:setProperty
    //#unanalyzed(void init()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void init()): Effects-of-calling:java.lang.String:toLowerCase
    //#unanalyzed(void init()): Effects-of-calling:java.lang.String:replaceAll
    //#unanalyzed(void init()): Effects-of-calling:encode
    //#unanalyzed(void init()): Effects-of-calling:getCategory
    //#unanalyzed(void init()): Effects-of-calling:getSubCategories
    //#unanalyzed(void init()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void init()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void init()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void init()): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void init()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void init()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void init()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void init()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getLocale
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.util.I18n:getMessage
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.domain.Category
    //#unanalyzed(void init()): Effects-of-calling:addCategory
    //#unanalyzed(void init()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void init()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void init()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void init()): Effects-of-calling:getId
    //#unanalyzed(void init()): Effects-of-calling:java.lang.String:lastIndexOf
    //#unanalyzed(void init()): Effects-of-calling:setBlog
    //#unanalyzed(void init()): Effects-of-calling:isRootCategory
    //#unanalyzed(void init()): Effects-of-calling:addSubCategory
    //#unanalyzed(void init()): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void init()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void init()): Effects-of-calling:getConfiguredFactory
    //#unanalyzed(void init()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void init()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void init()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void init()): Effects-of-calling:getStringsFromProperty
    //#unanalyzed(void init()): Effects-of-calling:getTimeZone
    //#unanalyzed(void init()): Effects-of-calling:getLocale
    //#unanalyzed(void init()): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(void init()): Effects-of-calling:java.util.Locale
    //#unanalyzed(void init()): Effects-of-calling:java.util.TimeZone:getTimeZone
    //#unanalyzed(void init()): Effects-of-calling:java.util.Calendar:get
    //#unanalyzed(void init()): Effects-of-calling:getBlogForMonth
    //#unanalyzed(void init()): Effects-of-calling:getBlogForDay
    //#unanalyzed(void init()): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(void init()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void init()): Effects-of-calling:getBlogEntryListeners
    //#unanalyzed(void init()): Effects-of-calling:java.lang.Class:forName
    //#unanalyzed(void init()): Effects-of-calling:java.lang.Class:newInstance
    //#unanalyzed(void init()): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void init()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void init()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void init()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void init()): Effects-of-calling:java.util.List:subList
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.util.SecurityUtils:getUsername
    //#unanalyzed(void init()): Effects-of-calling:java.util.Date
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.event.blogentry.BlogEntryListenerSupport
    //#unanalyzed(void init()): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(void init()): Effects-of-calling:java.lang.Throwable:getMessage
    //#unanalyzed(void init()): Effects-of-calling:java.io.File
    //#unanalyzed(void init()): Effects-of-calling:java.io.File:exists
    //#unanalyzed(void init()): Effects-of-calling:getDefaultProperties
    //#unanalyzed(void init()): Effects-of-calling:java.io.FileInputStream
    //#unanalyzed(void init()): Effects-of-calling:java.util.Properties:load
    //#unanalyzed(void init()): Effects-of-calling:java.io.FileInputStream:close
    //#unanalyzed(void init()): Effects-of-calling:java.lang.Exception:printStackTrace
    //#unanalyzed(void init()): Effects-of-calling:getRefererFilterDAO
    //#unanalyzed(void init()): Effects-of-calling:java.util.Collection:iterator
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.dao.PersistenceException:printStackTrace
    //#unanalyzed(void init()): Effects-of-calling:getRefererFilters
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getIndexesDirectory
    //#unanalyzed(void init()): Effects-of-calling:addPublishedBlogEntry
    //#unanalyzed(void init()): Effects-of-calling:addUnpublishedBlogEntry
    //#unanalyzed(void init()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void init()): Effects-of-calling:java.io.FileReader
    //#unanalyzed(void init()): Effects-of-calling:java.io.BufferedReader
    //#unanalyzed(void init()): Effects-of-calling:java.io.BufferedReader:readLine
    //#unanalyzed(void init()): Effects-of-calling:java.lang.Long:parseLong
    //#unanalyzed(void init()): Effects-of-calling:java.io.BufferedReader:close
    //#unanalyzed(void init()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.index.IndexedTag
    //#unanalyzed(void init()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void init()): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void init()): Effects-of-calling:java.util.Map:values
    //#unanalyzed(void init()): Effects-of-calling:addBlogEntry
    //#unanalyzed(void init()): Effects-of-calling:java.util.Map:size
    //#unanalyzed(void init()): Effects-of-calling:getNumberOfBlogEntries
    //#unanalyzed(void init()): Effects-of-calling:java.lang.Math:round
    //#unanalyzed(void init()): Effects-of-calling:calculateRank
    //#unanalyzed(void init()): Effects-of-calling:java.util.LinkedList
    //#unanalyzed(void init()): Effects-of-calling:org.apache.commons.logging.Log:info
    //#unanalyzed(void init()): Effects-of-calling:java.io.File:mkdirs
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.confirmation.AbstractConfirmationStrategy
    //#unanalyzed(void init()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.decorator.ContentDecoratorSupport
    //#unanalyzed(void init()): Effects-of-calling:getContentDecorators
    //#unanalyzed(void init()): Effects-of-calling:getBlog
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(void init()): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(void init()): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(void init()): Effects-of-calling:setDate
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.api.event.EventDispatcher
    //#unanalyzed(void init()): Effects-of-calling:java.lang.Class:getConstructor
    //#unanalyzed(void init()): Effects-of-calling:java.lang.reflect.Constructor:newInstance
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.logging.CombinedLogFormatLogger
    //#unanalyzed(void init()): Effects-of-calling:java.util.Collections:unmodifiableList
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getRoot
    //#unanalyzed(void init()): Effects-of-calling:java.util.regex.Pattern:compile
    //#unanalyzed(void init()): Effects-of-calling:java.util.ArrayList:add
    //#unanalyzed(void init()): Effects-of-calling:java.util.List:remove
    //#unanalyzed(void init()): Effects-of-calling:getMonth
    //#unanalyzed(void init()): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(void init()): Effects-of-calling:getYear
    //#unanalyzed(void init()): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog

    try {
      Class c = Class.forName(getPermalinkProviderName());
      setPermalinkProvider((PermalinkProvider)c.newInstance());
    } catch (Exception e) {
      error("Could not load permalink provider \"" + getPermalinkProviderName() + "\"");
      e.printStackTrace();
      setPermalinkProvider(new DefaultPermalinkProvider());
    //#blog.java:204: Warning: method not available
    //#    -- call on void net.sourceforge.pebble.permalink.DefaultPermalinkProvider()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void init()
    //#    unanalyzed callee: void net.sourceforge.pebble.permalink.DefaultPermalinkProvider()
    }

    // load categories
    try {
      DAOFactory factory = DAOFactory.getConfiguredFactory();
      CategoryDAO dao = factory.getCategoryDAO();
    //#blog.java:210: Warning: method not available
    //#    -- call on CategoryDAO getCategoryDAO()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void init()
    //#    unanalyzed callee: CategoryDAO getCategoryDAO()
      rootCategory = dao.getCategories(this);
    //#blog.java:211: Warning: method not available
    //#    -- call on Category getCategories(Blog)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void init()
    //#    unanalyzed callee: Category getCategories(Blog)
    } catch (PersistenceException pe) {
      pe.printStackTrace();
    //#blog.java:213: Warning: method not available
    //#    -- call on void net.sourceforge.pebble.dao.PersistenceException:printStackTrace()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void init()
    //#    unanalyzed callee: void net.sourceforge.pebble.dao.PersistenceException:printStackTrace()
    }

    refererFilterManager = new RefererFilterManager(this);
    pluginProperties = new PluginProperties(this);
    //#blog.java:217: Warning: method not available
    //#    -- call on void net.sourceforge.pebble.PluginProperties(Blog)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void init()
    //#    unanalyzed callee: void net.sourceforge.pebble.PluginProperties(Blog)
    years = new ArrayList();

    // create the various indexes for this blog
    searchIndex = new SearchIndex(this);
    blogEntryIndex = new BlogEntryIndex(this);
    responseIndex = new ResponseIndex(this);
    tagIndex = new TagIndex(this);
    categoryIndex = new CategoryIndex(this);
    authorIndex = new AuthorIndex(this);
    staticPageIndex = new StaticPageIndex(this);

    decoratorChain = new ContentDecoratorChain(this);

    try {
      Class c = Class.forName(getCommentConfirmationStrategyName());
      commentConfirmationStrategy = (CommentConfirmationStrategy)c.newInstance();
    } catch (Exception e) {
      error("Could not load comment confirmation strategy \"" + getCommentConfirmationStrategyName() + "\"");
    //#blog.java:235: ?precondition failure
    //#    net/sourceforge/pebble/domain/AbstractBlog.error: this.messages != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void init()
    //#    basic block: bb_9
    //#    assertion: this.messages != null
    //#    callee: void net/sourceforge/pebble/domain/AbstractBlog.error(String)
    //#    callee assertion: this.messages != null
    //#    callee file: abstractblog.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 491
    //#    VN: this.messages
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
      e.printStackTrace();
      commentConfirmationStrategy = new DefaultConfirmationStrategy();
    }

    try {
      Class c = Class.forName(getTrackBackConfirmationStrategyName());
      trackBackConfirmationStrategy = (TrackBackConfirmationStrategy)c.newInstance();
    } catch (Exception e) {
      error("Could not load TrackBack confirmation strategy \"" + getTrackBackConfirmationStrategyName() + "\"");
    //#blog.java:244: ?precondition failure
    //#    net/sourceforge/pebble/domain/AbstractBlog.error: this.messages != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void init()
    //#    basic block: bb_12
    //#    assertion: this.messages != null
    //#    callee: void net/sourceforge/pebble/domain/AbstractBlog.error(String)
    //#    callee assertion: this.messages != null
    //#    callee file: abstractblog.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 491
    //#    VN: this.messages
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
      e.printStackTrace();
      trackBackConfirmationStrategy = new DefaultConfirmationStrategy();
    }

    emailSubscriptionList = new EmailSubscriptionList(this);

    initLogger();
    //#blog.java:251: ?precondition failure
    //#    net/sourceforge/pebble/domain/Blog.initLogger: (soft) this.messages != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void init()
    //#    basic block: bb_13
    //#    assertion: (soft) this.messages != null
    //#    callee: void net/sourceforge/pebble/domain/Blog.initLogger()
    //#    callee assertion: (soft) this.messages != null
    //#    callee file: blog.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 264
    //#    VN: this.messages
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad  Soft
    initEventDispatcher();
    initBlogListeners();
    //#blog.java:253: ?precondition failure
    //#    net/sourceforge/pebble/domain/Blog.initBlogListeners: (soft) this.messages != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void init()
    //#    basic block: bb_13
    //#    assertion: (soft) this.messages != null
    //#    callee: void net/sourceforge/pebble/domain/Blog.initBlogListeners()
    //#    callee assertion: (soft) this.messages != null
    //#    callee file: blog.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 299
    //#    VN: this.messages
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad  Soft
    initBlogEntryListeners();
    //#blog.java:254: ?precondition failure
    //#    net/sourceforge/pebble/domain/Blog.initBlogEntryListeners: (soft) this.messages != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void init()
    //#    basic block: bb_13
    //#    assertion: (soft) this.messages != null
    //#    callee: void net/sourceforge/pebble/domain/Blog.initBlogEntryListeners()
    //#    callee assertion: (soft) this.messages != null
    //#    callee file: blog.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 317
    //#    VN: this.messages
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad  Soft
    initCommentListeners();
    //#blog.java:255: ?precondition failure
    //#    net/sourceforge/pebble/domain/Blog.initCommentListeners: (soft) this.messages != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void init()
    //#    basic block: bb_13
    //#    assertion: (soft) this.messages != null
    //#    callee: void net/sourceforge/pebble/domain/Blog.initCommentListeners()
    //#    callee assertion: (soft) this.messages != null
    //#    callee file: blog.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 356
    //#    VN: this.messages
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad  Soft
    initTrackBackListeners();
    //#blog.java:256: ?precondition failure
    //#    net/sourceforge/pebble/domain/Blog.initTrackBackListeners: (soft) this.messages != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void init()
    //#    basic block: bb_13
    //#    assertion: (soft) this.messages != null
    //#    callee: void net/sourceforge/pebble/domain/Blog.initTrackBackListeners()
    //#    callee assertion: (soft) this.messages != null
    //#    callee file: blog.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 377
    //#    VN: this.messages
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad  Soft
    initDecorators();
    //#blog.java:257: ?precondition failure
    //#    net/sourceforge/pebble/domain/Blog.initDecorators: (soft) this.messages != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void init()
    //#    basic block: bb_13
    //#    assertion: (soft) this.messages != null
    //#    callee: void net/sourceforge/pebble/domain/Blog.initDecorators()
    //#    callee assertion: (soft) this.messages != null
    //#    callee file: blog.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 398
    //#    VN: this.messages
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad  Soft
  }
    //#blog.java:258: end of method: void net.sourceforge.pebble.domain.Blog.init()

  /**
   * Initialises the logger for this blog.
   */
  private void initLogger() {
    log.debug("Initializing logger");
    //#blog.java:264: method: void net.sourceforge.pebble.domain.Blog.initLogger()
    //#blog.java:264: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initLogger()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void initLogger()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void initLogger()): __Descendant_Table[others]
    //#input(void initLogger()): __Dispatch_Table.error(Ljava/lang/String;)V
    //#input(void initLogger()): __Dispatch_Table.getLoggerName()Ljava/lang/String;
    //#input(void initLogger()): log
    //#input(void initLogger()): net/sourceforge/pebble/domain/AbstractBlog.log
    //#input(void initLogger()): net/sourceforge/pebble/domain/Message.__Descendant_Table[net/sourceforge/pebble/domain/Message]
    //#input(void initLogger()): net/sourceforge/pebble/domain/Message.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void initLogger()): net/sourceforge/pebble/domain/MessageType.ERROR
    //#input(void initLogger()): this
    //#input(void initLogger()): this.__Tag
    //#input(void initLogger()): this.messages
    //#input(void initLogger()): this.properties
    //#output(void initLogger()): new CombinedLogFormatLogger(initLogger#4) num objects
    //#output(void initLogger()): this.logger
    //#output(void initLogger()): this.messages
    //#new obj(void initLogger()): new CombinedLogFormatLogger(initLogger#4)
    //#pre[4] (void initLogger()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[5] (void initLogger()): this.properties != null
    //#pre[1] (void initLogger()): (soft) net/sourceforge/pebble/domain/AbstractBlog.log != null
    //#pre[2] (void initLogger()): (soft) this.messages != null
    //#presumption(void initLogger()): java.lang.Class:forName(...)@267 != null
    //#presumption(void initLogger()): java.lang.Class:getConstructor(...)@268 != null
    //#presumption(void initLogger()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#post(void initLogger()): init'ed(this.logger)
    //#post(void initLogger()): init'ed(this.messages)
    //#post(void initLogger()): new CombinedLogFormatLogger(initLogger#4) num objects <= 1
    //#unanalyzed(void initLogger()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void initLogger()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void initLogger()): Effects-of-calling:java.util.List:subList
    //#unanalyzed(void initLogger()): Effects-of-calling:net.sourceforge.pebble.util.SecurityUtils:getUsername
    //#unanalyzed(void initLogger()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void initLogger()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void initLogger()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void initLogger()): Effects-of-calling:java.util.Date
    //#unanalyzed(void initLogger()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void initLogger()): Effects-of-calling:org.apache.commons.logging.Log:error

    try {
      Class c = Class.forName(getLoggerName());
      Constructor cons = c.getConstructor(new Class[] {Blog.class});
      this.logger = (AbstractLogger)cons.newInstance(new Object[] {this});
    } catch (Exception e) {
      error("Could not start logger \"" + getLoggerName() + "\"");
      e.printStackTrace();
      this.logger = new CombinedLogFormatLogger(this);
    //#blog.java:273: Warning: method not available
    //#    -- call on void net.sourceforge.pebble.logging.CombinedLogFormatLogger(Blog)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initLogger()
    //#    unanalyzed callee: void net.sourceforge.pebble.logging.CombinedLogFormatLogger(Blog)
    }
  }
    //#blog.java:275: end of method: void net.sourceforge.pebble.domain.Blog.initLogger()

  /**
   * Initialises the event dispatcher for this blog.
   */
  private void initEventDispatcher() {
    log.debug("Initializing event dispatcher");
    //#blog.java:281: method: void net.sourceforge.pebble.domain.Blog.initEventDispatcher()
    //#blog.java:281: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initEventDispatcher()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void initEventDispatcher()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void initEventDispatcher()): __Descendant_Table[others]
    //#input(void initEventDispatcher()): __Dispatch_Table.getEventDispatcherName()Ljava/lang/String;
    //#input(void initEventDispatcher()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(void initEventDispatcher()): log
    //#input(void initEventDispatcher()): net/sourceforge/pebble/api/event/EventDispatcher.__Descendant_Table[net/sourceforge/pebble/api/event/EventDispatcher]
    //#input(void initEventDispatcher()): net/sourceforge/pebble/api/event/EventDispatcher.__Descendant_Table[net/sourceforge/pebble/event/DefaultEventDispatcher]
    //#input(void initEventDispatcher()): net/sourceforge/pebble/api/event/EventDispatcher.__Descendant_Table[others]
    //#input(void initEventDispatcher()): net/sourceforge/pebble/api/event/EventDispatcher.__Dispatch_Table.setEventListenerList(Lnet/sourceforge/pebble/event/EventListenerList;)V
    //#input(void initEventDispatcher()): net/sourceforge/pebble/event/DefaultEventDispatcher.__Dispatch_Table.setEventListenerList(Lnet/sourceforge/pebble/event/EventListenerList;)V
    //#input(void initEventDispatcher()): this
    //#input(void initEventDispatcher()): this.__Tag
    //#input(void initEventDispatcher()): this.properties
    //#output(void initEventDispatcher()): new ArrayList(EventListenerList#1) num objects
    //#output(void initEventDispatcher()): new ArrayList(EventListenerList#2) num objects
    //#output(void initEventDispatcher()): new ArrayList(EventListenerList#3) num objects
    //#output(void initEventDispatcher()): new ArrayList(EventListenerList#4) num objects
    //#output(void initEventDispatcher()): new DefaultEventDispatcher(initEventDispatcher#2) num objects
    //#output(void initEventDispatcher()): new DefaultEventDispatcher(initEventDispatcher#2).__Tag
    //#output(void initEventDispatcher()): new DefaultEventDispatcher(initEventDispatcher#2).eventListenerList
    //#output(void initEventDispatcher()): new EventListenerList(initEventDispatcher#1) num objects
    //#output(void initEventDispatcher()): this.eventListenerList.__Tag
    //#output(void initEventDispatcher()): this.eventListenerList.blogEntryListeners
    //#output(void initEventDispatcher()): this.eventListenerList.blogListeners
    //#output(void initEventDispatcher()): this.eventListenerList.commentListeners
    //#output(void initEventDispatcher()): this.eventListenerList.trackBackListeners
    //#output(void initEventDispatcher()): this.eventDispatcher
    //#output(void initEventDispatcher()): this.eventDispatcher.eventListenerList
    //#output(void initEventDispatcher()): this.eventListenerList
    //#new obj(void initEventDispatcher()): new ArrayList(EventListenerList#1)
    //#new obj(void initEventDispatcher()): new ArrayList(EventListenerList#2)
    //#new obj(void initEventDispatcher()): new ArrayList(EventListenerList#3)
    //#new obj(void initEventDispatcher()): new ArrayList(EventListenerList#4)
    //#new obj(void initEventDispatcher()): new DefaultEventDispatcher(initEventDispatcher#2)
    //#new obj(void initEventDispatcher()): new EventListenerList(initEventDispatcher#1)
    //#pre[3] (void initEventDispatcher()): (soft) this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[4] (void initEventDispatcher()): (soft) this.properties != null
    //#presumption(void initEventDispatcher()): java.lang.Class:forName(...)@285 != null
    //#presumption(void initEventDispatcher()): java.lang.Class:newInstance(...).__Tag@286 in {net/sourceforge/pebble/api/event/EventDispatcher, net/sourceforge/pebble/event/DefaultEventDispatcher}
    //#presumption(void initEventDispatcher()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#post(void initEventDispatcher()): this.eventDispatcher != null
    //#post(void initEventDispatcher()): init'ed(this.eventDispatcher.eventListenerList)
    //#post(void initEventDispatcher()): this.eventListenerList == &new EventListenerList(initEventDispatcher#1)
    //#post(void initEventDispatcher()): new ArrayList(EventListenerList#1) num objects == 1
    //#post(void initEventDispatcher()): new ArrayList(EventListenerList#2) num objects == 1
    //#post(void initEventDispatcher()): new ArrayList(EventListenerList#3) num objects == 1
    //#post(void initEventDispatcher()): new ArrayList(EventListenerList#4) num objects == 1
    //#post(void initEventDispatcher()): new EventListenerList(initEventDispatcher#1) num objects == 1
    //#post(void initEventDispatcher()): new DefaultEventDispatcher(initEventDispatcher#2) num objects <= 1
    //#post(void initEventDispatcher()): init'ed(new DefaultEventDispatcher(initEventDispatcher#2).__Tag)
    //#post(void initEventDispatcher()): init'ed(new DefaultEventDispatcher(initEventDispatcher#2).eventListenerList)
    //#post(void initEventDispatcher()): this.eventListenerList.__Tag == net/sourceforge/pebble/event/EventListenerList
    //#post(void initEventDispatcher()): this.eventListenerList.blogEntryListeners == &new ArrayList(EventListenerList#2)
    //#post(void initEventDispatcher()): this.eventListenerList.blogListeners == &new ArrayList(EventListenerList#1)
    //#post(void initEventDispatcher()): this.eventListenerList.commentListeners == &new ArrayList(EventListenerList#3)
    //#post(void initEventDispatcher()): this.eventListenerList.trackBackListeners == &new ArrayList(EventListenerList#4)
    //#unanalyzed(void initEventDispatcher()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void initEventDispatcher()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void initEventDispatcher()): Effects-of-calling:net.sourceforge.pebble.api.event.EventDispatcher
    eventListenerList = new EventListenerList();

    try {
      Class c = Class.forName(getEventDispatcherName());
      this.eventDispatcher = (EventDispatcher)c.newInstance();
    } catch (Exception e) {
      e.printStackTrace();
      this.eventDispatcher = new DefaultEventDispatcher();
    }

    eventDispatcher.setEventListenerList(eventListenerList);
  }
    //#blog.java:293: end of method: void net.sourceforge.pebble.domain.Blog.initEventDispatcher()

  /**
   * Initialises any blog listeners configured for this blog.
   */
  private void initBlogListeners() {
    log.debug("Registering blog listeners");
    //#blog.java:299: method: void net.sourceforge.pebble.domain.Blog.initBlogListeners()
    //#blog.java:299: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initBlogListeners()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void initBlogListeners()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void initBlogListeners()): __Descendant_Table[others]
    //#input(void initBlogListeners()): __Dispatch_Table.error(Ljava/lang/String;)V
    //#input(void initBlogListeners()): __Dispatch_Table.getBlogListeners()Ljava/util/List;
    //#input(void initBlogListeners()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(void initBlogListeners()): log
    //#input(void initBlogListeners()): net/sourceforge/pebble/api/event/blog/BlogListener.__Descendant_Table[net/sourceforge/pebble/api/event/blog/BlogListener]
    //#input(void initBlogListeners()): net/sourceforge/pebble/api/event/blog/BlogListener.__Descendant_Table[net/sourceforge/pebble/event/blog/PebbleAPIBlogEntryAggregator]
    //#input(void initBlogListeners()): net/sourceforge/pebble/api/event/blog/BlogListener.__Descendant_Table[others]
    //#input(void initBlogListeners()): net/sourceforge/pebble/domain/AbstractBlog.log
    //#input(void initBlogListeners()): net/sourceforge/pebble/domain/Message.__Descendant_Table[net/sourceforge/pebble/domain/Message]
    //#input(void initBlogListeners()): net/sourceforge/pebble/domain/Message.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void initBlogListeners()): net/sourceforge/pebble/domain/MessageType.ERROR
    //#input(void initBlogListeners()): net/sourceforge/pebble/event/EventListenerList.__Descendant_Table[net/sourceforge/pebble/event/EventListenerList]
    //#input(void initBlogListeners()): net/sourceforge/pebble/event/EventListenerList.__Descendant_Table[others]
    //#input(void initBlogListeners()): net/sourceforge/pebble/event/EventListenerList.__Dispatch_Table.addBlogListener(Lnet/sourceforge/pebble/api/event/blog/BlogListener;)V
    //#input(void initBlogListeners()): net/sourceforge/pebble/event/EventListenerList.log
    //#input(void initBlogListeners()): this
    //#input(void initBlogListeners()): this.__Tag
    //#input(void initBlogListeners()): this.eventListenerList
    //#input(void initBlogListeners()): this.eventListenerList.__Tag
    //#input(void initBlogListeners()): this.eventListenerList.blogListeners
    //#input(void initBlogListeners()): this.messages
    //#input(void initBlogListeners()): this.properties
    //#output(void initBlogListeners()): this.messages
    //#pre[4] (void initBlogListeners()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[8] (void initBlogListeners()): this.properties != null
    //#pre[1] (void initBlogListeners()): (soft) net/sourceforge/pebble/domain/AbstractBlog.log != null
    //#pre[2] (void initBlogListeners()): (soft) this.messages != null
    //#pre[5] (void initBlogListeners()): (soft) this.eventListenerList != null
    //#pre[6] (void initBlogListeners()): (soft) this.eventListenerList.__Tag == net/sourceforge/pebble/event/EventListenerList
    //#pre[7] (void initBlogListeners()): (soft) this.eventListenerList.blogListeners != null
    //#presumption(void initBlogListeners()): java.lang.Class:forName(...)@303 != null
    //#presumption(void initBlogListeners()): java.lang.Class:newInstance(...).__Tag@304 in {net/sourceforge/pebble/api/event/blog/BlogListener, net/sourceforge/pebble/event/blog/PebbleAPIBlogEntryAggregator}
    //#presumption(void initBlogListeners()): java.util.Iterator:next(...)@301 != null
    //#presumption(void initBlogListeners()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#post(void initBlogListeners()): init'ed(this.messages)
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:getStringsFromProperty
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.util.List:subList
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:net.sourceforge.pebble.util.SecurityUtils:getUsername
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.util.Date
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void initBlogListeners()): Effects-of-calling:java.lang.String:startsWith
    //#test_vector(void initBlogListeners()): java.util.Iterator:hasNext(...)@301: {1}, {0}

    for (String className : getBlogListeners()) {
      try {
        Class c = Class.forName(className.trim());
        BlogListener listener = (BlogListener) c.newInstance();
        eventListenerList.addBlogListener(listener);
      } catch (Exception e) {
        error("Could not start blog listener \"" + className + "\" - check the class name is correct on the <a href=\"viewPlugins.secureaction#blogListeners\">plugins page</a>.");
    //#blog.java:307: ?precondition failure
    //#    net/sourceforge/pebble/domain/AbstractBlog.error: this.messages != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initBlogListeners()
    //#    basic block: bb_4
    //#    assertion: this.messages != null
    //#    callee: void net/sourceforge/pebble/domain/AbstractBlog.error(String)
    //#    callee assertion: this.messages != null
    //#    callee file: abstractblog.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 491
    //#    VN: this.messages
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
        log.error("Blog listener " + className + " could not be registered", e);
    //#blog.java:308: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initBlogListeners()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }
    }
  }
    //#blog.java:311: end of method: void net.sourceforge.pebble.domain.Blog.initBlogListeners()

  /**
   * Initialises any blog entry listeners configured for this blog.
   */
  private void initBlogEntryListeners() {
    log.debug("Registering blog entry listeners");
    //#blog.java:317: method: void net.sourceforge.pebble.domain.Blog.initBlogEntryListeners()
    //#blog.java:317: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initBlogEntryListeners()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void initBlogEntryListeners()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void initBlogEntryListeners()): __Descendant_Table[others]
    //#input(void initBlogEntryListeners()): __Dispatch_Table.error(Ljava/lang/String;)V
    //#input(void initBlogEntryListeners()): __Dispatch_Table.getBlogEntryListeners()Ljava/util/List;
    //#input(void initBlogEntryListeners()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(void initBlogEntryListeners()): __Dispatch_Table.warn(Ljava/lang/String;)V
    //#input(void initBlogEntryListeners()): log
    //#input(void initBlogEntryListeners()): net/sourceforge/pebble/api/event/blogentry/BlogEntryListener.__Descendant_Table[others]
    //#input(void initBlogEntryListeners()): net/sourceforge/pebble/domain/AbstractBlog.log
    //#input(void initBlogEntryListeners()): net/sourceforge/pebble/domain/Message.__Descendant_Table[net/sourceforge/pebble/domain/Message]
    //#input(void initBlogEntryListeners()): net/sourceforge/pebble/domain/Message.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void initBlogEntryListeners()): net/sourceforge/pebble/domain/MessageType.ERROR
    //#input(void initBlogEntryListeners()): net/sourceforge/pebble/domain/MessageType.WARN
    //#input(void initBlogEntryListeners()): net/sourceforge/pebble/event/EventListenerList.__Descendant_Table[net/sourceforge/pebble/event/EventListenerList]
    //#input(void initBlogEntryListeners()): net/sourceforge/pebble/event/EventListenerList.__Descendant_Table[others]
    //#input(void initBlogEntryListeners()): net/sourceforge/pebble/event/EventListenerList.__Dispatch_Table.addBlogEntryListener(Lnet/sourceforge/pebble/api/event/blogentry/BlogEntryListener;)V
    //#input(void initBlogEntryListeners()): net/sourceforge/pebble/event/EventListenerList.log
    //#input(void initBlogEntryListeners()): this
    //#input(void initBlogEntryListeners()): this.__Tag
    //#input(void initBlogEntryListeners()): this.eventListenerList
    //#input(void initBlogEntryListeners()): this.eventListenerList.__Tag
    //#input(void initBlogEntryListeners()): this.eventListenerList.blogEntryListeners
    //#input(void initBlogEntryListeners()): this.messages
    //#input(void initBlogEntryListeners()): this.properties
    //#output(void initBlogEntryListeners()): this.messages
    //#pre[4] (void initBlogEntryListeners()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[5] (void initBlogEntryListeners()): this.eventListenerList != null
    //#pre[6] (void initBlogEntryListeners()): this.eventListenerList.__Tag == net/sourceforge/pebble/event/EventListenerList
    //#pre[7] (void initBlogEntryListeners()): this.eventListenerList.blogEntryListeners != null
    //#pre[8] (void initBlogEntryListeners()): this.properties != null
    //#pre[1] (void initBlogEntryListeners()): (soft) net/sourceforge/pebble/domain/AbstractBlog.log != null
    //#pre[2] (void initBlogEntryListeners()): (soft) this.messages != null
    //#presumption(void initBlogEntryListeners()): java.lang.Class:forName(...)@321 != null
    //#presumption(void initBlogEntryListeners()): java.lang.Throwable:getMessage(...)@344 != null
    //#presumption(void initBlogEntryListeners()): java.util.Iterator:next(...)@319 != null
    //#presumption(void initBlogEntryListeners()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#post(void initBlogEntryListeners()): init'ed(this.messages)
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.util.List:subList
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:net.sourceforge.pebble.util.SecurityUtils:getUsername
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.util.Date
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:net.sourceforge.pebble.event.blogentry.BlogEntryListenerSupport
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void initBlogEntryListeners()): Effects-of-calling:java.lang.String:startsWith
    //#test_vector(void initBlogEntryListeners()): java.util.Iterator:hasNext(...)@319: {1}, {0}

    for (String className : getBlogEntryListeners()) {
      try {
        Class c = Class.forName(className.trim());
        BlogEntryListener listener = (BlogEntryListener) c.newInstance();
        eventListenerList.addBlogEntryListener(listener);
      } catch (Exception e) {
        error("Could not start blog entry listener \"" + className + "\" - check the class name is correct on the <a href=\"viewPlugins.secureaction#blogEntryListeners\">plugins page</a>.");
    //#blog.java:325: ?precondition failure
    //#    net/sourceforge/pebble/domain/AbstractBlog.error: this.messages != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initBlogEntryListeners()
    //#    basic block: bb_4
    //#    assertion: this.messages != null
    //#    callee: void net/sourceforge/pebble/domain/AbstractBlog.error(String)
    //#    callee assertion: this.messages != null
    //#    callee file: abstractblog.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 491
    //#    VN: this.messages
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
        log.error("Blog entry listener " + className + " could not be registered", e);
    //#blog.java:326: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initBlogEntryListeners()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }
    }

    // these are required to keep the various indexes up to date
    eventListenerList.addBlogEntryListener(new BlogEntryIndexListener());
    eventListenerList.addBlogEntryListener(new TagIndexListener());
    eventListenerList.addBlogEntryListener(new CategoryIndexListener());
    eventListenerList.addBlogEntryListener(new AuthorIndexListener());
    eventListenerList.addBlogEntryListener(new SearchIndexListener());
    eventListenerList.addBlogEntryListener(new AuditListener());
    try {
      eventListenerList.addBlogEntryListener(new EmailSubscriptionListener());
    } catch (Throwable t) {
      final String text = "Error while starting e-mail subscription listener - add mail.jar and activation.jar to the server classpath if you want to enable this listener.";
    //#blog.java:340: Warning: unused assignment
    //#    unused assignment into text
    //#    severity: LOW
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initBlogEntryListeners()
      warn(text);
    //#blog.java:341: ?precondition failure
    //#    net/sourceforge/pebble/domain/AbstractBlog.warn: this.messages != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initBlogEntryListeners()
    //#    basic block: bb_8
    //#    assertion: this.messages != null
    //#    callee: void net/sourceforge/pebble/domain/AbstractBlog.warn(String)
    //#    callee assertion: this.messages != null
    //#    callee file: abstractblog.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 484
    //#    VN: this.messages
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
      if(t instanceof NoClassDefFoundError &&
         t.getMessage() != null &&
         t.getMessage().indexOf("javax/mail/Session") > -1) {
        log.warn(text); // consider exception already handled well...
    //#blog.java:345: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initBlogEntryListeners()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object)
      } else {
        log.warn(text, t);
    //#blog.java:347: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initBlogEntryListeners()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object, Throwable)
      }
    }
  }
    //#blog.java:350: end of method: void net.sourceforge.pebble.domain.Blog.initBlogEntryListeners()

  /**
   * Initialises any comment listeners configured for this blog.
   */
  private void initCommentListeners() {
    log.debug("Registering comment listeners");
    //#blog.java:356: method: void net.sourceforge.pebble.domain.Blog.initCommentListeners()
    //#blog.java:356: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initCommentListeners()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void initCommentListeners()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void initCommentListeners()): __Descendant_Table[others]
    //#input(void initCommentListeners()): __Dispatch_Table.error(Ljava/lang/String;)V
    //#input(void initCommentListeners()): __Dispatch_Table.getCommentListeners()Ljava/util/List;
    //#input(void initCommentListeners()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(void initCommentListeners()): log
    //#input(void initCommentListeners()): net/sourceforge/pebble/api/event/comment/CommentListener.__Descendant_Table[others]
    //#input(void initCommentListeners()): net/sourceforge/pebble/domain/AbstractBlog.log
    //#input(void initCommentListeners()): net/sourceforge/pebble/domain/Message.__Descendant_Table[net/sourceforge/pebble/domain/Message]
    //#input(void initCommentListeners()): net/sourceforge/pebble/domain/Message.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void initCommentListeners()): net/sourceforge/pebble/domain/MessageType.ERROR
    //#input(void initCommentListeners()): net/sourceforge/pebble/event/EventListenerList.__Descendant_Table[net/sourceforge/pebble/event/EventListenerList]
    //#input(void initCommentListeners()): net/sourceforge/pebble/event/EventListenerList.__Descendant_Table[others]
    //#input(void initCommentListeners()): net/sourceforge/pebble/event/EventListenerList.__Dispatch_Table.addCommentListener(Lnet/sourceforge/pebble/api/event/comment/CommentListener;)V
    //#input(void initCommentListeners()): net/sourceforge/pebble/event/EventListenerList.log
    //#input(void initCommentListeners()): this
    //#input(void initCommentListeners()): this.__Tag
    //#input(void initCommentListeners()): this.eventListenerList
    //#input(void initCommentListeners()): this.eventListenerList.__Tag
    //#input(void initCommentListeners()): this.eventListenerList.commentListeners
    //#input(void initCommentListeners()): this.messages
    //#input(void initCommentListeners()): this.properties
    //#output(void initCommentListeners()): this.messages
    //#pre[4] (void initCommentListeners()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[5] (void initCommentListeners()): this.eventListenerList != null
    //#pre[6] (void initCommentListeners()): this.eventListenerList.__Tag == net/sourceforge/pebble/event/EventListenerList
    //#pre[7] (void initCommentListeners()): this.eventListenerList.commentListeners != null
    //#pre[8] (void initCommentListeners()): this.properties != null
    //#pre[1] (void initCommentListeners()): (soft) net/sourceforge/pebble/domain/AbstractBlog.log != null
    //#pre[2] (void initCommentListeners()): (soft) this.messages != null
    //#presumption(void initCommentListeners()): java.lang.Class:forName(...)@360 != null
    //#presumption(void initCommentListeners()): java.util.Iterator:next(...)@358 != null
    //#presumption(void initCommentListeners()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#post(void initCommentListeners()): init'ed(this.messages)
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:getStringsFromProperty
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.util.List:subList
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:net.sourceforge.pebble.util.SecurityUtils:getUsername
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.util.Date
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void initCommentListeners()): Effects-of-calling:java.lang.String:startsWith
    //#test_vector(void initCommentListeners()): java.util.Iterator:hasNext(...)@358: {1}, {0}

    for (String className : getCommentListeners()) {
      try {
        Class c = Class.forName(className.trim());
        CommentListener listener = (CommentListener) c.newInstance();
        eventListenerList.addCommentListener(listener);
      } catch (Exception e) {
        error("Could not start comment listener \"" + className + "\" - check the class name is correct on the <a href=\"viewPlugins.secureaction#commentListeners\">plugins page</a>.");
    //#blog.java:364: ?precondition failure
    //#    net/sourceforge/pebble/domain/AbstractBlog.error: this.messages != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initCommentListeners()
    //#    basic block: bb_4
    //#    assertion: this.messages != null
    //#    callee: void net/sourceforge/pebble/domain/AbstractBlog.error(String)
    //#    callee assertion: this.messages != null
    //#    callee file: abstractblog.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 491
    //#    VN: this.messages
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
        log.error("Comment listener " + className + " could not be registered", e);
    //#blog.java:365: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initCommentListeners()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }
    }

    eventListenerList.addCommentListener(new ResponseIndexListener());
    eventListenerList.addCommentListener(new AuditListener());
  }
    //#blog.java:371: end of method: void net.sourceforge.pebble.domain.Blog.initCommentListeners()

  /**
   * Initialises any TrackBack listeners configured for this blog.
   */
  private void initTrackBackListeners() {
    log.debug("Registering TrackBack listeners");
    //#blog.java:377: method: void net.sourceforge.pebble.domain.Blog.initTrackBackListeners()
    //#blog.java:377: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initTrackBackListeners()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void initTrackBackListeners()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void initTrackBackListeners()): __Descendant_Table[others]
    //#input(void initTrackBackListeners()): __Dispatch_Table.error(Ljava/lang/String;)V
    //#input(void initTrackBackListeners()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(void initTrackBackListeners()): __Dispatch_Table.getTrackBackListeners()Ljava/util/List;
    //#input(void initTrackBackListeners()): log
    //#input(void initTrackBackListeners()): net/sourceforge/pebble/api/event/trackback/TrackBackListener.__Descendant_Table[others]
    //#input(void initTrackBackListeners()): net/sourceforge/pebble/domain/AbstractBlog.log
    //#input(void initTrackBackListeners()): net/sourceforge/pebble/domain/Message.__Descendant_Table[net/sourceforge/pebble/domain/Message]
    //#input(void initTrackBackListeners()): net/sourceforge/pebble/domain/Message.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void initTrackBackListeners()): net/sourceforge/pebble/domain/MessageType.ERROR
    //#input(void initTrackBackListeners()): net/sourceforge/pebble/event/EventListenerList.__Descendant_Table[net/sourceforge/pebble/event/EventListenerList]
    //#input(void initTrackBackListeners()): net/sourceforge/pebble/event/EventListenerList.__Descendant_Table[others]
    //#input(void initTrackBackListeners()): net/sourceforge/pebble/event/EventListenerList.__Dispatch_Table.addTrackBackListener(Lnet/sourceforge/pebble/api/event/trackback/TrackBackListener;)V
    //#input(void initTrackBackListeners()): net/sourceforge/pebble/event/EventListenerList.log
    //#input(void initTrackBackListeners()): this
    //#input(void initTrackBackListeners()): this.__Tag
    //#input(void initTrackBackListeners()): this.eventListenerList
    //#input(void initTrackBackListeners()): this.eventListenerList.__Tag
    //#input(void initTrackBackListeners()): this.eventListenerList.trackBackListeners
    //#input(void initTrackBackListeners()): this.messages
    //#input(void initTrackBackListeners()): this.properties
    //#output(void initTrackBackListeners()): this.messages
    //#pre[4] (void initTrackBackListeners()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[5] (void initTrackBackListeners()): this.eventListenerList != null
    //#pre[6] (void initTrackBackListeners()): this.eventListenerList.__Tag == net/sourceforge/pebble/event/EventListenerList
    //#pre[7] (void initTrackBackListeners()): this.eventListenerList.trackBackListeners != null
    //#pre[8] (void initTrackBackListeners()): this.properties != null
    //#pre[1] (void initTrackBackListeners()): (soft) net/sourceforge/pebble/domain/AbstractBlog.log != null
    //#pre[2] (void initTrackBackListeners()): (soft) this.messages != null
    //#presumption(void initTrackBackListeners()): java.lang.Class:forName(...)@381 != null
    //#presumption(void initTrackBackListeners()): java.util.Iterator:next(...)@379 != null
    //#presumption(void initTrackBackListeners()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#post(void initTrackBackListeners()): init'ed(this.messages)
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:getStringsFromProperty
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.util.List:subList
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:net.sourceforge.pebble.util.SecurityUtils:getUsername
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.util.Date
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void initTrackBackListeners()): Effects-of-calling:java.lang.String:startsWith
    //#test_vector(void initTrackBackListeners()): java.util.Iterator:hasNext(...)@379: {1}, {0}

    for (String className : getTrackBackListeners()) {
      try {
        Class c = Class.forName(className.trim());
        TrackBackListener listener = (TrackBackListener) c.newInstance();
        eventListenerList.addTrackBackListener(listener);
      } catch (Exception e) {
        error("Could not start TrackBack listener \"" + className + "\" - check the class name is correct on the <a href=\"viewPlugins.secureaction#trackbackListeners\">plugins page</a>.");
    //#blog.java:385: ?precondition failure
    //#    net/sourceforge/pebble/domain/AbstractBlog.error: this.messages != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initTrackBackListeners()
    //#    basic block: bb_4
    //#    assertion: this.messages != null
    //#    callee: void net/sourceforge/pebble/domain/AbstractBlog.error(String)
    //#    callee assertion: this.messages != null
    //#    callee file: abstractblog.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 491
    //#    VN: this.messages
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
        log.error("TrackBack listener " + className + " could not be registered", e);
    //#blog.java:386: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initTrackBackListeners()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }
    }

    eventListenerList.addTrackBackListener(new ResponseIndexListener());
    eventListenerList.addTrackBackListener(new AuditListener());
  }
    //#blog.java:392: end of method: void net.sourceforge.pebble.domain.Blog.initTrackBackListeners()

  /**
   * Initialises any content decorators configufred for this blog.
   */
  private void initDecorators() {
    log.debug("Registering decorators");
    //#blog.java:398: method: void net.sourceforge.pebble.domain.Blog.initDecorators()
    //#blog.java:398: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initDecorators()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void initDecorators()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void initDecorators()): __Descendant_Table[others]
    //#input(void initDecorators()): __Dispatch_Table.error(Ljava/lang/String;)V
    //#input(void initDecorators()): __Dispatch_Table.getContentDecorators()Ljava/util/List;
    //#input(void initDecorators()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(void initDecorators()): log
    //#input(void initDecorators()): net/sourceforge/pebble/api/decorator/ContentDecorator.__Descendant_Table[others]
    //#input(void initDecorators()): net/sourceforge/pebble/api/decorator/ContentDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/AbstractTagsDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/BlogCategoriesDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/BlogTagsDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/ContentDecoratorChain.__Descendant_Table[net/sourceforge/pebble/decorator/ContentDecoratorChain]
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/ContentDecoratorChain.__Descendant_Table[others]
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/ContentDecoratorChain.__Dispatch_Table.add(Lnet/sourceforge/pebble/api/decorator/ContentDecorator;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/ContentDecoratorChain.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/ContentDecoratorSupport.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/DisableCommentsDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/DisableResponseDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/DisableTrackBacksDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/EntryToPdfDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/EscapeMarkupDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/ExcerptDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/HideUnapprovedResponsesDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/HtmlDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/NoFollowDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/PhotoDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/RadeoxDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/ReadMoreDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/RelatedPostsDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/RelativeUriDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/SocialBookmarksDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/StaticPageTagsDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/TechnoratiTagsDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/decorator/TrackBackAutoDiscoveryDecorator.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void initDecorators()): net/sourceforge/pebble/domain/AbstractBlog.log
    //#input(void initDecorators()): net/sourceforge/pebble/domain/Message.__Descendant_Table[net/sourceforge/pebble/domain/Message]
    //#input(void initDecorators()): net/sourceforge/pebble/domain/Message.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void initDecorators()): net/sourceforge/pebble/domain/MessageType.ERROR
    //#input(void initDecorators()): this
    //#input(void initDecorators()): this.__Tag
    //#input(void initDecorators()): this.decoratorChain
    //#input(void initDecorators()): this.decoratorChain.__Tag
    //#input(void initDecorators()): this.decoratorChain.decorators
    //#input(void initDecorators()): this.messages
    //#input(void initDecorators()): this.properties
    //#output(void initDecorators()): this.messages
    //#pre[4] (void initDecorators()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[5] (void initDecorators()): this.decoratorChain != null
    //#pre[6] (void initDecorators()): this.decoratorChain.__Tag == net/sourceforge/pebble/decorator/ContentDecoratorChain
    //#pre[7] (void initDecorators()): this.decoratorChain.decorators != null
    //#pre[8] (void initDecorators()): this.properties != null
    //#pre[1] (void initDecorators()): (soft) net/sourceforge/pebble/domain/AbstractBlog.log != null
    //#pre[2] (void initDecorators()): (soft) this.messages != null
    //#presumption(void initDecorators()): java.lang.Class:forName(...)@404 != null
    //#presumption(void initDecorators()): java.util.Iterator:next(...)@402 != null
    //#presumption(void initDecorators()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#post(void initDecorators()): init'ed(this.messages)
    //#unanalyzed(void initDecorators()): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void initDecorators()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void initDecorators()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void initDecorators()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void initDecorators()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void initDecorators()): Effects-of-calling:getStringsFromProperty
    //#unanalyzed(void initDecorators()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void initDecorators()): Effects-of-calling:java.util.List:subList
    //#unanalyzed(void initDecorators()): Effects-of-calling:net.sourceforge.pebble.util.SecurityUtils:getUsername
    //#unanalyzed(void initDecorators()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void initDecorators()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void initDecorators()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void initDecorators()): Effects-of-calling:java.util.Date
    //#unanalyzed(void initDecorators()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void initDecorators()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void initDecorators()): Effects-of-calling:net.sourceforge.pebble.decorator.ContentDecoratorSupport
    //#unanalyzed(void initDecorators()): Effects-of-calling:java.lang.String:startsWith
    //#test_vector(void initDecorators()): java.util.Iterator:hasNext(...)@402: {1}, {0}

    decoratorChain.add(new HideUnapprovedResponsesDecorator());

    for (String className : getContentDecorators()) {
      try {
        Class c = Class.forName(className.trim());
        ContentDecorator decorator = (ContentDecorator) c.newInstance();
        decorator.setBlog(this);
    //#blog.java:406: Warning: method not available
    //#    -- call on void setBlog(Blog)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initDecorators()
    //#    unanalyzed callee: void setBlog(Blog)
        decoratorChain.add(decorator);
      } catch (Exception e) {
        error("Could not start decorator \"" + className + "\" - check the class name is correct on the <a href=\"viewPlugins.secureaction#contentDecorators\">plugins page</a>.");
    //#blog.java:409: ?precondition failure
    //#    net/sourceforge/pebble/domain/AbstractBlog.error: this.messages != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initDecorators()
    //#    basic block: bb_4
    //#    assertion: this.messages != null
    //#    callee: void net/sourceforge/pebble/domain/AbstractBlog.error(String)
    //#    callee assertion: this.messages != null
    //#    callee file: abstractblog.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 491
    //#    VN: this.messages
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
        e.printStackTrace();
        log.error(className + " could not be started", e);
    //#blog.java:411: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void initDecorators()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }
    }
  }
    //#blog.java:414: end of method: void net.sourceforge.pebble.domain.Blog.initDecorators()

  /**
   * Gets the default properties for a Blog.
   *
   * @return    a Properties instance
   */
  protected Properties getDefaultProperties() {
    Properties defaultProperties = new Properties();
    //#blog.java:422: method: Properties net.sourceforge.pebble.domain.Blog.getDefaultProperties()
    //#output(Properties getDefaultProperties()): new Properties(getDefaultProperties#1) num objects
    //#output(Properties getDefaultProperties()): return_value
    //#new obj(Properties getDefaultProperties()): new Properties(getDefaultProperties#1)
    //#post(Properties getDefaultProperties()): return_value == &new Properties(getDefaultProperties#1)
    //#post(Properties getDefaultProperties()): new Properties(getDefaultProperties#1) num objects == 1
    defaultProperties.setProperty(NAME_KEY, "My blog");
    defaultProperties.setProperty(DESCRIPTION_KEY, "");
    defaultProperties.setProperty(IMAGE_KEY, "");
    defaultProperties.setProperty(AUTHOR_KEY, "Blog Owner");
    defaultProperties.setProperty(EMAIL_KEY, "blog@yourdomain.com");
    defaultProperties.setProperty(TIMEZONE_KEY, "Europe/London");
    defaultProperties.setProperty(LANGUAGE_KEY, "en");
    defaultProperties.setProperty(COUNTRY_KEY, "GB");
    defaultProperties.setProperty(CHARACTER_ENCODING_KEY, "UTF-8");
    defaultProperties.setProperty(RECENT_BLOG_ENTRIES_ON_HOME_PAGE_KEY, "3");
    defaultProperties.setProperty(RECENT_RESPONSES_ON_HOME_PAGE_KEY, "3");
    defaultProperties.setProperty(THEME_KEY, "default");
    defaultProperties.setProperty(PRIVATE_KEY, FALSE);
    defaultProperties.setProperty(LUCENE_ANALYZER_KEY, "org.apache.lucene.analysis.SimpleAnalyzer");
    defaultProperties.setProperty(CONTENT_DECORATORS_KEY,
        "net.sourceforge.pebble.decorator.RadeoxDecorator\n" +
        "net.sourceforge.pebble.decorator.HtmlDecorator\n" +
        "net.sourceforge.pebble.decorator.EscapeMarkupDecorator\n" +
        "net.sourceforge.pebble.decorator.RelativeUriDecorator\n" +
        "net.sourceforge.pebble.decorator.ReadMoreDecorator\n" +
        "net.sourceforge.pebble.decorator.BlogTagsDecorator");
    defaultProperties.setProperty(BLOG_ENTRY_LISTENERS_KEY,
        "net.sourceforge.pebble.event.blogentry.XmlRpcNotificationListener");
    defaultProperties.setProperty(COMMENT_LISTENERS_KEY,
        "net.sourceforge.pebble.event.response.IpAddressListener\r\n" +
        "net.sourceforge.pebble.event.response.LinkSpamListener\r\n" +
        "net.sourceforge.pebble.event.response.ContentSpamListener\r\n" +
        "net.sourceforge.pebble.event.response.SpamScoreListener\r\n" +
        "net.sourceforge.pebble.event.response.MarkApprovedWhenAuthenticatedListener\r\n" +
        "#net.sourceforge.pebble.event.response.DeleteRejectedListener\r\n" +
        "#net.sourceforge.pebble.event.comment.EmailAuthorNotificationListener");
    defaultProperties.setProperty(TRACKBACK_LISTENERS_KEY,
        "net.sourceforge.pebble.event.response.IpAddressListener\r\n" +
        "net.sourceforge.pebble.event.response.LinkSpamListener\r\n" +
        "net.sourceforge.pebble.event.response.ContentSpamListener\r\n" +
        "net.sourceforge.pebble.event.response.SpamScoreListener\r\n" +
        "net.sourceforge.pebble.event.response.MarkApprovedWhenAuthenticatedListener\r\n" +
        "#net.sourceforge.pebble.event.response.DeleteRejectedListener\r\n" +
        "#net.sourceforge.pebble.event.trackback.EmailAuthorNotificationListener");
    defaultProperties.setProperty(PERMALINK_PROVIDER_KEY, "net.sourceforge.pebble.permalink.DefaultPermalinkProvider");
    defaultProperties.setProperty(EVENT_DISPATCHER_KEY, "net.sourceforge.pebble.event.DefaultEventDispatcher");
    defaultProperties.setProperty(LOGGER_KEY, "net.sourceforge.pebble.logging.CombinedLogFormatLogger");
    defaultProperties.setProperty(COMMENT_CONFIRMATION_STRATEGY_KEY, "net.sourceforge.pebble.confirmation.DefaultConfirmationStrategy");
    defaultProperties.setProperty(TRACKBACK_CONFIRMATION_STRATEGY_KEY, "net.sourceforge.pebble.confirmation.DefaultConfirmationStrategy");
    defaultProperties.setProperty(RICH_TEXT_EDITOR_FOR_COMMENTS_ENABLED_KEY, "true");

    return defaultProperties;
    //#blog.java:469: end of method: Properties net.sourceforge.pebble.domain.Blog.getDefaultProperties()
  }

  /**
   * Gets the ID of this blog.
   *
   * @return  the ID as a String
   */
  public String getId() {
    return this.id;
    //#blog.java:478: method: String net.sourceforge.pebble.domain.Blog.getId()
    //#input(String getId()): this
    //#input(String getId()): this.id
    //#output(String getId()): return_value
    //#pre[2] (String getId()): init'ed(this.id)
    //#post(String getId()): return_value == this.id
    //#post(String getId()): init'ed(return_value)
    //#blog.java:478: end of method: String net.sourceforge.pebble.domain.Blog.getId()
  }

  /**
   * Sets the ID of this blog.
   *
   * @param id    the ID as a String
   */
  public void setId(String id) {
    this.id = id;
    //#blog.java:487: method: void net.sourceforge.pebble.domain.Blog.setId(String)
    //#input(void setId(String)): id
    //#input(void setId(String)): this
    //#output(void setId(String)): this.id
    //#post(void setId(String)): this.id == id
    //#post(void setId(String)): init'ed(this.id)
  }
    //#blog.java:488: end of method: void net.sourceforge.pebble.domain.Blog.setId(String)

  /**
   * Gets the URL where this blog is deployed.
   *
   * @return  a URL as a String
   */
  public String getUrl() {
    Configuration config = PebbleContext.getInstance().getConfiguration();
    //#blog.java:496: method: String net.sourceforge.pebble.domain.Blog.getUrl()
    //#blog.java:496: Warning: method not available
    //#    -- call on PebbleContext net.sourceforge.pebble.PebbleContext:getInstance()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: String getUrl()
    //#    unanalyzed callee: PebbleContext net.sourceforge.pebble.PebbleContext:getInstance()
    //#blog.java:496: Warning: method not available
    //#    -- call on Configuration net.sourceforge.pebble.PebbleContext:getConfiguration()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: String getUrl()
    //#    unanalyzed callee: Configuration net.sourceforge.pebble.PebbleContext:getConfiguration()
    //#input(String getUrl()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getUrl()): __Descendant_Table[others]
    //#input(String getUrl()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(String getUrl()): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(String getUrl()): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(String getUrl()): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(String getUrl()): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(String getUrl()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(String getUrl()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(String getUrl()): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(String getUrl()): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(String getUrl()): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(String getUrl()): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(String getUrl()): this
    //#input(String getUrl()): this.__Tag
    //#input(String getUrl()): this.id
    //#output(String getUrl()): return_value
    //#pre[1] (String getUrl()): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[2] (String getUrl()): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[3] (String getUrl()): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[5] (String getUrl()): (soft) this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[6] (String getUrl()): (soft) init'ed(this.id)
    //#presumption(String getUrl()): config.__Tag@496 == net/sourceforge/pebble/Configuration
    //#presumption(String getUrl()): java.lang.String:indexOf(...)@503 <= 4_294_967_292
    //#presumption(String getUrl()): java.lang.String:indexOf(...)@503 <= 4_294_967_292
    //#presumption(String getUrl()): net.sourceforge.pebble.PebbleContext:getConfiguration(...)@496 != null
    //#presumption(String getUrl()): net.sourceforge.pebble.PebbleContext:getInstance(...)@496 != null
    //#post(String getUrl()): return_value != null
    //#test_vector(String getUrl()): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog: {0}, {1}
    //#test_vector(String getUrl()): config.url@496: Addr_Set{null}, Inverse{null}
    //#test_vector(String getUrl()): config.virtualHostingEnabled@496: {0}, {1}
    //#test_vector(String getUrl()): java.lang.String:length(...)@499: {1..4_294_967_295}, {0}
    String url = config.getUrl();

    if (url == null || url.length() == 0) {
      return "";
    } else if (BlogManager.getInstance().isMultiBlog()) {
      if (config.isVirtualHostingEnabled()) {
        return url.substring(0, url.indexOf("://")+3) + getId() + "." + url.substring(url.indexOf("://")+3);
      } else {
        return url + getId() + "/";
      }
    } else {
      return url;
    //#blog.java:508: end of method: String net.sourceforge.pebble.domain.Blog.getUrl()
    }
  }

  /**
   * Gets the relative URL where this blog is deployed.
   *
   * @return  a URL as a String
   */
  public String getRelativeUrl() {
    if (BlogManager.getInstance().isMultiBlog()) {
    //#blog.java:518: method: String net.sourceforge.pebble.domain.Blog.getRelativeUrl()
    //#input(String getRelativeUrl()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getRelativeUrl()): __Descendant_Table[others]
    //#input(String getRelativeUrl()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(String getRelativeUrl()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(String getRelativeUrl()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(String getRelativeUrl()): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(String getRelativeUrl()): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(String getRelativeUrl()): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(String getRelativeUrl()): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(String getRelativeUrl()): this
    //#input(String getRelativeUrl()): this.__Tag
    //#input(String getRelativeUrl()): this.id
    //#output(String getRelativeUrl()): return_value
    //#pre[1] (String getRelativeUrl()): net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[2] (String getRelativeUrl()): net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[3] (String getRelativeUrl()): init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[5] (String getRelativeUrl()): (soft) this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[6] (String getRelativeUrl()): (soft) init'ed(this.id)
    //#post(String getRelativeUrl()): return_value != null
    //#test_vector(String getRelativeUrl()): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog: {0}, {1}
      return "/" + getId() + "/";
    } else {
      return "/";
    //#blog.java:521: end of method: String net.sourceforge.pebble.domain.Blog.getRelativeUrl()
    }
  }

  /**
   * Gets the about description of this blog.
   *
   * @return    a String
   */
  public String getAbout() {
    return properties.getProperty(ABOUT_KEY);
    //#blog.java:531: method: String net.sourceforge.pebble.domain.Blog.getAbout()
    //#input(String getAbout()): this
    //#input(String getAbout()): this.properties
    //#output(String getAbout()): return_value
    //#pre[2] (String getAbout()): this.properties != null
    //#post(String getAbout()): init'ed(return_value)
    //#blog.java:531: end of method: String net.sourceforge.pebble.domain.Blog.getAbout()
  }

  /**
   * Gets the home page to be used for this blog.
   *
   * @return    a String
   */
  public String getHomePage() {
    return properties.getProperty(HOME_PAGE_KEY);
    //#blog.java:540: method: String net.sourceforge.pebble.domain.Blog.getHomePage()
    //#input(String getHomePage()): this
    //#input(String getHomePage()): this.properties
    //#output(String getHomePage()): return_value
    //#pre[2] (String getHomePage()): this.properties != null
    //#post(String getHomePage()): init'ed(return_value)
    //#blog.java:540: end of method: String net.sourceforge.pebble.domain.Blog.getHomePage()
  }

  /**
   * Gets the e-mail address of the blog owner.
   *
   * @return    the e-mail address
   */
  public String getEmail() {
    return properties.getProperty(EMAIL_KEY);
    //#blog.java:549: method: String net.sourceforge.pebble.domain.Blog.getEmail()
    //#input(String getEmail()): this
    //#input(String getEmail()): this.properties
    //#output(String getEmail()): return_value
    //#pre[2] (String getEmail()): this.properties != null
    //#post(String getEmail()): init'ed(return_value)
    //#blog.java:549: end of method: String net.sourceforge.pebble.domain.Blog.getEmail()
  }

  /**
   * Gets a Collection of e-mail addresses.
   *
   * @return  a Collection of String instances
   */
  public Collection getEmailAddresses() {
    return Arrays.asList(getEmail().split(","));
    //#blog.java:558: method: Collection net.sourceforge.pebble.domain.Blog.getEmailAddresses()
    //#input(Collection getEmailAddresses()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Collection getEmailAddresses()): __Descendant_Table[others]
    //#input(Collection getEmailAddresses()): __Dispatch_Table.getEmail()Ljava/lang/String;
    //#input(Collection getEmailAddresses()): this
    //#input(Collection getEmailAddresses()): this.__Tag
    //#input(Collection getEmailAddresses()): this.properties
    //#output(Collection getEmailAddresses()): return_value
    //#pre[2] (Collection getEmailAddresses()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (Collection getEmailAddresses()): this.properties != null
    //#presumption(Collection getEmailAddresses()): java.util.Properties:getProperty(...)@549 != null
    //#post(Collection getEmailAddresses()): init'ed(return_value)
    //#unanalyzed(Collection getEmailAddresses()): Effects-of-calling:java.util.Properties:getProperty
    //#blog.java:558: end of method: Collection net.sourceforge.pebble.domain.Blog.getEmailAddresses()
  }

  /**
   * Gets the first of multiple e-mail addresses.
   *
   * @return  the firt e-mail address as a String
   */
  public String getFirstEmailAddress() {
    Collection emailAddresses = getEmailAddresses();
    //#blog.java:567: method: String net.sourceforge.pebble.domain.Blog.getFirstEmailAddress()
    //#input(String getFirstEmailAddress()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getFirstEmailAddress()): __Descendant_Table[others]
    //#input(String getFirstEmailAddress()): __Dispatch_Table.getEmail()Ljava/lang/String;
    //#input(String getFirstEmailAddress()): __Dispatch_Table.getEmailAddresses()Ljava/util/Collection;
    //#input(String getFirstEmailAddress()): this
    //#input(String getFirstEmailAddress()): this.__Tag
    //#input(String getFirstEmailAddress()): this.properties
    //#output(String getFirstEmailAddress()): return_value
    //#pre[2] (String getFirstEmailAddress()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (String getFirstEmailAddress()): this.properties != null
    //#post(String getFirstEmailAddress()): init'ed(return_value)
    //#unanalyzed(String getFirstEmailAddress()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(String getFirstEmailAddress()): Effects-of-calling:java.lang.String:split
    //#unanalyzed(String getFirstEmailAddress()): Effects-of-calling:java.util.Arrays:asList
    //#test_vector(String getFirstEmailAddress()): java.util.Arrays:asList(...)@558: Addr_Set{null}, Inverse{null}
    //#test_vector(String getFirstEmailAddress()): java.util.Collection:isEmpty(...)@568: {1}, {0}
    if (emailAddresses != null && !emailAddresses.isEmpty()) {
      return (String)emailAddresses.iterator().next();
    } else {
      return "";
    //#blog.java:571: end of method: String net.sourceforge.pebble.domain.Blog.getFirstEmailAddress()
    }
  }

  /**
   * Gets a comma separated list of the users that are blog owners
   * for this blog.
   *
   * @return  a String containng a comma separated list of user names
   */
  public String getBlogOwnersAsString() {
    return properties.getProperty(BLOG_OWNERS_KEY);
    //#blog.java:582: method: String net.sourceforge.pebble.domain.Blog.getBlogOwnersAsString()
    //#input(String getBlogOwnersAsString()): this
    //#input(String getBlogOwnersAsString()): this.properties
    //#output(String getBlogOwnersAsString()): return_value
    //#pre[2] (String getBlogOwnersAsString()): this.properties != null
    //#post(String getBlogOwnersAsString()): init'ed(return_value)
    //#blog.java:582: end of method: String net.sourceforge.pebble.domain.Blog.getBlogOwnersAsString()
  }

  /**
   * Gets a list of the users that are blog owners for this blog.
   *
   * @return  a String containng a comma separated list of user names
   */
  public List<String> getBlogOwners() {
    String commaSeparatedUsers = getBlogOwnersAsString();
    //#blog.java:591: method: List net.sourceforge.pebble.domain.Blog.getBlogOwners()
    //#input(List getBlogOwners()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getBlogOwners()): __Descendant_Table[others]
    //#input(List getBlogOwners()): __Dispatch_Table.getBlogOwnersAsString()Ljava/lang/String;
    //#input(List getBlogOwners()): this
    //#input(List getBlogOwners()): this.__Tag
    //#input(List getBlogOwners()): this.properties
    //#output(List getBlogOwners()): new LinkedList(getBlogOwners#1) num objects
    //#output(List getBlogOwners()): return_value
    //#new obj(List getBlogOwners()): new LinkedList(getBlogOwners#1)
    //#pre[2] (List getBlogOwners()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (List getBlogOwners()): this.properties != null
    //#presumption(List getBlogOwners()): java.util.StringTokenizer:nextToken(...)@596 != null
    //#post(List getBlogOwners()): return_value == &new LinkedList(getBlogOwners#1)
    //#post(List getBlogOwners()): new LinkedList(getBlogOwners#1) num objects == 1
    //#unanalyzed(List getBlogOwners()): Effects-of-calling:java.util.Properties:getProperty
    //#test_vector(List getBlogOwners()): java.util.Properties:getProperty(...)@582: Addr_Set{null}, Inverse{null}
    //#test_vector(List getBlogOwners()): java.util.StringTokenizer:hasMoreTokens(...)@595: {1}, {0}
    List<String> users = new LinkedList<String>();
    if (commaSeparatedUsers != null) {
      StringTokenizer tok = new StringTokenizer(commaSeparatedUsers, ",");
      while (tok.hasMoreTokens()) {
        users.add(tok.nextToken().trim());
      }
    }

    return users;
    //#blog.java:600: end of method: List net.sourceforge.pebble.domain.Blog.getBlogOwners()
  }

  /**
   * Gets a comma separated list of the users that are blog publishers
   * for this blog.
   *
   * @return  a String containng a comma separated list of user names
   */
  public String getBlogPublishersAsString() {
    return properties.getProperty(BLOG_PUBLISHERS_KEY);
    //#blog.java:610: method: String net.sourceforge.pebble.domain.Blog.getBlogPublishersAsString()
    //#input(String getBlogPublishersAsString()): this
    //#input(String getBlogPublishersAsString()): this.properties
    //#output(String getBlogPublishersAsString()): return_value
    //#pre[2] (String getBlogPublishersAsString()): this.properties != null
    //#post(String getBlogPublishersAsString()): init'ed(return_value)
    //#blog.java:610: end of method: String net.sourceforge.pebble.domain.Blog.getBlogPublishersAsString()
  }

  /**
   * Gets a list of the users that are blog publishers for this blog.
   *
   * @return  a String containng a comma separated list of user names
   */
  public List<String> getBlogPublishers() {
    String commaSeparatedUsers = getBlogPublishersAsString();
    //#blog.java:619: method: List net.sourceforge.pebble.domain.Blog.getBlogPublishers()
    //#input(List getBlogPublishers()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getBlogPublishers()): __Descendant_Table[others]
    //#input(List getBlogPublishers()): __Dispatch_Table.getBlogPublishersAsString()Ljava/lang/String;
    //#input(List getBlogPublishers()): this
    //#input(List getBlogPublishers()): this.__Tag
    //#input(List getBlogPublishers()): this.properties
    //#output(List getBlogPublishers()): new LinkedList(getBlogPublishers#1) num objects
    //#output(List getBlogPublishers()): return_value
    //#new obj(List getBlogPublishers()): new LinkedList(getBlogPublishers#1)
    //#pre[2] (List getBlogPublishers()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (List getBlogPublishers()): this.properties != null
    //#presumption(List getBlogPublishers()): java.util.StringTokenizer:nextToken(...)@624 != null
    //#post(List getBlogPublishers()): return_value == &new LinkedList(getBlogPublishers#1)
    //#post(List getBlogPublishers()): new LinkedList(getBlogPublishers#1) num objects == 1
    //#unanalyzed(List getBlogPublishers()): Effects-of-calling:java.util.Properties:getProperty
    //#test_vector(List getBlogPublishers()): java.util.Properties:getProperty(...)@610: Addr_Set{null}, Inverse{null}
    //#test_vector(List getBlogPublishers()): java.util.StringTokenizer:hasMoreTokens(...)@623: {1}, {0}
    List<String> users = new LinkedList<String>();
    if (commaSeparatedUsers != null) {
      StringTokenizer tok = new StringTokenizer(commaSeparatedUsers, ",");
      while (tok.hasMoreTokens()) {
        users.add(tok.nextToken().trim());
      }
    }

    return users;
    //#blog.java:628: end of method: List net.sourceforge.pebble.domain.Blog.getBlogPublishers()
  }

  /**
   * Gets a comma separated list of the users that are blog contributors
   * for this blog.
   *
   * @return  a String containng a comma separated list of user names
   */
  public String getBlogContributorsAsString() {
    return properties.getProperty(BLOG_CONTRIBUTORS_KEY);
    //#blog.java:638: method: String net.sourceforge.pebble.domain.Blog.getBlogContributorsAsString()
    //#input(String getBlogContributorsAsString()): this
    //#input(String getBlogContributorsAsString()): this.properties
    //#output(String getBlogContributorsAsString()): return_value
    //#pre[2] (String getBlogContributorsAsString()): this.properties != null
    //#post(String getBlogContributorsAsString()): init'ed(return_value)
    //#blog.java:638: end of method: String net.sourceforge.pebble.domain.Blog.getBlogContributorsAsString()
  }

  /**
   * Gets a list of the users that are blog contributors for this blog.
   *
   * @return  a String containng a comma separated list of user names
   */
  public List<String> getBlogContributors() {
    String commaSeparatedUsers = getBlogContributorsAsString();
    //#blog.java:647: method: List net.sourceforge.pebble.domain.Blog.getBlogContributors()
    //#input(List getBlogContributors()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getBlogContributors()): __Descendant_Table[others]
    //#input(List getBlogContributors()): __Dispatch_Table.getBlogContributorsAsString()Ljava/lang/String;
    //#input(List getBlogContributors()): this
    //#input(List getBlogContributors()): this.__Tag
    //#input(List getBlogContributors()): this.properties
    //#output(List getBlogContributors()): new LinkedList(getBlogContributors#1) num objects
    //#output(List getBlogContributors()): return_value
    //#new obj(List getBlogContributors()): new LinkedList(getBlogContributors#1)
    //#pre[2] (List getBlogContributors()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (List getBlogContributors()): this.properties != null
    //#presumption(List getBlogContributors()): java.util.StringTokenizer:nextToken(...)@652 != null
    //#post(List getBlogContributors()): return_value == &new LinkedList(getBlogContributors#1)
    //#post(List getBlogContributors()): new LinkedList(getBlogContributors#1) num objects == 1
    //#unanalyzed(List getBlogContributors()): Effects-of-calling:java.util.Properties:getProperty
    //#test_vector(List getBlogContributors()): java.util.Properties:getProperty(...)@638: Addr_Set{null}, Inverse{null}
    //#test_vector(List getBlogContributors()): java.util.StringTokenizer:hasMoreTokens(...)@651: {1}, {0}
    List<String> users = new LinkedList<String>();
    if (commaSeparatedUsers != null) {
      StringTokenizer tok = new StringTokenizer(commaSeparatedUsers, ",");
      while (tok.hasMoreTokens()) {
        users.add(tok.nextToken().trim());
      }
    }

    return users;
    //#blog.java:656: end of method: List net.sourceforge.pebble.domain.Blog.getBlogContributors()
  }

  /**
   * Gets a comma separated list of the users that are blog readers
   * for this blog.
   *
   * @return  a String containng a comma separated list of user names
   */
  public String getBlogReadersAsString() {
    return properties.getProperty(BLOG_READERS_KEY);
    //#blog.java:666: method: String net.sourceforge.pebble.domain.Blog.getBlogReadersAsString()
    //#input(String getBlogReadersAsString()): this
    //#input(String getBlogReadersAsString()): this.properties
    //#output(String getBlogReadersAsString()): return_value
    //#pre[2] (String getBlogReadersAsString()): this.properties != null
    //#post(String getBlogReadersAsString()): init'ed(return_value)
    //#blog.java:666: end of method: String net.sourceforge.pebble.domain.Blog.getBlogReadersAsString()
  }

  /**
   * Gets a list of the users that are blog readers for this blog.
   *
   * @return  a String containng a comma separated list of user names
   */
  public List<String> getBlogReaders() {
    String commaSeparatedUsers = getBlogReadersAsString();
    //#blog.java:675: method: List net.sourceforge.pebble.domain.Blog.getBlogReaders()
    //#input(List getBlogReaders()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getBlogReaders()): __Descendant_Table[others]
    //#input(List getBlogReaders()): __Dispatch_Table.getBlogReadersAsString()Ljava/lang/String;
    //#input(List getBlogReaders()): this
    //#input(List getBlogReaders()): this.__Tag
    //#input(List getBlogReaders()): this.properties
    //#output(List getBlogReaders()): new LinkedList(getBlogReaders#1) num objects
    //#output(List getBlogReaders()): return_value
    //#new obj(List getBlogReaders()): new LinkedList(getBlogReaders#1)
    //#pre[2] (List getBlogReaders()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (List getBlogReaders()): this.properties != null
    //#presumption(List getBlogReaders()): java.util.StringTokenizer:nextToken(...)@680 != null
    //#post(List getBlogReaders()): return_value == &new LinkedList(getBlogReaders#1)
    //#post(List getBlogReaders()): new LinkedList(getBlogReaders#1) num objects == 1
    //#unanalyzed(List getBlogReaders()): Effects-of-calling:java.util.Properties:getProperty
    //#test_vector(List getBlogReaders()): java.util.Properties:getProperty(...)@666: Addr_Set{null}, Inverse{null}
    //#test_vector(List getBlogReaders()): java.util.StringTokenizer:hasMoreTokens(...)@679: {1}, {0}
    List<String> users = new LinkedList<String>();
    if (commaSeparatedUsers != null) {
      StringTokenizer tok = new StringTokenizer(commaSeparatedUsers, ",");
      while (tok.hasMoreTokens()) {
        users.add(tok.nextToken().trim());
      }
    }

    return users;
    //#blog.java:684: end of method: List net.sourceforge.pebble.domain.Blog.getBlogReaders()
  }

  /**
   * Gets the name of the Lucene analyzer to use.
   *
   * @return  a fully qualified class name
   */
  public String getLuceneAnalyzer() {
    return properties.getProperty(LUCENE_ANALYZER_KEY);
    //#blog.java:693: method: String net.sourceforge.pebble.domain.Blog.getLuceneAnalyzer()
    //#input(String getLuceneAnalyzer()): this
    //#input(String getLuceneAnalyzer()): this.properties
    //#output(String getLuceneAnalyzer()): return_value
    //#pre[2] (String getLuceneAnalyzer()): this.properties != null
    //#post(String getLuceneAnalyzer()): init'ed(return_value)
    //#blog.java:693: end of method: String net.sourceforge.pebble.domain.Blog.getLuceneAnalyzer()
  }

  /**
   * Gets the name of the logger in use.
   *
   * @return  a fully qualified class name
   */
  public String getLoggerName() {
    return properties.getProperty(LOGGER_KEY);
    //#blog.java:702: method: String net.sourceforge.pebble.domain.Blog.getLoggerName()
    //#input(String getLoggerName()): this
    //#input(String getLoggerName()): this.properties
    //#output(String getLoggerName()): return_value
    //#pre[2] (String getLoggerName()): this.properties != null
    //#post(String getLoggerName()): init'ed(return_value)
    //#blog.java:702: end of method: String net.sourceforge.pebble.domain.Blog.getLoggerName()
  }

  /**
   * Gets a Collection containing the names of users that are blog owners
   * for this blog.
   *
   * @return  a Collection containng user names as Strings
   */
  public Collection getUsersInRole(String roleName) {
    List<String> users = new LinkedList<String>();
    //#blog.java:712: method: Collection net.sourceforge.pebble.domain.Blog.getUsersInRole(String)
    //#input(Collection getUsersInRole(String)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Collection getUsersInRole(String)): __Descendant_Table[others]
    //#input(Collection getUsersInRole(String)): __Dispatch_Table.getBlogContributors()Ljava/util/List;
    //#input(Collection getUsersInRole(String)): __Dispatch_Table.getBlogContributorsAsString()Ljava/lang/String;
    //#input(Collection getUsersInRole(String)): __Dispatch_Table.getBlogOwners()Ljava/util/List;
    //#input(Collection getUsersInRole(String)): __Dispatch_Table.getBlogOwnersAsString()Ljava/lang/String;
    //#input(Collection getUsersInRole(String)): __Dispatch_Table.getBlogPublishers()Ljava/util/List;
    //#input(Collection getUsersInRole(String)): __Dispatch_Table.getBlogPublishersAsString()Ljava/lang/String;
    //#input(Collection getUsersInRole(String)): __Dispatch_Table.getBlogReaders()Ljava/util/List;
    //#input(Collection getUsersInRole(String)): __Dispatch_Table.getBlogReadersAsString()Ljava/lang/String;
    //#input(Collection getUsersInRole(String)): net/sourceforge/pebble/Constants.BLOG_CONTRIBUTOR_ROLE
    //#input(Collection getUsersInRole(String)): net/sourceforge/pebble/Constants.BLOG_OWNER_ROLE
    //#input(Collection getUsersInRole(String)): net/sourceforge/pebble/Constants.BLOG_PUBLISHER_ROLE
    //#input(Collection getUsersInRole(String)): net/sourceforge/pebble/Constants.BLOG_READER_ROLE
    //#input(Collection getUsersInRole(String)): roleName
    //#input(Collection getUsersInRole(String)): this
    //#input(Collection getUsersInRole(String)): this.__Tag
    //#input(Collection getUsersInRole(String)): this.properties
    //#output(Collection getUsersInRole(String)): new LinkedList(getBlogContributors#1) num objects
    //#output(Collection getUsersInRole(String)): new LinkedList(getBlogOwners#1) num objects
    //#output(Collection getUsersInRole(String)): new LinkedList(getBlogPublishers#1) num objects
    //#output(Collection getUsersInRole(String)): new LinkedList(getBlogReaders#1) num objects
    //#output(Collection getUsersInRole(String)): new LinkedList(getUsersInRole#1) num objects
    //#output(Collection getUsersInRole(String)): return_value
    //#new obj(Collection getUsersInRole(String)): new LinkedList(getBlogContributors#1)
    //#new obj(Collection getUsersInRole(String)): new LinkedList(getBlogOwners#1)
    //#new obj(Collection getUsersInRole(String)): new LinkedList(getBlogPublishers#1)
    //#new obj(Collection getUsersInRole(String)): new LinkedList(getBlogReaders#1)
    //#new obj(Collection getUsersInRole(String)): new LinkedList(getUsersInRole#1)
    //#pre[2] (Collection getUsersInRole(String)): init'ed(net/sourceforge/pebble/Constants.BLOG_OWNER_ROLE)
    //#pre[5] (Collection getUsersInRole(String)): roleName != null
    //#pre[1] (Collection getUsersInRole(String)): (soft) init'ed(net/sourceforge/pebble/Constants.BLOG_CONTRIBUTOR_ROLE)
    //#pre[3] (Collection getUsersInRole(String)): (soft) init'ed(net/sourceforge/pebble/Constants.BLOG_PUBLISHER_ROLE)
    //#pre[4] (Collection getUsersInRole(String)): (soft) init'ed(net/sourceforge/pebble/Constants.BLOG_READER_ROLE)
    //#pre[7] (Collection getUsersInRole(String)): (soft) this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[8] (Collection getUsersInRole(String)): (soft) this.properties != null
    //#post(Collection getUsersInRole(String)): return_value == One-of{&new LinkedList(getBlogOwners#1), &new LinkedList(getBlogPublishers#1), &new LinkedList(getBlogContributors#1), &new LinkedList(getUsersInRole#1), &new LinkedList(getBlogReaders#1)}
    //#post(Collection getUsersInRole(String)): return_value in Addr_Set{&new LinkedList(getUsersInRole#1),&new LinkedList(getBlogContributors#1),&new LinkedList(getBlogReaders#1),&new LinkedList(getBlogOwners#1),&new LinkedList(getBlogPublishers#1)}
    //#post(Collection getUsersInRole(String)): new LinkedList(getBlogContributors#1) num objects <= 1
    //#post(Collection getUsersInRole(String)): new LinkedList(getBlogOwners#1) num objects <= 1
    //#post(Collection getUsersInRole(String)): new LinkedList(getBlogPublishers#1) num objects <= 1
    //#post(Collection getUsersInRole(String)): new LinkedList(getBlogReaders#1) num objects <= 1
    //#post(Collection getUsersInRole(String)): new LinkedList(getUsersInRole#1) num objects == 1
    //#unanalyzed(Collection getUsersInRole(String)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(Collection getUsersInRole(String)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Collection getUsersInRole(String)): Effects-of-calling:java.util.LinkedList
    //#unanalyzed(Collection getUsersInRole(String)): Effects-of-calling:java.util.StringTokenizer
    //#unanalyzed(Collection getUsersInRole(String)): Effects-of-calling:java.util.StringTokenizer:hasMoreTokens
    //#unanalyzed(Collection getUsersInRole(String)): Effects-of-calling:java.util.StringTokenizer:nextToken
    //#unanalyzed(Collection getUsersInRole(String)): Effects-of-calling:java.lang.String:trim
    //#test_vector(Collection getUsersInRole(String)): java.lang.String:equals(...)@714: {0}, {1}
    //#test_vector(Collection getUsersInRole(String)): java.lang.String:equals(...)@716: {0}, {1}
    //#test_vector(Collection getUsersInRole(String)): java.lang.String:equals(...)@718: {0}, {1}
    //#test_vector(Collection getUsersInRole(String)): java.lang.String:equals(...)@720: {0}, {1}

    if (roleName.equals(Constants.BLOG_OWNER_ROLE)) {
      users = getBlogOwners();
    } else if (roleName.equals(Constants.BLOG_PUBLISHER_ROLE)) {
      users = getBlogPublishers();
    } else if (roleName.equals(Constants.BLOG_CONTRIBUTOR_ROLE)) {
      users = getBlogContributors();
    } else if (roleName.equals(Constants.BLOG_READER_ROLE)) {
      users = getBlogReaders();
    }

    return users;
    //#blog.java:724: end of method: Collection net.sourceforge.pebble.domain.Blog.getUsersInRole(String)
  }

  /**
   * Determines whether the specified user is in the specified role.
   *
   * @param roleName    the name of the role
   * @param user        the name of the user
   * @return  true if the user is a member of the role or the list of users
   *          is empty, false otherwise
   */
  public boolean isUserInRole(String roleName, String user) {
    Collection users = getUsersInRole(roleName);
    //#blog.java:736: method: bool net.sourceforge.pebble.domain.Blog.isUserInRole(String, String)
    //#input(bool isUserInRole(String, String)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(bool isUserInRole(String, String)): __Descendant_Table[others]
    //#input(bool isUserInRole(String, String)): __Dispatch_Table.getBlogContributors()Ljava/util/List;
    //#input(bool isUserInRole(String, String)): __Dispatch_Table.getBlogContributorsAsString()Ljava/lang/String;
    //#input(bool isUserInRole(String, String)): __Dispatch_Table.getBlogOwners()Ljava/util/List;
    //#input(bool isUserInRole(String, String)): __Dispatch_Table.getBlogOwnersAsString()Ljava/lang/String;
    //#input(bool isUserInRole(String, String)): __Dispatch_Table.getBlogPublishers()Ljava/util/List;
    //#input(bool isUserInRole(String, String)): __Dispatch_Table.getBlogPublishersAsString()Ljava/lang/String;
    //#input(bool isUserInRole(String, String)): __Dispatch_Table.getBlogReaders()Ljava/util/List;
    //#input(bool isUserInRole(String, String)): __Dispatch_Table.getBlogReadersAsString()Ljava/lang/String;
    //#input(bool isUserInRole(String, String)): __Dispatch_Table.getUsersInRole(Ljava/lang/String;)Ljava/util/Collection;
    //#input(bool isUserInRole(String, String)): net/sourceforge/pebble/Constants.BLOG_CONTRIBUTOR_ROLE
    //#input(bool isUserInRole(String, String)): net/sourceforge/pebble/Constants.BLOG_OWNER_ROLE
    //#input(bool isUserInRole(String, String)): net/sourceforge/pebble/Constants.BLOG_PUBLISHER_ROLE
    //#input(bool isUserInRole(String, String)): net/sourceforge/pebble/Constants.BLOG_READER_ROLE
    //#input(bool isUserInRole(String, String)): roleName
    //#input(bool isUserInRole(String, String)): this
    //#input(bool isUserInRole(String, String)): this.__Tag
    //#input(bool isUserInRole(String, String)): this.properties
    //#input(bool isUserInRole(String, String)): user
    //#output(bool isUserInRole(String, String)): return_value
    //#pre[2] (bool isUserInRole(String, String)): init'ed(net/sourceforge/pebble/Constants.BLOG_OWNER_ROLE)
    //#pre[5] (bool isUserInRole(String, String)): roleName != null
    //#pre[7] (bool isUserInRole(String, String)): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[1] (bool isUserInRole(String, String)): (soft) init'ed(net/sourceforge/pebble/Constants.BLOG_CONTRIBUTOR_ROLE)
    //#pre[3] (bool isUserInRole(String, String)): (soft) init'ed(net/sourceforge/pebble/Constants.BLOG_PUBLISHER_ROLE)
    //#pre[4] (bool isUserInRole(String, String)): (soft) init'ed(net/sourceforge/pebble/Constants.BLOG_READER_ROLE)
    //#pre[8] (bool isUserInRole(String, String)): (soft) this.properties != null
    //#post(bool isUserInRole(String, String)): init'ed(return_value)
    //#unanalyzed(bool isUserInRole(String, String)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(bool isUserInRole(String, String)): Effects-of-calling:java.util.List:add
    //#unanalyzed(bool isUserInRole(String, String)): Effects-of-calling:java.util.LinkedList
    //#unanalyzed(bool isUserInRole(String, String)): Effects-of-calling:java.util.StringTokenizer
    //#unanalyzed(bool isUserInRole(String, String)): Effects-of-calling:java.util.StringTokenizer:hasMoreTokens
    //#unanalyzed(bool isUserInRole(String, String)): Effects-of-calling:java.util.StringTokenizer:nextToken
    //#unanalyzed(bool isUserInRole(String, String)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(bool isUserInRole(String, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(bool isUserInRole(String, String)): Effects-of-calling:getBlogPublishers
    //#unanalyzed(bool isUserInRole(String, String)): Effects-of-calling:getBlogReaders
    //#test_vector(bool isUserInRole(String, String)): java.util.Collection:contains(...)@737: {0}, {1}
    //#test_vector(bool isUserInRole(String, String)): java.util.Collection:isEmpty(...)@737: {1}, {0}
    if (users.isEmpty() || users.contains(user)) {
      return true;
    }

    return false;
    //#blog.java:741: end of method: bool net.sourceforge.pebble.domain.Blog.isUserInRole(String, String)
  }

  /**
   * Gets the Year instance for the specified year.
   *
   * @param year    the year as an int (e.g. 2003)
   * @return    a Year instance
   */
  public Year getBlogForYear(int year) {
    Iterator it = years.iterator();
    //#blog.java:751: method: Year net.sourceforge.pebble.domain.Blog.getBlogForYear(int)
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Year getBlogForYear(int)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Year getBlogForYear(int)): this
    //#input(Year getBlogForYear(int)): this.years
    //#input(Year getBlogForYear(int)): year
    //#output(Year getBlogForYear(int)): new ArrayList(Day#1) num objects
    //#output(Year getBlogForYear(int)): new ArrayList(Day#2) num objects
    //#output(Year getBlogForYear(int)): new ArrayList(Day#3) num objects
    //#output(Year getBlogForYear(int)): new Day(Month#2) num objects
    //#output(Year getBlogForYear(int)): new Day(Month#2).__Tag
    //#output(Year getBlogForYear(int)): new Day(Month#2).blog
    //#output(Year getBlogForYear(int)): new Day(Month#2).blogEntries
    //#output(Year getBlogForYear(int)): new Day(Month#2).date
    //#output(Year getBlogForYear(int)): new Day(Month#2).day
    //#output(Year getBlogForYear(int)): new Day(Month#2).month
    //#output(Year getBlogForYear(int)): new Day(Month#2).publishedBlogEntries
    //#output(Year getBlogForYear(int)): new Day(Month#2).unpublishedBlogEntries
    //#output(Year getBlogForYear(int)): new Day[](Month#1) num objects
    //#output(Year getBlogForYear(int)): new Day[](Month#1).length
    //#output(Year getBlogForYear(int)): new Day[](Month#1)[0..4_294_967_295]
    //#output(Year getBlogForYear(int)): new Month(init#2) num objects
    //#output(Year getBlogForYear(int)): new Month(init#2).__Tag
    //#output(Year getBlogForYear(int)): new Month(init#2).blog
    //#output(Year getBlogForYear(int)): new Month(init#2).dailyBlogs
    //#output(Year getBlogForYear(int)): new Month(init#2).date
    //#output(Year getBlogForYear(int)): new Month(init#2).lastDayInMonth
    //#output(Year getBlogForYear(int)): new Month(init#2).month
    //#output(Year getBlogForYear(int)): new Month(init#2).year
    //#output(Year getBlogForYear(int)): new Month[](init#1) num objects
    //#output(Year getBlogForYear(int)): new Month[](init#1).length
    //#output(Year getBlogForYear(int)): new Month[](init#1)[0..4_294_967_295]
    //#output(Year getBlogForYear(int)): new Year(getBlogForYear#1) num objects
    //#output(Year getBlogForYear(int)): new Year(getBlogForYear#1).__Tag
    //#output(Year getBlogForYear(int)): new Year(getBlogForYear#1).blog
    //#output(Year getBlogForYear(int)): new Year(getBlogForYear#1).date
    //#output(Year getBlogForYear(int)): new Year(getBlogForYear#1).months
    //#output(Year getBlogForYear(int)): new Year(getBlogForYear#1).year
    //#output(Year getBlogForYear(int)): return_value
    //#new obj(Year getBlogForYear(int)): new ArrayList(Day#1)
    //#new obj(Year getBlogForYear(int)): new ArrayList(Day#2)
    //#new obj(Year getBlogForYear(int)): new ArrayList(Day#3)
    //#new obj(Year getBlogForYear(int)): new Day(Month#2)
    //#new obj(Year getBlogForYear(int)): new Day[](Month#1)
    //#new obj(Year getBlogForYear(int)): new Month(init#2)
    //#new obj(Year getBlogForYear(int)): new Month[](init#1)
    //#new obj(Year getBlogForYear(int)): new Year(getBlogForYear#1)
    //#pre[2] (Year getBlogForYear(int)): this.years != null
    //#presumption(Year getBlogForYear(int)): java.util.Iterator:next(...).__Tag@754 == net/sourceforge/pebble/domain/Year
    //#presumption(Year getBlogForYear(int)): java.util.Iterator:next(...)@754 != null
    //#post(Year getBlogForYear(int)): (soft) return_value != null
    //#post(Year getBlogForYear(int)): init'ed(new ArrayList(Day#1) num objects)
    //#post(Year getBlogForYear(int)): init'ed(new ArrayList(Day#2) num objects)
    //#post(Year getBlogForYear(int)): init'ed(new ArrayList(Day#3) num objects)
    //#post(Year getBlogForYear(int)): init'ed(new Day(Month#2) num objects)
    //#post(Year getBlogForYear(int)): init'ed(new Day(Month#2).__Tag)
    //#post(Year getBlogForYear(int)): init'ed(new Day(Month#2).blog)
    //#post(Year getBlogForYear(int)): init'ed(new Day(Month#2).blogEntries)
    //#post(Year getBlogForYear(int)): init'ed(new Day(Month#2).date)
    //#post(Year getBlogForYear(int)): init'ed(new Day(Month#2).day)
    //#post(Year getBlogForYear(int)): init'ed(new Day(Month#2).month)
    //#post(Year getBlogForYear(int)): init'ed(new Day(Month#2).publishedBlogEntries)
    //#post(Year getBlogForYear(int)): init'ed(new Day(Month#2).unpublishedBlogEntries)
    //#post(Year getBlogForYear(int)): new Day[](Month#1) num objects in {0, 12}
    //#post(Year getBlogForYear(int)): init'ed(new Day[](Month#1).length)
    //#post(Year getBlogForYear(int)): init'ed(new Day[](Month#1)[0..4_294_967_295])
    //#post(Year getBlogForYear(int)): new Month(init#2) num objects in {0, 12}
    //#post(Year getBlogForYear(int)): new Month(init#2).__Tag == net/sourceforge/pebble/domain/Month
    //#post(Year getBlogForYear(int)): new Month(init#2).blog != null
    //#post(Year getBlogForYear(int)): new Month(init#2).dailyBlogs != null
    //#post(Year getBlogForYear(int)): init'ed(new Month(init#2).date)
    //#post(Year getBlogForYear(int)): init'ed(new Month(init#2).lastDayInMonth)
    //#post(Year getBlogForYear(int)): new Month(init#2).month == 13
    //#post(Year getBlogForYear(int)): new Month(init#2).year != null
    //#post(Year getBlogForYear(int)): new Month[](init#1) num objects <= 1
    //#post(Year getBlogForYear(int)): new Month[](init#1).length == 12
    //#post(Year getBlogForYear(int)): init'ed(new Month[](init#1)[0..4_294_967_295])
    //#post(Year getBlogForYear(int)): new Year(getBlogForYear#1) num objects <= 1
    //#post(Year getBlogForYear(int)): new Year(getBlogForYear#1).__Tag == net/sourceforge/pebble/domain/Year
    //#post(Year getBlogForYear(int)): new Year(getBlogForYear#1).blog != null
    //#post(Year getBlogForYear(int)): init'ed(new Year(getBlogForYear#1).date)
    //#post(Year getBlogForYear(int)): new Year(getBlogForYear#1).months == &new Month[](init#1)
    //#post(Year getBlogForYear(int)): new Year(getBlogForYear#1).year == year
    //#post(Year getBlogForYear(int)): init'ed(new Year(getBlogForYear#1).year)
    //#unanalyzed(Year getBlogForYear(int)): Effects-of-calling:getBlog
    //#unanalyzed(Year getBlogForYear(int)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Year getBlogForYear(int)): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(Year getBlogForYear(int)): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Year getBlogForYear(int)): Effects-of-calling:setDate
    //#unanalyzed(Year getBlogForYear(int)): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(Year getBlogForYear(int)): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(Year getBlogForYear(int)): Effects-of-calling:getMonth
    //#unanalyzed(Year getBlogForYear(int)): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Year getBlogForYear(int)): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(Year getBlogForYear(int)): Effects-of-calling:getYear
    //#unanalyzed(Year getBlogForYear(int)): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(Year getBlogForYear(int)): Effects-of-calling:java.util.ArrayList
    //#test_vector(Year getBlogForYear(int)): java.util.Iterator:hasNext(...)@753: {1}, {0}
    Year y;
    while (it.hasNext()) {
      y = (Year)it.next();
      if (y.getYear() == year) {
        return y;
      }
    }

    y = new Year(this, year);
    years.add(y);
    Collections.sort(years);

    return y;
    //#blog.java:764: end of method: Year net.sourceforge.pebble.domain.Blog.getBlogForYear(int)
  }

  /**
   * Gets the Year instance representing this year.
   *
   * @return  a Year instance for this year
   */
  public Year getBlogForThisYear() {
    Calendar cal = getCalendar();
    //#blog.java:773: method: Year net.sourceforge.pebble.domain.Blog.getBlogForThisYear()
    //#input(Year getBlogForThisYear()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Year getBlogForThisYear()): __Descendant_Table[others]
    //#input(Year getBlogForThisYear()): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(Year getBlogForThisYear()): __Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#input(Year getBlogForThisYear()): __Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Year getBlogForThisYear()): __Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Year getBlogForThisYear()): __Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Year getBlogForThisYear()): __Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Year getBlogForThisYear()): __Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/AbstractBlog]
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/MultiBlog]
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[others]
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Year getBlogForThisYear()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Year getBlogForThisYear()): this
    //#input(Year getBlogForThisYear()): this.__Tag
    //#input(Year getBlogForThisYear()): this.properties
    //#input(Year getBlogForThisYear()): this.years
    //#output(Year getBlogForThisYear()): new ArrayList(Day#1) num objects
    //#output(Year getBlogForThisYear()): new ArrayList(Day#2) num objects
    //#output(Year getBlogForThisYear()): new ArrayList(Day#3) num objects
    //#output(Year getBlogForThisYear()): new Day(Month#2) num objects
    //#output(Year getBlogForThisYear()): new Day(Month#2).__Tag
    //#output(Year getBlogForThisYear()): new Day(Month#2).blog
    //#output(Year getBlogForThisYear()): new Day(Month#2).blogEntries
    //#output(Year getBlogForThisYear()): new Day(Month#2).date
    //#output(Year getBlogForThisYear()): new Day(Month#2).day
    //#output(Year getBlogForThisYear()): new Day(Month#2).month
    //#output(Year getBlogForThisYear()): new Day(Month#2).publishedBlogEntries
    //#output(Year getBlogForThisYear()): new Day(Month#2).unpublishedBlogEntries
    //#output(Year getBlogForThisYear()): new Day[](Month#1) num objects
    //#output(Year getBlogForThisYear()): new Day[](Month#1).length
    //#output(Year getBlogForThisYear()): new Day[](Month#1)[0..4_294_967_295]
    //#output(Year getBlogForThisYear()): new Month(init#2) num objects
    //#output(Year getBlogForThisYear()): new Month(init#2).__Tag
    //#output(Year getBlogForThisYear()): new Month(init#2).blog
    //#output(Year getBlogForThisYear()): new Month(init#2).dailyBlogs
    //#output(Year getBlogForThisYear()): new Month(init#2).date
    //#output(Year getBlogForThisYear()): new Month(init#2).lastDayInMonth
    //#output(Year getBlogForThisYear()): new Month(init#2).month
    //#output(Year getBlogForThisYear()): new Month(init#2).year
    //#output(Year getBlogForThisYear()): new Month[](init#1) num objects
    //#output(Year getBlogForThisYear()): new Year(getBlogForYear#1).months.length
    //#output(Year getBlogForThisYear()): new Year(getBlogForYear#1).months[0..4_294_967_295]
    //#output(Year getBlogForThisYear()): new Year(getBlogForYear#1) num objects
    //#output(Year getBlogForThisYear()): new Year(getBlogForYear#1).__Tag
    //#output(Year getBlogForThisYear()): new Year(getBlogForYear#1).blog
    //#output(Year getBlogForThisYear()): new Year(getBlogForYear#1).date
    //#output(Year getBlogForThisYear()): new Year(getBlogForYear#1).months
    //#output(Year getBlogForThisYear()): new Year(getBlogForYear#1).year
    //#output(Year getBlogForThisYear()): return_value
    //#new obj(Year getBlogForThisYear()): new ArrayList(Day#1)
    //#new obj(Year getBlogForThisYear()): new ArrayList(Day#2)
    //#new obj(Year getBlogForThisYear()): new ArrayList(Day#3)
    //#new obj(Year getBlogForThisYear()): new Day(Month#2)
    //#new obj(Year getBlogForThisYear()): new Day[](Month#1)
    //#new obj(Year getBlogForThisYear()): new Month(init#2)
    //#new obj(Year getBlogForThisYear()): new Month[](init#1)
    //#new obj(Year getBlogForThisYear()): new Year(getBlogForYear#1)
    //#pre[2] (Year getBlogForThisYear()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (Year getBlogForThisYear()): this.properties != null
    //#pre[4] (Year getBlogForThisYear()): this.years != null
    //#presumption(Year getBlogForThisYear()): java.util.Calendar:getInstance(...)@329 != null
    //#post(Year getBlogForThisYear()): return_value != null
    //#post(Year getBlogForThisYear()): init'ed(new ArrayList(Day#1) num objects)
    //#post(Year getBlogForThisYear()): init'ed(new ArrayList(Day#2) num objects)
    //#post(Year getBlogForThisYear()): init'ed(new ArrayList(Day#3) num objects)
    //#post(Year getBlogForThisYear()): init'ed(new Day(Month#2) num objects)
    //#post(Year getBlogForThisYear()): init'ed(new Day(Month#2).__Tag)
    //#post(Year getBlogForThisYear()): init'ed(new Day(Month#2).blog)
    //#post(Year getBlogForThisYear()): init'ed(new Day(Month#2).blogEntries)
    //#post(Year getBlogForThisYear()): init'ed(new Day(Month#2).date)
    //#post(Year getBlogForThisYear()): init'ed(new Day(Month#2).day)
    //#post(Year getBlogForThisYear()): init'ed(new Day(Month#2).month)
    //#post(Year getBlogForThisYear()): init'ed(new Day(Month#2).publishedBlogEntries)
    //#post(Year getBlogForThisYear()): init'ed(new Day(Month#2).unpublishedBlogEntries)
    //#post(Year getBlogForThisYear()): new Day[](Month#1) num objects in {0, 12}
    //#post(Year getBlogForThisYear()): init'ed(new Day[](Month#1).length)
    //#post(Year getBlogForThisYear()): init'ed(new Day[](Month#1)[0..4_294_967_295])
    //#post(Year getBlogForThisYear()): new Month(init#2) num objects in {0, 12}
    //#post(Year getBlogForThisYear()): new Month(init#2).__Tag == net/sourceforge/pebble/domain/Month
    //#post(Year getBlogForThisYear()): new Month(init#2).blog != null
    //#post(Year getBlogForThisYear()): new Month(init#2).dailyBlogs != null
    //#post(Year getBlogForThisYear()): init'ed(new Month(init#2).date)
    //#post(Year getBlogForThisYear()): init'ed(new Month(init#2).lastDayInMonth)
    //#post(Year getBlogForThisYear()): new Month(init#2).month == 13
    //#post(Year getBlogForThisYear()): new Month(init#2).year != null
    //#post(Year getBlogForThisYear()): new Month[](init#1) num objects <= 1
    //#post(Year getBlogForThisYear()): new Year(getBlogForYear#1) num objects == new Month[](init#1) num objects
    //#post(Year getBlogForThisYear()): new Year(getBlogForYear#1).months.length == 12
    //#post(Year getBlogForThisYear()): init'ed(new Year(getBlogForYear#1).months[0..4_294_967_295])
    //#post(Year getBlogForThisYear()): new Year(getBlogForYear#1).__Tag == net/sourceforge/pebble/domain/Year
    //#post(Year getBlogForThisYear()): new Year(getBlogForYear#1).blog != null
    //#post(Year getBlogForThisYear()): init'ed(new Year(getBlogForYear#1).date)
    //#post(Year getBlogForThisYear()): new Year(getBlogForYear#1).months == &new Month[](init#1)
    //#post(Year getBlogForThisYear()): init'ed(new Year(getBlogForYear#1).year)
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:java.util.List:add
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:getTimeZone
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:getLocale
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:java.util.Locale
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:java.util.TimeZone:getTimeZone
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:getBlog
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:setDate
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:getMonth
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:getYear
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(Year getBlogForThisYear()): Effects-of-calling:java.util.ArrayList
    return getBlogForYear(cal.get(Calendar.YEAR));
    //#blog.java:774: end of method: Year net.sourceforge.pebble.domain.Blog.getBlogForThisYear()
  }

  /**
   * Gets all Years managed by this root blog.
   *
   * @return  a Collection of Year instances
   */
  public List getYears() {
    return years;
    //#blog.java:783: method: List net.sourceforge.pebble.domain.Blog.getYears()
    //#input(List getYears()): this
    //#input(List getYears()): this.years
    //#output(List getYears()): return_value
    //#pre[2] (List getYears()): init'ed(this.years)
    //#post(List getYears()): return_value == this.years
    //#post(List getYears()): init'ed(return_value)
    //#blog.java:783: end of method: List net.sourceforge.pebble.domain.Blog.getYears()
  }

  /**
   * Gets all Years managed by this root blog, in reverse order.
   *
   * @return  a Collection of Year instances
   */
  public List<Year> getArchives() {
    List<Year> list = new LinkedList<Year>();
    //#blog.java:792: method: List net.sourceforge.pebble.domain.Blog.getArchives()
    //#input(List getArchives()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getArchives()): __Descendant_Table[others]
    //#input(List getArchives()): __Dispatch_Table.getBlogEntryIndex()Lnet/sourceforge/pebble/index/BlogEntryIndex;
    //#input(List getArchives()): __Dispatch_Table.getBlogForDay(III)Lnet/sourceforge/pebble/domain/Day;
    //#input(List getArchives()): __Dispatch_Table.getBlogForDay(Ljava/util/Date;)Lnet/sourceforge/pebble/domain/Day;
    //#input(List getArchives()): __Dispatch_Table.getBlogForFirstMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(List getArchives()): __Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month;
    //#input(List getArchives()): __Dispatch_Table.getBlogForThisMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(List getArchives()): __Dispatch_Table.getBlogForThisYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(List getArchives()): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(List getArchives()): __Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#input(List getArchives()): __Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(List getArchives()): __Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(List getArchives()): __Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(List getArchives()): __Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(List getArchives()): __Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(List getArchives()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/AbstractBlog]
    //#input(List getArchives()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getArchives()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/MultiBlog]
    //#input(List getArchives()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[others]
    //#input(List getArchives()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(List getArchives()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(List getArchives()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(List getArchives()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(List getArchives()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(List getArchives()): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(List getArchives()): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(List getArchives()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(List getArchives()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(List getArchives()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(List getArchives()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(List getArchives()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(List getArchives()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(List getArchives()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(List getArchives()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForDay(I)Lnet/sourceforge/pebble/domain/Day;
    //#input(List getArchives()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(List getArchives()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(List getArchives()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(List getArchives()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(List getArchives()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(List getArchives()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(List getArchives()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(List getArchives()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(List getArchives()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(List getArchives()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(List getArchives()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(List getArchives()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(List getArchives()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(List getArchives()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(List getArchives()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(List getArchives()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[net/sourceforge/pebble/index/BlogEntryIndex]
    //#input(List getArchives()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[others]
    //#input(List getArchives()): net/sourceforge/pebble/index/BlogEntryIndex.__Dispatch_Table.getBlogEntries()Ljava/util/List;
    //#input(List getArchives()): this
    //#input(List getArchives()): this.__Tag
    //#input(List getArchives()): this.blogEntryIndex
    //#input(List getArchives()): this.blogEntryIndex.__Tag
    //#input(List getArchives()): this.blogEntryIndex.indexEntries
    //#input(List getArchives()): this.properties
    //#input(List getArchives()): this.years
    //#output(List getArchives()): new LinkedList(getArchives#1) num objects
    //#output(List getArchives()): return_value
    //#new obj(List getArchives()): new LinkedList(getArchives#1)
    //#pre[2] (List getArchives()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (List getArchives()): init'ed(this.blogEntryIndex)
    //#pre[7] (List getArchives()): this.years != null
    //#pre[4] (List getArchives()): (soft) this.blogEntryIndex.__Tag == net/sourceforge/pebble/index/BlogEntryIndex
    //#pre[5] (List getArchives()): (soft) init'ed(this.blogEntryIndex.indexEntries)
    //#pre[6] (List getArchives()): (soft) this.properties != null
    //#presumption(List getArchives()): getBlogForFirstMonth(...).__Tag@793 == net/sourceforge/pebble/domain/Month
    //#presumption(List getArchives()): getBlogForFirstMonth(...).year@793 != null
    //#presumption(List getArchives()): getBlogForThisYear(...).__Tag@794 == net/sourceforge/pebble/domain/Year
    //#presumption(List getArchives()): getYear(...).__Tag@793 == net/sourceforge/pebble/domain/Year
    //#presumption(List getArchives()): java.util.Iterator:next(...).__Tag@797 == net/sourceforge/pebble/domain/Year
    //#presumption(List getArchives()): java.util.Iterator:next(...)@797 != null
    //#post(List getArchives()): return_value == &new LinkedList(getArchives#1)
    //#post(List getArchives()): new LinkedList(getArchives#1) num objects == 1
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.List:size
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.List:get
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.Date
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.List:add
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(List getArchives()): Effects-of-calling:getTimeZone
    //#unanalyzed(List getArchives()): Effects-of-calling:getLocale
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.Locale
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.TimeZone:getTimeZone
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.Calendar:get
    //#unanalyzed(List getArchives()): Effects-of-calling:getBlogForMonth
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.List:isEmpty
    //#unanalyzed(List getArchives()): Effects-of-calling:java.lang.Long:parseLong
    //#unanalyzed(List getArchives()): Effects-of-calling:getBlogForDay
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(List getArchives()): Effects-of-calling:getBlogForYear
    //#unanalyzed(List getArchives()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(List getArchives()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(List getArchives()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(List getArchives()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(List getArchives()): Effects-of-calling:getBlog
    //#unanalyzed(List getArchives()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(List getArchives()): Effects-of-calling:setDate
    //#unanalyzed(List getArchives()): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(List getArchives()): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(List getArchives()): Effects-of-calling:getMonth
    //#unanalyzed(List getArchives()): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(List getArchives()): Effects-of-calling:getYear
    //#unanalyzed(List getArchives()): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#test_vector(List getArchives()): java.util.Iterator:hasNext(...)@797: {1}, {0}
    int firstYear = getBlogForFirstMonth().getYear().getYear();
    //#blog.java:793: ?null dereference
    //#    getBlogForFirstMonth(...) != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getArchives()
    //#    basic block: Entry_BB_1
    //#    assertion: getBlogForFirstMonth(...) != null
    //#    VN: getBlogForFirstMonth(...)
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    int thisYear = getBlogForThisYear().getYear();
    //#blog.java:794: ?use of default init
    //#    init'ed(getBlogForThisYear(...).__Tag)
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getArchives()
    //#    basic block: Entry_BB_1
    //#    assertion: init'ed(getBlogForThisYear(...).__Tag)
    //#    VN: getBlogForThisYear(...).__Tag
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#blog.java:794: ?null dereference
    //#    net/sourceforge/pebble/domain/Year.__Descendant_Table[getBlogForThisYear(...).__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getArchives()
    //#    basic block: Entry_BB_1
    //#    assertion: net/sourceforge/pebble/domain/Year.__Descendant_Table[getBlogForThisYear(...).__Tag] != null
    //#    VN: net/sourceforge/pebble/domain/Year.__Descendant_Table[getBlogForThisYear(...).__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    // only add years that are in range
    Calendar cal = getCalendar();
    //#blog.java:796: Warning: unused assignment
    //#    unused assignment into cal
    //#    severity: LOW
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getArchives()
    for (Year year : years) {
      if (year.getYear() >= firstYear && year.getYear() <= thisYear) {
        list.add(year);
      }
    }
    Collections.reverse(list);
    return list;
    //#blog.java:803: end of method: List net.sourceforge.pebble.domain.Blog.getArchives()
  }

  /**
   * Gets the Month instance representing the first month that
   * contains blog entries.
   *
   * @return  a Month instance
   */
  public Month getBlogForFirstMonth() {
    if (getBlogEntryIndex() == null) {
    //#blog.java:813: method: Month net.sourceforge.pebble.domain.Blog.getBlogForFirstMonth()
    //#input(Month getBlogForFirstMonth()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Month getBlogForFirstMonth()): __Descendant_Table[others]
    //#input(Month getBlogForFirstMonth()): __Dispatch_Table.getBlogEntryIndex()Lnet/sourceforge/pebble/index/BlogEntryIndex;
    //#input(Month getBlogForFirstMonth()): __Dispatch_Table.getBlogForDay(III)Lnet/sourceforge/pebble/domain/Day;
    //#input(Month getBlogForFirstMonth()): __Dispatch_Table.getBlogForDay(Ljava/util/Date;)Lnet/sourceforge/pebble/domain/Day;
    //#input(Month getBlogForFirstMonth()): __Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month;
    //#input(Month getBlogForFirstMonth()): __Dispatch_Table.getBlogForThisMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Month getBlogForFirstMonth()): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(Month getBlogForFirstMonth()): __Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#input(Month getBlogForFirstMonth()): __Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Month getBlogForFirstMonth()): __Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Month getBlogForFirstMonth()): __Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Month getBlogForFirstMonth()): __Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Month getBlogForFirstMonth()): __Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/AbstractBlog]
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/MultiBlog]
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[others]
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForDay(I)Lnet/sourceforge/pebble/domain/Day;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[net/sourceforge/pebble/index/BlogEntryIndex]
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[others]
    //#input(Month getBlogForFirstMonth()): net/sourceforge/pebble/index/BlogEntryIndex.__Dispatch_Table.getBlogEntries()Ljava/util/List;
    //#input(Month getBlogForFirstMonth()): this
    //#input(Month getBlogForFirstMonth()): this.__Tag
    //#input(Month getBlogForFirstMonth()): this.blogEntryIndex
    //#input(Month getBlogForFirstMonth()): this.blogEntryIndex.__Tag
    //#input(Month getBlogForFirstMonth()): this.blogEntryIndex.indexEntries
    //#input(Month getBlogForFirstMonth()): this.properties
    //#input(Month getBlogForFirstMonth()): this.years
    //#output(Month getBlogForFirstMonth()): new ArrayList(Day#1) num objects
    //#output(Month getBlogForFirstMonth()): new ArrayList(Day#2) num objects
    //#output(Month getBlogForFirstMonth()): new ArrayList(Day#3) num objects
    //#output(Month getBlogForFirstMonth()): new Day(Month#2) num objects
    //#output(Month getBlogForFirstMonth()): new Day(Month#2).__Tag
    //#output(Month getBlogForFirstMonth()): new Day(Month#2).blog
    //#output(Month getBlogForFirstMonth()): new Day(Month#2).blogEntries
    //#output(Month getBlogForFirstMonth()): new Day(Month#2).date
    //#output(Month getBlogForFirstMonth()): new Day(Month#2).day
    //#output(Month getBlogForFirstMonth()): new Day(Month#2).month
    //#output(Month getBlogForFirstMonth()): new Day(Month#2).publishedBlogEntries
    //#output(Month getBlogForFirstMonth()): new Day(Month#2).unpublishedBlogEntries
    //#output(Month getBlogForFirstMonth()): new Day[](Month#1) num objects
    //#output(Month getBlogForFirstMonth()): new Day[](Month#1).length
    //#output(Month getBlogForFirstMonth()): new Day[](Month#1)[0..4_294_967_295]
    //#output(Month getBlogForFirstMonth()): new Month(init#2) num objects
    //#output(Month getBlogForFirstMonth()): new Month(init#2).__Tag
    //#output(Month getBlogForFirstMonth()): new Month(init#2).blog
    //#output(Month getBlogForFirstMonth()): new Month(init#2).dailyBlogs
    //#output(Month getBlogForFirstMonth()): new Month(init#2).date
    //#output(Month getBlogForFirstMonth()): new Month(init#2).lastDayInMonth
    //#output(Month getBlogForFirstMonth()): new Month(init#2).month
    //#output(Month getBlogForFirstMonth()): new Month(init#2).year
    //#output(Month getBlogForFirstMonth()): return_value
    //#new obj(Month getBlogForFirstMonth()): new ArrayList(Day#1)
    //#new obj(Month getBlogForFirstMonth()): new ArrayList(Day#2)
    //#new obj(Month getBlogForFirstMonth()): new ArrayList(Day#3)
    //#new obj(Month getBlogForFirstMonth()): new Day(Month#2)
    //#new obj(Month getBlogForFirstMonth()): new Day[](Month#1)
    //#new obj(Month getBlogForFirstMonth()): new Month(init#2)
    //#pre[2] (Month getBlogForFirstMonth()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (Month getBlogForFirstMonth()): init'ed(this.blogEntryIndex)
    //#pre[4] (Month getBlogForFirstMonth()): (soft) this.blogEntryIndex.__Tag == net/sourceforge/pebble/index/BlogEntryIndex
    //#pre[5] (Month getBlogForFirstMonth()): (soft) init'ed(this.blogEntryIndex.indexEntries)
    //#pre[6] (Month getBlogForFirstMonth()): (soft) this.properties != null
    //#pre[7] (Month getBlogForFirstMonth()): (soft) this.years != null
    //#presumption(Month getBlogForFirstMonth()): getBlogForDay(...).__Tag@829 == net/sourceforge/pebble/domain/Day
    //#presumption(Month getBlogForFirstMonth()): java.util.List:size(...)@822 >= -2_147_483_647
    //#post(Month getBlogForFirstMonth()): init'ed(return_value)
    //#post(Month getBlogForFirstMonth()): init'ed(new ArrayList(Day#1) num objects)
    //#post(Month getBlogForFirstMonth()): init'ed(new ArrayList(Day#2) num objects)
    //#post(Month getBlogForFirstMonth()): init'ed(new ArrayList(Day#3) num objects)
    //#post(Month getBlogForFirstMonth()): init'ed(new Day(Month#2) num objects)
    //#post(Month getBlogForFirstMonth()): init'ed(new Day(Month#2).__Tag)
    //#post(Month getBlogForFirstMonth()): init'ed(new Day(Month#2).blog)
    //#post(Month getBlogForFirstMonth()): init'ed(new Day(Month#2).blogEntries)
    //#post(Month getBlogForFirstMonth()): init'ed(new Day(Month#2).date)
    //#post(Month getBlogForFirstMonth()): init'ed(new Day(Month#2).day)
    //#post(Month getBlogForFirstMonth()): init'ed(new Day(Month#2).month)
    //#post(Month getBlogForFirstMonth()): init'ed(new Day(Month#2).publishedBlogEntries)
    //#post(Month getBlogForFirstMonth()): init'ed(new Day(Month#2).unpublishedBlogEntries)
    //#post(Month getBlogForFirstMonth()): new Day[](Month#1) num objects in {0, 12}
    //#post(Month getBlogForFirstMonth()): init'ed(new Day[](Month#1).length)
    //#post(Month getBlogForFirstMonth()): init'ed(new Day[](Month#1)[0..4_294_967_295])
    //#post(Month getBlogForFirstMonth()): new Month(init#2) num objects in {0, 12}
    //#post(Month getBlogForFirstMonth()): new Month(init#2).__Tag == net/sourceforge/pebble/domain/Month
    //#post(Month getBlogForFirstMonth()): new Month(init#2).blog != null
    //#post(Month getBlogForFirstMonth()): new Month(init#2).dailyBlogs != null
    //#post(Month getBlogForFirstMonth()): init'ed(new Month(init#2).date)
    //#post(Month getBlogForFirstMonth()): init'ed(new Month(init#2).lastDayInMonth)
    //#post(Month getBlogForFirstMonth()): new Month(init#2).month == 13
    //#post(Month getBlogForFirstMonth()): new Month(init#2).year != null
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.List:add
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:getTimeZone
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:getLocale
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.Locale
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.TimeZone:getTimeZone
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.Calendar:get
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:getBlogForMonth
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:getBlogForDay
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:getBlog
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:setDate
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:getMonth
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:getYear
    //#unanalyzed(Month getBlogForFirstMonth()): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#test_vector(Month getBlogForFirstMonth()): this.blogEntryIndex: Inverse{null}, Addr_Set{null}
    //#test_vector(Month getBlogForFirstMonth()): java.util.List:get(...)@822: Inverse{null}, Addr_Set{null}
    //#test_vector(Month getBlogForFirstMonth()): java.util.List:isEmpty(...)@818: {0}, {1}
      return getBlogForThisMonth();
    }

    List<String> blogEntryIds = getBlogEntryIndex().getBlogEntries();
    if (blogEntryIds == null || blogEntryIds.isEmpty()) {
    //#blog.java:818: Warning: test always goes same way
    //#    test predetermined because blogEntryIds != null
    //#    severity: LOW
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: Month getBlogForFirstMonth()
    //#    from bb: bb_3
    //#    live edge: bb_3-->bb_4
    //#    tested vn: 0
    //#    tested vn values: {0}
      return getBlogForThisMonth();
    }

    String firstBlogEntryId = blogEntryIds.get(blogEntryIds.size()-1);
    if (firstBlogEntryId == null) {
      return getBlogForThisMonth();
    }

    long dateInMillis = Long.parseLong(firstBlogEntryId);
    Date date = new Date(dateInMillis);
    return getBlogForDay(date).getMonth();
    //#blog.java:829: ?null dereference
    //#    getBlogForDay(...) != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: Month getBlogForFirstMonth()
    //#    basic block: bb_8
    //#    assertion: getBlogForDay(...) != null
    //#    VN: getBlogForDay(...)
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#blog.java:829: ?null dereference
    //#    net/sourceforge/pebble/domain/Day.__Descendant_Table[getBlogForDay(...).__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: Month getBlogForFirstMonth()
    //#    basic block: bb_8
    //#    assertion: net/sourceforge/pebble/domain/Day.__Descendant_Table[getBlogForDay(...).__Tag] != null
    //#    VN: net/sourceforge/pebble/domain/Day.__Descendant_Table[getBlogForDay(...).__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#blog.java:829: end of method: Month net.sourceforge.pebble.domain.Blog.getBlogForFirstMonth()
  }

  /**
   * Gets a Day intance for the specified Date.
   *
   * @param date    a java.util.Date instance
   * @return    a Day instance representing the specified Date
   */
  public Day getBlogForDay(Date date) {
    Calendar cal = getCalendar();
    //#blog.java:839: method: Day net.sourceforge.pebble.domain.Blog.getBlogForDay(Date)
    //#input(Day getBlogForDay(Date)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Day getBlogForDay(Date)): __Descendant_Table[others]
    //#input(Day getBlogForDay(Date)): __Dispatch_Table.getBlogForDay(III)Lnet/sourceforge/pebble/domain/Day;
    //#input(Day getBlogForDay(Date)): __Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getBlogForDay(Date)): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(Day getBlogForDay(Date)): __Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#input(Day getBlogForDay(Date)): __Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Day getBlogForDay(Date)): __Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Day getBlogForDay(Date)): __Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Day getBlogForDay(Date)): __Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Day getBlogForDay(Date)): __Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Day getBlogForDay(Date)): date
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/AbstractBlog]
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/MultiBlog]
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[others]
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForDay(I)Lnet/sourceforge/pebble/domain/Day;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Day getBlogForDay(Date)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getBlogForDay(Date)): this
    //#input(Day getBlogForDay(Date)): this.__Tag
    //#input(Day getBlogForDay(Date)): this.properties
    //#input(Day getBlogForDay(Date)): this.years
    //#output(Day getBlogForDay(Date)): new ArrayList(Day#1) num objects
    //#output(Day getBlogForDay(Date)): new ArrayList(Day#2) num objects
    //#output(Day getBlogForDay(Date)): new ArrayList(Day#3) num objects
    //#output(Day getBlogForDay(Date)): new Day(Month#2) num objects
    //#output(Day getBlogForDay(Date)): new Day(Month#2).__Tag
    //#output(Day getBlogForDay(Date)): new Day(Month#2).blog
    //#output(Day getBlogForDay(Date)): new Day(Month#2).blogEntries
    //#output(Day getBlogForDay(Date)): new Day(Month#2).date
    //#output(Day getBlogForDay(Date)): new Day(Month#2).day
    //#output(Day getBlogForDay(Date)): new Day(Month#2).month
    //#output(Day getBlogForDay(Date)): new Day(Month#2).publishedBlogEntries
    //#output(Day getBlogForDay(Date)): new Day(Month#2).unpublishedBlogEntries
    //#output(Day getBlogForDay(Date)): return_value
    //#new obj(Day getBlogForDay(Date)): new ArrayList(Day#1)
    //#new obj(Day getBlogForDay(Date)): new ArrayList(Day#2)
    //#new obj(Day getBlogForDay(Date)): new ArrayList(Day#3)
    //#new obj(Day getBlogForDay(Date)): new Day(Month#2)
    //#pre[3] (Day getBlogForDay(Date)): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[4] (Day getBlogForDay(Date)): this.properties != null
    //#pre[5] (Day getBlogForDay(Date)): this.years != null
    //#presumption(Day getBlogForDay(Date)): java.util.Calendar:get(...)@843 in 0..11
    //#presumption(Day getBlogForDay(Date)): java.util.Calendar:get(...)@844 >= 1
    //#presumption(Day getBlogForDay(Date)): java.util.Calendar:getInstance(...)@329 != null
    //#post(Day getBlogForDay(Date)): init'ed(return_value)
    //#post(Day getBlogForDay(Date)): init'ed(new ArrayList(Day#1) num objects)
    //#post(Day getBlogForDay(Date)): init'ed(new ArrayList(Day#2) num objects)
    //#post(Day getBlogForDay(Date)): init'ed(new ArrayList(Day#3) num objects)
    //#post(Day getBlogForDay(Date)): init'ed(new Day(Month#2) num objects)
    //#post(Day getBlogForDay(Date)): init'ed(new Day(Month#2).__Tag)
    //#post(Day getBlogForDay(Date)): init'ed(new Day(Month#2).blog)
    //#post(Day getBlogForDay(Date)): init'ed(new Day(Month#2).blogEntries)
    //#post(Day getBlogForDay(Date)): init'ed(new Day(Month#2).date)
    //#post(Day getBlogForDay(Date)): init'ed(new Day(Month#2).day)
    //#post(Day getBlogForDay(Date)): init'ed(new Day(Month#2).month)
    //#post(Day getBlogForDay(Date)): init'ed(new Day(Month#2).publishedBlogEntries)
    //#post(Day getBlogForDay(Date)): init'ed(new Day(Month#2).unpublishedBlogEntries)
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:getTimeZone
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:getLocale
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.util.Locale
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.util.TimeZone:getTimeZone
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:getBlogForMonth
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:getBlog
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:setDate
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:getMonth
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:getYear
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(Day getBlogForDay(Date)): Effects-of-calling:java.util.ArrayList
    cal.setTime(date);

    int year = cal.get(Calendar.YEAR);
    int month = (cal.get(Calendar.MONTH) + 1);
    int day = cal.get(Calendar.DAY_OF_MONTH);

    return getBlogForDay(year, month, day);
    //#blog.java:846: end of method: Day net.sourceforge.pebble.domain.Blog.getBlogForDay(Date)
  }

  /**
   * Gets the Day instance for today.
   *
   * @return    a Day instance
   */
  public Day getBlogForToday() {
    return this.getBlogForDay(getCalendar().getTime());
    //#blog.java:855: method: Day net.sourceforge.pebble.domain.Blog.getBlogForToday()
    //#input(Day getBlogForToday()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Day getBlogForToday()): __Descendant_Table[others]
    //#input(Day getBlogForToday()): __Dispatch_Table.getBlogForDay(III)Lnet/sourceforge/pebble/domain/Day;
    //#input(Day getBlogForToday()): __Dispatch_Table.getBlogForDay(Ljava/util/Date;)Lnet/sourceforge/pebble/domain/Day;
    //#input(Day getBlogForToday()): __Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getBlogForToday()): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(Day getBlogForToday()): __Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#input(Day getBlogForToday()): __Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Day getBlogForToday()): __Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Day getBlogForToday()): __Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Day getBlogForToday()): __Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Day getBlogForToday()): __Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/AbstractBlog]
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/MultiBlog]
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[others]
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForDay(I)Lnet/sourceforge/pebble/domain/Day;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Day getBlogForToday()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getBlogForToday()): this
    //#input(Day getBlogForToday()): this.__Tag
    //#input(Day getBlogForToday()): this.properties
    //#input(Day getBlogForToday()): this.years
    //#output(Day getBlogForToday()): new ArrayList(Day#1) num objects
    //#output(Day getBlogForToday()): new ArrayList(Day#2) num objects
    //#output(Day getBlogForToday()): new ArrayList(Day#3) num objects
    //#output(Day getBlogForToday()): new Day(Month#2) num objects
    //#output(Day getBlogForToday()): new Day(Month#2).__Tag
    //#output(Day getBlogForToday()): new Day(Month#2).blog
    //#output(Day getBlogForToday()): new Day(Month#2).blogEntries
    //#output(Day getBlogForToday()): new Day(Month#2).date
    //#output(Day getBlogForToday()): new Day(Month#2).day
    //#output(Day getBlogForToday()): new Day(Month#2).month
    //#output(Day getBlogForToday()): new Day(Month#2).publishedBlogEntries
    //#output(Day getBlogForToday()): new Day(Month#2).unpublishedBlogEntries
    //#output(Day getBlogForToday()): return_value
    //#new obj(Day getBlogForToday()): new ArrayList(Day#1)
    //#new obj(Day getBlogForToday()): new ArrayList(Day#2)
    //#new obj(Day getBlogForToday()): new ArrayList(Day#3)
    //#new obj(Day getBlogForToday()): new Day(Month#2)
    //#pre[2] (Day getBlogForToday()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (Day getBlogForToday()): this.properties != null
    //#pre[4] (Day getBlogForToday()): this.years != null
    //#presumption(Day getBlogForToday()): java.util.Calendar:getInstance(...)@329 != null
    //#post(Day getBlogForToday()): init'ed(return_value)
    //#post(Day getBlogForToday()): init'ed(new ArrayList(Day#1) num objects)
    //#post(Day getBlogForToday()): init'ed(new ArrayList(Day#2) num objects)
    //#post(Day getBlogForToday()): init'ed(new ArrayList(Day#3) num objects)
    //#post(Day getBlogForToday()): init'ed(new Day(Month#2) num objects)
    //#post(Day getBlogForToday()): init'ed(new Day(Month#2).__Tag)
    //#post(Day getBlogForToday()): init'ed(new Day(Month#2).blog)
    //#post(Day getBlogForToday()): init'ed(new Day(Month#2).blogEntries)
    //#post(Day getBlogForToday()): init'ed(new Day(Month#2).date)
    //#post(Day getBlogForToday()): init'ed(new Day(Month#2).day)
    //#post(Day getBlogForToday()): init'ed(new Day(Month#2).month)
    //#post(Day getBlogForToday()): init'ed(new Day(Month#2).publishedBlogEntries)
    //#post(Day getBlogForToday()): init'ed(new Day(Month#2).unpublishedBlogEntries)
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.List:add
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:getTimeZone
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:getLocale
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.Locale
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.TimeZone:getTimeZone
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.Calendar:get
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:getBlogForMonth
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:getBlogForDay
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:getBlog
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:setDate
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:getMonth
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:getYear
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(Day getBlogForToday()): Effects-of-calling:java.util.ArrayList
    //#blog.java:855: end of method: Day net.sourceforge.pebble.domain.Blog.getBlogForToday()
  }

  /**
   * Gets a Day intance for the specified year, month and day.
   *
   * @param year    the year as an int
   * @param month   the month as an int
   * @param day     the day as an int
   * @return    a Day instance representing the specified year, month and day
   */
  public Day getBlogForDay(int year, int month, int day) {
    return getBlogForMonth(year, month).getBlogForDay(day);
    //#blog.java:867: method: Day net.sourceforge.pebble.domain.Blog.getBlogForDay(int, int, int)
    //#blog.java:867: ?null dereference
    //#    getBlogForMonth(...) != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: Day getBlogForDay(int, int, int)
    //#    basic block: Entry_BB_1
    //#    assertion: getBlogForMonth(...) != null
    //#    VN: getBlogForMonth(...)
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#blog.java:867: ?precondition failure
    //#    net/sourceforge/pebble/domain/Month.getBlogForDay: this.dailyBlogs.length >= 1
    //#    severity: LOW
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: Day getBlogForDay(int, int, int)
    //#    basic block: Entry_BB_1
    //#    assertion: getBlogForMonth(...).dailyBlogs.length >= 1
    //#    callee: Day net/sourceforge/pebble/domain/Month.getBlogForDay(int)
    //#    callee assertion: this.dailyBlogs.length >= 1
    //#    callee file: month.java
    //#    callee precondition index: [7]
    //#    callee srcpos: 196
    //#    VN: getBlogForMonth(...).dailyBlogs.length
    //#    Expected: {1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad < Exp
    //#blog.java:867: ?precondition failure
    //#    net/sourceforge/pebble/domain/Month.getBlogForDay: day <= this.dailyBlogs.length
    //#    severity: LOW
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: Day getBlogForDay(int, int, int)
    //#    basic block: Entry_BB_1
    //#    assertion: day <= getBlogForMonth(...).dailyBlogs.length
    //#    callee: Day net/sourceforge/pebble/domain/Month.getBlogForDay(int)
    //#    callee assertion: day <= this.dailyBlogs.length
    //#    callee file: month.java
    //#    callee precondition index: [8]
    //#    callee srcpos: 196
    //#    VN: getBlogForMonth(...).dailyBlogs.length - day
    //#    Expected: {0..+Inf}
    //#    Bad: {-4_294_967_294..-1}
    //#    Attribs:  Int  Bad overlaps +/-1000  Bad < Exp
    //#blog.java:867: ?precondition failure
    //#    net/sourceforge/pebble/domain/Month.getBlogForDay: this.lastDayInMonth >= 1
    //#    severity: LOW
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: Day getBlogForDay(int, int, int)
    //#    basic block: Entry_BB_1
    //#    assertion: getBlogForMonth(...).lastDayInMonth >= 1
    //#    callee: Day net/sourceforge/pebble/domain/Month.getBlogForDay(int)
    //#    callee assertion: this.lastDayInMonth >= 1
    //#    callee file: month.java
    //#    callee precondition index: [10]
    //#    callee srcpos: 196
    //#    VN: getBlogForMonth(...).lastDayInMonth
    //#    Expected: {1..4_294_967_295}
    //#    Bad: {-2_147_483_648..0}
    //#    Attribs:  Int  Bad overlaps +/-1000  Bad < Exp
    //#blog.java:867: ?precondition failure
    //#    net/sourceforge/pebble/domain/Month.getBlogForDay: this.lastDayInMonth - day in 0..4_294_967_294
    //#    severity: LOW
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: Day getBlogForDay(int, int, int)
    //#    basic block: Entry_BB_1
    //#    assertion: getBlogForMonth(...).lastDayInMonth - day in 0..4_294_967_294
    //#    callee: Day net/sourceforge/pebble/domain/Month.getBlogForDay(int)
    //#    callee assertion: this.lastDayInMonth - day in 0..4_294_967_294
    //#    callee file: month.java
    //#    callee precondition index: [11]
    //#    callee srcpos: 196
    //#    VN: getBlogForMonth(...).lastDayInMonth - day
    //#    Expected: {0..4_294_967_294}
    //#    Bad: {-4_294_967_294..-1}
    //#    Attribs:  Int  Bad overlaps +/-1000  Bad < Exp
    //#input(Day getBlogForDay(int, int, int)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Day getBlogForDay(int, int, int)): __Descendant_Table[others]
    //#input(Day getBlogForDay(int, int, int)): __Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getBlogForDay(int, int, int)): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(Day getBlogForDay(int, int, int)): day
    //#input(Day getBlogForDay(int, int, int)): month
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForDay(I)Lnet/sourceforge/pebble/domain/Day;
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Day getBlogForDay(int, int, int)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getBlogForDay(int, int, int)): this
    //#input(Day getBlogForDay(int, int, int)): this.__Tag
    //#input(Day getBlogForDay(int, int, int)): this.years
    //#input(Day getBlogForDay(int, int, int)): year
    //#output(Day getBlogForDay(int, int, int)): new ArrayList(Day#1) num objects
    //#output(Day getBlogForDay(int, int, int)): new ArrayList(Day#2) num objects
    //#output(Day getBlogForDay(int, int, int)): new ArrayList(Day#3) num objects
    //#output(Day getBlogForDay(int, int, int)): new Day(Month#2) num objects
    //#output(Day getBlogForDay(int, int, int)): new Day(Month#2).__Tag
    //#output(Day getBlogForDay(int, int, int)): new Day(Month#2).blog
    //#output(Day getBlogForDay(int, int, int)): new Day(Month#2).blogEntries
    //#output(Day getBlogForDay(int, int, int)): new Day(Month#2).date
    //#output(Day getBlogForDay(int, int, int)): new Day(Month#2).day
    //#output(Day getBlogForDay(int, int, int)): new Day(Month#2).month
    //#output(Day getBlogForDay(int, int, int)): new Day(Month#2).publishedBlogEntries
    //#output(Day getBlogForDay(int, int, int)): new Day(Month#2).unpublishedBlogEntries
    //#output(Day getBlogForDay(int, int, int)): return_value
    //#new obj(Day getBlogForDay(int, int, int)): new ArrayList(Day#1)
    //#new obj(Day getBlogForDay(int, int, int)): new ArrayList(Day#2)
    //#new obj(Day getBlogForDay(int, int, int)): new ArrayList(Day#3)
    //#new obj(Day getBlogForDay(int, int, int)): new Day(Month#2)
    //#pre[1] (Day getBlogForDay(int, int, int)): day >= 1
    //#pre[2] (Day getBlogForDay(int, int, int)): month in 1..12
    //#pre[4] (Day getBlogForDay(int, int, int)): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[5] (Day getBlogForDay(int, int, int)): this.years != null
    //#presumption(Day getBlogForDay(int, int, int)): getBlogForMonth(...).__Tag@867 == net/sourceforge/pebble/domain/Month
    //#presumption(Day getBlogForDay(int, int, int)): getBlogForMonth(...).dailyBlogs.length@867 >= 1
    //#presumption(Day getBlogForDay(int, int, int)): getBlogForMonth(...).dailyBlogs@867 != null
    //#presumption(Day getBlogForDay(int, int, int)): getBlogForMonth(...).lastDayInMonth@867 >= 1
    //#post(Day getBlogForDay(int, int, int)): init'ed(return_value)
    //#post(Day getBlogForDay(int, int, int)): init'ed(new ArrayList(Day#1) num objects)
    //#post(Day getBlogForDay(int, int, int)): init'ed(new ArrayList(Day#2) num objects)
    //#post(Day getBlogForDay(int, int, int)): init'ed(new ArrayList(Day#3) num objects)
    //#post(Day getBlogForDay(int, int, int)): init'ed(new Day(Month#2) num objects)
    //#post(Day getBlogForDay(int, int, int)): init'ed(new Day(Month#2).__Tag)
    //#post(Day getBlogForDay(int, int, int)): init'ed(new Day(Month#2).blog)
    //#post(Day getBlogForDay(int, int, int)): init'ed(new Day(Month#2).blogEntries)
    //#post(Day getBlogForDay(int, int, int)): init'ed(new Day(Month#2).date)
    //#post(Day getBlogForDay(int, int, int)): init'ed(new Day(Month#2).day)
    //#post(Day getBlogForDay(int, int, int)): init'ed(new Day(Month#2).month)
    //#post(Day getBlogForDay(int, int, int)): init'ed(new Day(Month#2).publishedBlogEntries)
    //#post(Day getBlogForDay(int, int, int)): init'ed(new Day(Month#2).unpublishedBlogEntries)
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:getBlog
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:setDate
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:getMonth
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:getYear
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(Day getBlogForDay(int, int, int)): Effects-of-calling:java.util.ArrayList
    //#blog.java:867: end of method: Day net.sourceforge.pebble.domain.Blog.getBlogForDay(int, int, int)
  }

  /**
   * Gets a Month intance for the specified year and month.
   *
   * @param year    the year as an int
   * @param month   the month as an int
   * @return    a Month instance representing the specified year and month
   */
  public Month getBlogForMonth(int year, int month) {
    return getBlogForYear(year).getBlogForMonth(month);
    //#blog.java:878: method: Month net.sourceforge.pebble.domain.Blog.getBlogForMonth(int, int)
    //#input(Month getBlogForMonth(int, int)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Month getBlogForMonth(int, int)): __Descendant_Table[others]
    //#input(Month getBlogForMonth(int, int)): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(Month getBlogForMonth(int, int)): month
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Month getBlogForMonth(int, int)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Month getBlogForMonth(int, int)): this
    //#input(Month getBlogForMonth(int, int)): this.__Tag
    //#input(Month getBlogForMonth(int, int)): this.years
    //#input(Month getBlogForMonth(int, int)): year
    //#output(Month getBlogForMonth(int, int)): new ArrayList(Day#1) num objects
    //#output(Month getBlogForMonth(int, int)): new ArrayList(Day#2) num objects
    //#output(Month getBlogForMonth(int, int)): new ArrayList(Day#3) num objects
    //#output(Month getBlogForMonth(int, int)): new Day(Month#2) num objects
    //#output(Month getBlogForMonth(int, int)): new Day(Month#2).__Tag
    //#output(Month getBlogForMonth(int, int)): new Day(Month#2).blog
    //#output(Month getBlogForMonth(int, int)): new Day(Month#2).blogEntries
    //#output(Month getBlogForMonth(int, int)): new Day(Month#2).date
    //#output(Month getBlogForMonth(int, int)): new Day(Month#2).day
    //#output(Month getBlogForMonth(int, int)): new Day(Month#2).month
    //#output(Month getBlogForMonth(int, int)): new Day(Month#2).publishedBlogEntries
    //#output(Month getBlogForMonth(int, int)): new Day(Month#2).unpublishedBlogEntries
    //#output(Month getBlogForMonth(int, int)): new Day[](Month#1) num objects
    //#output(Month getBlogForMonth(int, int)): new Day[](Month#1).length
    //#output(Month getBlogForMonth(int, int)): new Day[](Month#1)[0..4_294_967_295]
    //#output(Month getBlogForMonth(int, int)): new Month(init#2) num objects
    //#output(Month getBlogForMonth(int, int)): new Month(init#2).__Tag
    //#output(Month getBlogForMonth(int, int)): new Month(init#2).blog
    //#output(Month getBlogForMonth(int, int)): new Month(init#2).dailyBlogs
    //#output(Month getBlogForMonth(int, int)): new Month(init#2).date
    //#output(Month getBlogForMonth(int, int)): new Month(init#2).lastDayInMonth
    //#output(Month getBlogForMonth(int, int)): new Month(init#2).month
    //#output(Month getBlogForMonth(int, int)): new Month(init#2).year
    //#output(Month getBlogForMonth(int, int)): return_value
    //#new obj(Month getBlogForMonth(int, int)): new ArrayList(Day#1)
    //#new obj(Month getBlogForMonth(int, int)): new ArrayList(Day#2)
    //#new obj(Month getBlogForMonth(int, int)): new ArrayList(Day#3)
    //#new obj(Month getBlogForMonth(int, int)): new Day(Month#2)
    //#new obj(Month getBlogForMonth(int, int)): new Day[](Month#1)
    //#new obj(Month getBlogForMonth(int, int)): new Month(init#2)
    //#pre[1] (Month getBlogForMonth(int, int)): month in 1..12
    //#pre[3] (Month getBlogForMonth(int, int)): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[4] (Month getBlogForMonth(int, int)): this.years != null
    //#presumption(Month getBlogForMonth(int, int)): getBlogForYear(...).__Tag@878 == net/sourceforge/pebble/domain/Year
    //#presumption(Month getBlogForMonth(int, int)): getBlogForYear(...).months.length@878 >= 1
    //#presumption(Month getBlogForMonth(int, int)): month <= getBlogForYear(...).months.length@878
    //#presumption(Month getBlogForMonth(int, int)): getBlogForYear(...).months@878 != null
    //#post(Month getBlogForMonth(int, int)): init'ed(return_value)
    //#post(Month getBlogForMonth(int, int)): init'ed(new ArrayList(Day#1) num objects)
    //#post(Month getBlogForMonth(int, int)): init'ed(new ArrayList(Day#2) num objects)
    //#post(Month getBlogForMonth(int, int)): init'ed(new ArrayList(Day#3) num objects)
    //#post(Month getBlogForMonth(int, int)): init'ed(new Day(Month#2) num objects)
    //#post(Month getBlogForMonth(int, int)): init'ed(new Day(Month#2).__Tag)
    //#post(Month getBlogForMonth(int, int)): init'ed(new Day(Month#2).blog)
    //#post(Month getBlogForMonth(int, int)): init'ed(new Day(Month#2).blogEntries)
    //#post(Month getBlogForMonth(int, int)): init'ed(new Day(Month#2).date)
    //#post(Month getBlogForMonth(int, int)): init'ed(new Day(Month#2).day)
    //#post(Month getBlogForMonth(int, int)): init'ed(new Day(Month#2).month)
    //#post(Month getBlogForMonth(int, int)): init'ed(new Day(Month#2).publishedBlogEntries)
    //#post(Month getBlogForMonth(int, int)): init'ed(new Day(Month#2).unpublishedBlogEntries)
    //#post(Month getBlogForMonth(int, int)): new Day[](Month#1) num objects in {0, 12}
    //#post(Month getBlogForMonth(int, int)): init'ed(new Day[](Month#1).length)
    //#post(Month getBlogForMonth(int, int)): init'ed(new Day[](Month#1)[0..4_294_967_295])
    //#post(Month getBlogForMonth(int, int)): new Month(init#2) num objects in {0, 12}
    //#post(Month getBlogForMonth(int, int)): new Month(init#2).__Tag == net/sourceforge/pebble/domain/Month
    //#post(Month getBlogForMonth(int, int)): new Month(init#2).blog != null
    //#post(Month getBlogForMonth(int, int)): new Month(init#2).dailyBlogs != null
    //#post(Month getBlogForMonth(int, int)): init'ed(new Month(init#2).date)
    //#post(Month getBlogForMonth(int, int)): init'ed(new Month(init#2).lastDayInMonth)
    //#post(Month getBlogForMonth(int, int)): new Month(init#2).month == 13
    //#post(Month getBlogForMonth(int, int)): new Month(init#2).year != null
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:getBlog
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:setDate
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:getMonth
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:getYear
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(Month getBlogForMonth(int, int)): Effects-of-calling:java.util.ArrayList
    //#blog.java:878: end of method: Month net.sourceforge.pebble.domain.Blog.getBlogForMonth(int, int)
  }

  /**
   * Gets the Month instance representing this month.
   *
   * @return  a Month instance for this month
   */
  public Month getBlogForThisMonth() {
    Calendar cal = getCalendar();
    //#blog.java:887: method: Month net.sourceforge.pebble.domain.Blog.getBlogForThisMonth()
    //#input(Month getBlogForThisMonth()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Month getBlogForThisMonth()): __Descendant_Table[others]
    //#input(Month getBlogForThisMonth()): __Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month;
    //#input(Month getBlogForThisMonth()): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(Month getBlogForThisMonth()): __Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#input(Month getBlogForThisMonth()): __Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Month getBlogForThisMonth()): __Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Month getBlogForThisMonth()): __Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Month getBlogForThisMonth()): __Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Month getBlogForThisMonth()): __Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/AbstractBlog]
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/MultiBlog]
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[others]
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Month getBlogForThisMonth()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Month getBlogForThisMonth()): this
    //#input(Month getBlogForThisMonth()): this.__Tag
    //#input(Month getBlogForThisMonth()): this.properties
    //#input(Month getBlogForThisMonth()): this.years
    //#output(Month getBlogForThisMonth()): new ArrayList(Day#1) num objects
    //#output(Month getBlogForThisMonth()): new ArrayList(Day#2) num objects
    //#output(Month getBlogForThisMonth()): new ArrayList(Day#3) num objects
    //#output(Month getBlogForThisMonth()): new Day(Month#2) num objects
    //#output(Month getBlogForThisMonth()): new Day(Month#2).__Tag
    //#output(Month getBlogForThisMonth()): new Day(Month#2).blog
    //#output(Month getBlogForThisMonth()): new Day(Month#2).blogEntries
    //#output(Month getBlogForThisMonth()): new Day(Month#2).date
    //#output(Month getBlogForThisMonth()): new Day(Month#2).day
    //#output(Month getBlogForThisMonth()): new Day(Month#2).month
    //#output(Month getBlogForThisMonth()): new Day(Month#2).publishedBlogEntries
    //#output(Month getBlogForThisMonth()): new Day(Month#2).unpublishedBlogEntries
    //#output(Month getBlogForThisMonth()): new Day[](Month#1) num objects
    //#output(Month getBlogForThisMonth()): new Day[](Month#1).length
    //#output(Month getBlogForThisMonth()): new Day[](Month#1)[0..4_294_967_295]
    //#output(Month getBlogForThisMonth()): new Month(init#2) num objects
    //#output(Month getBlogForThisMonth()): new Month(init#2).__Tag
    //#output(Month getBlogForThisMonth()): new Month(init#2).blog
    //#output(Month getBlogForThisMonth()): new Month(init#2).dailyBlogs
    //#output(Month getBlogForThisMonth()): new Month(init#2).date
    //#output(Month getBlogForThisMonth()): new Month(init#2).lastDayInMonth
    //#output(Month getBlogForThisMonth()): new Month(init#2).month
    //#output(Month getBlogForThisMonth()): new Month(init#2).year
    //#output(Month getBlogForThisMonth()): return_value
    //#new obj(Month getBlogForThisMonth()): new ArrayList(Day#1)
    //#new obj(Month getBlogForThisMonth()): new ArrayList(Day#2)
    //#new obj(Month getBlogForThisMonth()): new ArrayList(Day#3)
    //#new obj(Month getBlogForThisMonth()): new Day(Month#2)
    //#new obj(Month getBlogForThisMonth()): new Day[](Month#1)
    //#new obj(Month getBlogForThisMonth()): new Month(init#2)
    //#pre[2] (Month getBlogForThisMonth()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (Month getBlogForThisMonth()): this.properties != null
    //#pre[4] (Month getBlogForThisMonth()): this.years != null
    //#presumption(Month getBlogForThisMonth()): java.util.Calendar:get(...)@888 in 0..11
    //#presumption(Month getBlogForThisMonth()): java.util.Calendar:getInstance(...)@329 != null
    //#post(Month getBlogForThisMonth()): init'ed(return_value)
    //#post(Month getBlogForThisMonth()): init'ed(new ArrayList(Day#1) num objects)
    //#post(Month getBlogForThisMonth()): init'ed(new ArrayList(Day#2) num objects)
    //#post(Month getBlogForThisMonth()): init'ed(new ArrayList(Day#3) num objects)
    //#post(Month getBlogForThisMonth()): init'ed(new Day(Month#2) num objects)
    //#post(Month getBlogForThisMonth()): init'ed(new Day(Month#2).__Tag)
    //#post(Month getBlogForThisMonth()): init'ed(new Day(Month#2).blog)
    //#post(Month getBlogForThisMonth()): init'ed(new Day(Month#2).blogEntries)
    //#post(Month getBlogForThisMonth()): init'ed(new Day(Month#2).date)
    //#post(Month getBlogForThisMonth()): init'ed(new Day(Month#2).day)
    //#post(Month getBlogForThisMonth()): init'ed(new Day(Month#2).month)
    //#post(Month getBlogForThisMonth()): init'ed(new Day(Month#2).publishedBlogEntries)
    //#post(Month getBlogForThisMonth()): init'ed(new Day(Month#2).unpublishedBlogEntries)
    //#post(Month getBlogForThisMonth()): new Day[](Month#1) num objects in {0, 12}
    //#post(Month getBlogForThisMonth()): init'ed(new Day[](Month#1).length)
    //#post(Month getBlogForThisMonth()): init'ed(new Day[](Month#1)[0..4_294_967_295])
    //#post(Month getBlogForThisMonth()): new Month(init#2) num objects in {0, 12}
    //#post(Month getBlogForThisMonth()): new Month(init#2).__Tag == net/sourceforge/pebble/domain/Month
    //#post(Month getBlogForThisMonth()): new Month(init#2).blog != null
    //#post(Month getBlogForThisMonth()): new Month(init#2).dailyBlogs != null
    //#post(Month getBlogForThisMonth()): init'ed(new Month(init#2).date)
    //#post(Month getBlogForThisMonth()): init'ed(new Month(init#2).lastDayInMonth)
    //#post(Month getBlogForThisMonth()): new Month(init#2).month == 13
    //#post(Month getBlogForThisMonth()): new Month(init#2).year != null
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.util.List:add
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:getTimeZone
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:getLocale
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.util.Locale
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.util.TimeZone:getTimeZone
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:getBlog
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:setDate
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:getMonth
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:getYear
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(Month getBlogForThisMonth()): Effects-of-calling:java.util.ArrayList
    return getBlogForMonth(cal.get(Calendar.YEAR), (cal.get(Calendar.MONTH) + 1));
    //#blog.java:888: end of method: Month net.sourceforge.pebble.domain.Blog.getBlogForThisMonth()
  }

  /**
   * Given a Year, this method returns the Year instance
   * representing the previous year.
   *
   * @param year    a Year instance
   * @return    a Year representing the previous year
   */
  public Year getBlogForPreviousYear(Year year) {
    return getBlogForYear(year.getYear() - 1);
    //#blog.java:899: method: Year net.sourceforge.pebble.domain.Blog.getBlogForPreviousYear(Year)
    //#input(Year getBlogForPreviousYear(Year)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Year getBlogForPreviousYear(Year)): __Descendant_Table[others]
    //#input(Year getBlogForPreviousYear(Year)): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Year getBlogForPreviousYear(Year)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Year getBlogForPreviousYear(Year)): this
    //#input(Year getBlogForPreviousYear(Year)): this.__Tag
    //#input(Year getBlogForPreviousYear(Year)): this.years
    //#input(Year getBlogForPreviousYear(Year)): year
    //#input(Year getBlogForPreviousYear(Year)): year.__Tag
    //#input(Year getBlogForPreviousYear(Year)): year.year
    //#output(Year getBlogForPreviousYear(Year)): new ArrayList(Day#1) num objects
    //#output(Year getBlogForPreviousYear(Year)): new ArrayList(Day#2) num objects
    //#output(Year getBlogForPreviousYear(Year)): new ArrayList(Day#3) num objects
    //#output(Year getBlogForPreviousYear(Year)): new Day(Month#2) num objects
    //#output(Year getBlogForPreviousYear(Year)): new Day(Month#2).__Tag
    //#output(Year getBlogForPreviousYear(Year)): new Day(Month#2).blog
    //#output(Year getBlogForPreviousYear(Year)): new Day(Month#2).blogEntries
    //#output(Year getBlogForPreviousYear(Year)): new Day(Month#2).date
    //#output(Year getBlogForPreviousYear(Year)): new Day(Month#2).day
    //#output(Year getBlogForPreviousYear(Year)): new Day(Month#2).month
    //#output(Year getBlogForPreviousYear(Year)): new Day(Month#2).publishedBlogEntries
    //#output(Year getBlogForPreviousYear(Year)): new Day(Month#2).unpublishedBlogEntries
    //#output(Year getBlogForPreviousYear(Year)): new Day[](Month#1) num objects
    //#output(Year getBlogForPreviousYear(Year)): new Day[](Month#1).length
    //#output(Year getBlogForPreviousYear(Year)): new Day[](Month#1)[0..4_294_967_295]
    //#output(Year getBlogForPreviousYear(Year)): new Month(init#2) num objects
    //#output(Year getBlogForPreviousYear(Year)): new Month(init#2).__Tag
    //#output(Year getBlogForPreviousYear(Year)): new Month(init#2).blog
    //#output(Year getBlogForPreviousYear(Year)): new Month(init#2).dailyBlogs
    //#output(Year getBlogForPreviousYear(Year)): new Month(init#2).date
    //#output(Year getBlogForPreviousYear(Year)): new Month(init#2).lastDayInMonth
    //#output(Year getBlogForPreviousYear(Year)): new Month(init#2).month
    //#output(Year getBlogForPreviousYear(Year)): new Month(init#2).year
    //#output(Year getBlogForPreviousYear(Year)): new Month[](init#1) num objects
    //#output(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1).months.length
    //#output(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1).months[0..4_294_967_295]
    //#output(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1) num objects
    //#output(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1).__Tag
    //#output(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1).blog
    //#output(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1).date
    //#output(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1).months
    //#output(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1).year
    //#output(Year getBlogForPreviousYear(Year)): return_value
    //#new obj(Year getBlogForPreviousYear(Year)): new ArrayList(Day#1)
    //#new obj(Year getBlogForPreviousYear(Year)): new ArrayList(Day#2)
    //#new obj(Year getBlogForPreviousYear(Year)): new ArrayList(Day#3)
    //#new obj(Year getBlogForPreviousYear(Year)): new Day(Month#2)
    //#new obj(Year getBlogForPreviousYear(Year)): new Day[](Month#1)
    //#new obj(Year getBlogForPreviousYear(Year)): new Month(init#2)
    //#new obj(Year getBlogForPreviousYear(Year)): new Month[](init#1)
    //#new obj(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1)
    //#pre[2] (Year getBlogForPreviousYear(Year)): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (Year getBlogForPreviousYear(Year)): this.years != null
    //#pre[4] (Year getBlogForPreviousYear(Year)): year != null
    //#pre[5] (Year getBlogForPreviousYear(Year)): year.__Tag == net/sourceforge/pebble/domain/Year
    //#pre[6] (Year getBlogForPreviousYear(Year)): year.year >= -2_147_483_647
    //#post(Year getBlogForPreviousYear(Year)): return_value != null
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new ArrayList(Day#1) num objects)
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new ArrayList(Day#2) num objects)
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new ArrayList(Day#3) num objects)
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Day(Month#2) num objects)
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Day(Month#2).__Tag)
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Day(Month#2).blog)
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Day(Month#2).blogEntries)
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Day(Month#2).date)
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Day(Month#2).day)
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Day(Month#2).month)
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Day(Month#2).publishedBlogEntries)
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Day(Month#2).unpublishedBlogEntries)
    //#post(Year getBlogForPreviousYear(Year)): new Day[](Month#1) num objects in {0, 12}
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Day[](Month#1).length)
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Day[](Month#1)[0..4_294_967_295])
    //#post(Year getBlogForPreviousYear(Year)): new Month(init#2) num objects in {0, 12}
    //#post(Year getBlogForPreviousYear(Year)): new Month(init#2).__Tag == net/sourceforge/pebble/domain/Month
    //#post(Year getBlogForPreviousYear(Year)): new Month(init#2).blog != null
    //#post(Year getBlogForPreviousYear(Year)): new Month(init#2).dailyBlogs != null
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Month(init#2).date)
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Month(init#2).lastDayInMonth)
    //#post(Year getBlogForPreviousYear(Year)): new Month(init#2).month == 13
    //#post(Year getBlogForPreviousYear(Year)): new Month(init#2).year != null
    //#post(Year getBlogForPreviousYear(Year)): new Month[](init#1) num objects <= 1
    //#post(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1) num objects == new Month[](init#1) num objects
    //#post(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1).months.length == 12
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Year(getBlogForYear#1).months[0..4_294_967_295])
    //#post(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1).__Tag == net/sourceforge/pebble/domain/Year
    //#post(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1).blog != null
    //#post(Year getBlogForPreviousYear(Year)): init'ed(new Year(getBlogForYear#1).date)
    //#post(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1).months == &new Month[](init#1)
    //#post(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1).year == year.year - 1
    //#post(Year getBlogForPreviousYear(Year)): new Year(getBlogForYear#1).year <= 4_294_967_294
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:getBlog
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:setDate
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:getMonth
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:getYear
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(Year getBlogForPreviousYear(Year)): Effects-of-calling:java.util.ArrayList
    //#blog.java:899: end of method: Year net.sourceforge.pebble.domain.Blog.getBlogForPreviousYear(Year)
  }

  /**
   * Given a Year, this method returns the Year instance
   * representing the next year.
   *
   * @param year    a Year instance
   * @return    a Year representing the next year
   */
  public Year getBlogForNextYear(Year year) {
    return getBlogForYear(year.getYear() + 1);
    //#blog.java:910: method: Year net.sourceforge.pebble.domain.Blog.getBlogForNextYear(Year)
    //#input(Year getBlogForNextYear(Year)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Year getBlogForNextYear(Year)): __Descendant_Table[others]
    //#input(Year getBlogForNextYear(Year)): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Year getBlogForNextYear(Year)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Year getBlogForNextYear(Year)): this
    //#input(Year getBlogForNextYear(Year)): this.__Tag
    //#input(Year getBlogForNextYear(Year)): this.years
    //#input(Year getBlogForNextYear(Year)): year
    //#input(Year getBlogForNextYear(Year)): year.__Tag
    //#input(Year getBlogForNextYear(Year)): year.year
    //#output(Year getBlogForNextYear(Year)): new ArrayList(Day#1) num objects
    //#output(Year getBlogForNextYear(Year)): new ArrayList(Day#2) num objects
    //#output(Year getBlogForNextYear(Year)): new ArrayList(Day#3) num objects
    //#output(Year getBlogForNextYear(Year)): new Day(Month#2) num objects
    //#output(Year getBlogForNextYear(Year)): new Day(Month#2).__Tag
    //#output(Year getBlogForNextYear(Year)): new Day(Month#2).blog
    //#output(Year getBlogForNextYear(Year)): new Day(Month#2).blogEntries
    //#output(Year getBlogForNextYear(Year)): new Day(Month#2).date
    //#output(Year getBlogForNextYear(Year)): new Day(Month#2).day
    //#output(Year getBlogForNextYear(Year)): new Day(Month#2).month
    //#output(Year getBlogForNextYear(Year)): new Day(Month#2).publishedBlogEntries
    //#output(Year getBlogForNextYear(Year)): new Day(Month#2).unpublishedBlogEntries
    //#output(Year getBlogForNextYear(Year)): new Day[](Month#1) num objects
    //#output(Year getBlogForNextYear(Year)): new Day[](Month#1).length
    //#output(Year getBlogForNextYear(Year)): new Day[](Month#1)[0..4_294_967_295]
    //#output(Year getBlogForNextYear(Year)): new Month(init#2) num objects
    //#output(Year getBlogForNextYear(Year)): new Month(init#2).__Tag
    //#output(Year getBlogForNextYear(Year)): new Month(init#2).blog
    //#output(Year getBlogForNextYear(Year)): new Month(init#2).dailyBlogs
    //#output(Year getBlogForNextYear(Year)): new Month(init#2).date
    //#output(Year getBlogForNextYear(Year)): new Month(init#2).lastDayInMonth
    //#output(Year getBlogForNextYear(Year)): new Month(init#2).month
    //#output(Year getBlogForNextYear(Year)): new Month(init#2).year
    //#output(Year getBlogForNextYear(Year)): new Month[](init#1) num objects
    //#output(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1).months.length
    //#output(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1).months[0..4_294_967_295]
    //#output(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1) num objects
    //#output(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1).__Tag
    //#output(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1).blog
    //#output(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1).date
    //#output(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1).months
    //#output(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1).year
    //#output(Year getBlogForNextYear(Year)): return_value
    //#new obj(Year getBlogForNextYear(Year)): new ArrayList(Day#1)
    //#new obj(Year getBlogForNextYear(Year)): new ArrayList(Day#2)
    //#new obj(Year getBlogForNextYear(Year)): new ArrayList(Day#3)
    //#new obj(Year getBlogForNextYear(Year)): new Day(Month#2)
    //#new obj(Year getBlogForNextYear(Year)): new Day[](Month#1)
    //#new obj(Year getBlogForNextYear(Year)): new Month(init#2)
    //#new obj(Year getBlogForNextYear(Year)): new Month[](init#1)
    //#new obj(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1)
    //#pre[2] (Year getBlogForNextYear(Year)): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (Year getBlogForNextYear(Year)): this.years != null
    //#pre[4] (Year getBlogForNextYear(Year)): year != null
    //#pre[5] (Year getBlogForNextYear(Year)): year.__Tag == net/sourceforge/pebble/domain/Year
    //#pre[6] (Year getBlogForNextYear(Year)): year.year <= 4_294_967_294
    //#post(Year getBlogForNextYear(Year)): return_value != null
    //#post(Year getBlogForNextYear(Year)): init'ed(new ArrayList(Day#1) num objects)
    //#post(Year getBlogForNextYear(Year)): init'ed(new ArrayList(Day#2) num objects)
    //#post(Year getBlogForNextYear(Year)): init'ed(new ArrayList(Day#3) num objects)
    //#post(Year getBlogForNextYear(Year)): init'ed(new Day(Month#2) num objects)
    //#post(Year getBlogForNextYear(Year)): init'ed(new Day(Month#2).__Tag)
    //#post(Year getBlogForNextYear(Year)): init'ed(new Day(Month#2).blog)
    //#post(Year getBlogForNextYear(Year)): init'ed(new Day(Month#2).blogEntries)
    //#post(Year getBlogForNextYear(Year)): init'ed(new Day(Month#2).date)
    //#post(Year getBlogForNextYear(Year)): init'ed(new Day(Month#2).day)
    //#post(Year getBlogForNextYear(Year)): init'ed(new Day(Month#2).month)
    //#post(Year getBlogForNextYear(Year)): init'ed(new Day(Month#2).publishedBlogEntries)
    //#post(Year getBlogForNextYear(Year)): init'ed(new Day(Month#2).unpublishedBlogEntries)
    //#post(Year getBlogForNextYear(Year)): new Day[](Month#1) num objects in {0, 12}
    //#post(Year getBlogForNextYear(Year)): init'ed(new Day[](Month#1).length)
    //#post(Year getBlogForNextYear(Year)): init'ed(new Day[](Month#1)[0..4_294_967_295])
    //#post(Year getBlogForNextYear(Year)): new Month(init#2) num objects in {0, 12}
    //#post(Year getBlogForNextYear(Year)): new Month(init#2).__Tag == net/sourceforge/pebble/domain/Month
    //#post(Year getBlogForNextYear(Year)): new Month(init#2).blog != null
    //#post(Year getBlogForNextYear(Year)): new Month(init#2).dailyBlogs != null
    //#post(Year getBlogForNextYear(Year)): init'ed(new Month(init#2).date)
    //#post(Year getBlogForNextYear(Year)): init'ed(new Month(init#2).lastDayInMonth)
    //#post(Year getBlogForNextYear(Year)): new Month(init#2).month == 13
    //#post(Year getBlogForNextYear(Year)): new Month(init#2).year != null
    //#post(Year getBlogForNextYear(Year)): new Month[](init#1) num objects <= 1
    //#post(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1) num objects == new Month[](init#1) num objects
    //#post(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1).months.length == 12
    //#post(Year getBlogForNextYear(Year)): init'ed(new Year(getBlogForYear#1).months[0..4_294_967_295])
    //#post(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1).__Tag == net/sourceforge/pebble/domain/Year
    //#post(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1).blog != null
    //#post(Year getBlogForNextYear(Year)): init'ed(new Year(getBlogForYear#1).date)
    //#post(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1).months == &new Month[](init#1)
    //#post(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1).year == year.year + 1
    //#post(Year getBlogForNextYear(Year)): new Year(getBlogForYear#1).year >= -2_147_483_647
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:getBlog
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:setDate
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:getMonth
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:getYear
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(Year getBlogForNextYear(Year)): Effects-of-calling:java.util.ArrayList
    //#blog.java:910: end of method: Year net.sourceforge.pebble.domain.Blog.getBlogForNextYear(Year)
  }

  /**
   * Gets all blog entries for this blog.
   *
   * @return  a List of BlogEntry objects
   */
  public List getBlogEntries() {
    List blogEntries = new ArrayList();
    //#blog.java:919: method: List net.sourceforge.pebble.domain.Blog.getBlogEntries()
    //#input(List getBlogEntries()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getBlogEntries()): __Descendant_Table[others]
    //#input(List getBlogEntries()): __Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month;
    //#input(List getBlogEntries()): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(List getBlogEntries()): log
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[others]
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntries(Lnet/sourceforge/pebble/domain/Blog;II)Ljava/util/List;
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlogEntries()Ljava/util/List;
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getAllDays()[Lnet/sourceforge/pebble/domain/Day;
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogEntries()Ljava/util/List;
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForDay(I)Lnet/sourceforge/pebble/domain/Day;
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getMonths()[Lnet/sourceforge/pebble/domain/Month;
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(List getBlogEntries()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(List getBlogEntries()): this
    //#input(List getBlogEntries()): this.__Tag
    //#input(List getBlogEntries()): this.years
    //#output(List getBlogEntries()): new ArrayList(getBlogEntries#1) num objects
    //#output(List getBlogEntries()): return_value
    //#new obj(List getBlogEntries()): new ArrayList(getBlogEntries#1)
    //#pre[4] (List getBlogEntries()): this.years != null
    //#pre[3] (List getBlogEntries()): (soft) this.__Tag == net/sourceforge/pebble/domain/Blog
    //#presumption(List getBlogEntries()): java.util.List:get(...).__Tag@923 == net/sourceforge/pebble/domain/Year
    //#presumption(List getBlogEntries()): java.util.List:get(...)@923 != null
    //#presumption(List getBlogEntries()): java.util.List:size(...)@922 >= -2_147_483_647
    //#presumption(List getBlogEntries()): months[month].__Tag@924 == net/sourceforge/pebble/domain/Month
    //#presumption(List getBlogEntries()): months[month].month@924 in 1..12
    //#presumption(List getBlogEntries()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#presumption(List getBlogEntries()): y.months.length@923 >= 1
    //#presumption(List getBlogEntries()): y.months@923 != null
    //#post(List getBlogEntries()): return_value == &new ArrayList(getBlogEntries#1)
    //#post(List getBlogEntries()): new ArrayList(getBlogEntries#1) num objects == 1
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:getConfiguredFactory
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:getBlogEntryDAO
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:getBlog
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:getId
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:getCompositeKeyForBlogEntry
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:setPersistent
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:setEventsEnabled
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.BlogServiceException
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:net.sf.ehcache.Cache:get
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:net.sf.ehcache.Element:getValue
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:loadBlogEntry
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:net.sf.ehcache.Element
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:net.sf.ehcache.Cache:put
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:clone
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:getBlogEntry
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.util.List:add
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:getBlogForMonth
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:setDate
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:getBlogEntries
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:getMonth
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:getYear
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(List getBlogEntries()): Effects-of-calling:java.util.List:addAll
    BlogService service = new BlogService();

    for (int year = years.size()-1; year >= 0; year--) {
      Year y = (Year)years.get(year);
      Month[] months = y.getMonths();
      for (int month = 11; month >= 0; month--) {
        try {
          blogEntries.addAll(service.getBlogEntries(this, y.getYear(), months[month].getMonth()));
    //#blog.java:927: ?use of default init
    //#    init'ed(months[month])
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getBlogEntries()
    //#    basic block: bb_4
    //#    assertion: init'ed(months[month])
    //#    VN: months[month]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#blog.java:927: ?!null dereference
    //#    months[month] != null
    //#    severity: HIGH
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getBlogEntries()
    //#    basic block: bb_4
    //#    assertion: months[month] != null
    //#    VN: months[month]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#blog.java:927: ?!null dereference
    //#    months[month] != null
    //#    severity: HIGH
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getBlogEntries()
    //#    basic block: bb_4
    //#    assertion: months[month] != null
    //#    VN: months[month]
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
        } catch (BlogServiceException e) {
          log.error("Exception encountered", e);
    //#blog.java:929: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getBlogEntries()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
        }
      }
    }

    return blogEntries;
    //#blog.java:934: end of method: List net.sourceforge.pebble.domain.Blog.getBlogEntries()
  }

  /**
   * Gets all unpublished blog entries for this blog.
   *
   * @return  a List of BlogEntry objects
   */
  public List<BlogEntry> getUnpublishedBlogEntries() {
    List<BlogEntry> blogEntries = new ArrayList<BlogEntry>();
    //#blog.java:943: method: List net.sourceforge.pebble.domain.Blog.getUnpublishedBlogEntries()
    //#input(List getUnpublishedBlogEntries()): log
    //#input(List getUnpublishedBlogEntries()): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(List getUnpublishedBlogEntries()): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(List getUnpublishedBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[net/sourceforge/pebble/index/BlogEntryIndex]
    //#input(List getUnpublishedBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[others]
    //#input(List getUnpublishedBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Dispatch_Table.getUnpublishedBlogEntries()Ljava/util/List;
    //#input(List getUnpublishedBlogEntries()): this
    //#input(List getUnpublishedBlogEntries()): this.blogEntryIndex
    //#input(List getUnpublishedBlogEntries()): this.blogEntryIndex.__Tag
    //#input(List getUnpublishedBlogEntries()): this.blogEntryIndex.unpublishedIndexEntries
    //#output(List getUnpublishedBlogEntries()): new ArrayList(getUnpublishedBlogEntries#1) num objects
    //#output(List getUnpublishedBlogEntries()): return_value
    //#new obj(List getUnpublishedBlogEntries()): new ArrayList(getUnpublishedBlogEntries#1)
    //#pre[4] (List getUnpublishedBlogEntries()): this.blogEntryIndex != null
    //#pre[5] (List getUnpublishedBlogEntries()): this.blogEntryIndex.__Tag == net/sourceforge/pebble/index/BlogEntryIndex
    //#pre[6] (List getUnpublishedBlogEntries()): init'ed(this.blogEntryIndex.unpublishedIndexEntries)
    //#presumption(List getUnpublishedBlogEntries()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#post(List getUnpublishedBlogEntries()): return_value == &new ArrayList(getUnpublishedBlogEntries#1)
    //#post(List getUnpublishedBlogEntries()): new ArrayList(getUnpublishedBlogEntries#1) num objects == 1
    //#unanalyzed(List getUnpublishedBlogEntries()): Effects-of-calling:java.util.ArrayList
    //#test_vector(List getUnpublishedBlogEntries()): java.util.Iterator:hasNext(...)@947: {1}, {0}
    BlogService service = new BlogService();

    List<String> blogEntryIds = blogEntryIndex.getUnpublishedBlogEntries();
    for (String blogEntryId : blogEntryIds) {
      try {
        blogEntries.add(service.getBlogEntry(this, blogEntryId));
    //#blog.java:949: Warning: call too complex - analysis skipped
    //#    -- call on BlogEntry getBlogEntry(Blog, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getUnpublishedBlogEntries()
    //#    unanalyzed callee: BlogEntry getBlogEntry(Blog, String)
      } catch (BlogServiceException e) {
        log.error("Exception encountered", e);
    //#blog.java:951: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getUnpublishedBlogEntries()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }
    }

    return blogEntries;
    //#blog.java:955: end of method: List net.sourceforge.pebble.domain.Blog.getUnpublishedBlogEntries()
  }

  /**
   * Gets the number of blog entries for this blog.
   *
   * @return  an int
   */
  public int getNumberOfBlogEntries() {
    return blogEntryIndex.getNumberOfBlogEntries();
    //#blog.java:964: method: int net.sourceforge.pebble.domain.Blog.getNumberOfBlogEntries()
    //#input(int getNumberOfBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[net/sourceforge/pebble/index/BlogEntryIndex]
    //#input(int getNumberOfBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[others]
    //#input(int getNumberOfBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Dispatch_Table.getNumberOfBlogEntries()I
    //#input(int getNumberOfBlogEntries()): this
    //#input(int getNumberOfBlogEntries()): this.blogEntryIndex
    //#input(int getNumberOfBlogEntries()): this.blogEntryIndex.__Tag
    //#input(int getNumberOfBlogEntries()): this.blogEntryIndex.indexEntries
    //#output(int getNumberOfBlogEntries()): return_value
    //#pre[2] (int getNumberOfBlogEntries()): this.blogEntryIndex != null
    //#pre[3] (int getNumberOfBlogEntries()): this.blogEntryIndex.__Tag == net/sourceforge/pebble/index/BlogEntryIndex
    //#pre[4] (int getNumberOfBlogEntries()): this.blogEntryIndex.indexEntries != null
    //#post(int getNumberOfBlogEntries()): init'ed(return_value)
    //#unanalyzed(int getNumberOfBlogEntries()): Effects-of-calling:java.util.List:size
    //#blog.java:964: end of method: int net.sourceforge.pebble.domain.Blog.getNumberOfBlogEntries()
  }

  /**
   * Gets the number of published blog entries for this blog.
   *
   * @return  an int
   */
  public int getNumberOfPublishedBlogEntries() {
    return blogEntryIndex.getNumberOfPublishedBlogEntries();
    //#blog.java:973: method: int net.sourceforge.pebble.domain.Blog.getNumberOfPublishedBlogEntries()
    //#input(int getNumberOfPublishedBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[net/sourceforge/pebble/index/BlogEntryIndex]
    //#input(int getNumberOfPublishedBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[others]
    //#input(int getNumberOfPublishedBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Dispatch_Table.getNumberOfPublishedBlogEntries()I
    //#input(int getNumberOfPublishedBlogEntries()): this
    //#input(int getNumberOfPublishedBlogEntries()): this.blogEntryIndex
    //#input(int getNumberOfPublishedBlogEntries()): this.blogEntryIndex.__Tag
    //#input(int getNumberOfPublishedBlogEntries()): this.blogEntryIndex.publishedIndexEntries
    //#output(int getNumberOfPublishedBlogEntries()): return_value
    //#pre[2] (int getNumberOfPublishedBlogEntries()): this.blogEntryIndex != null
    //#pre[3] (int getNumberOfPublishedBlogEntries()): this.blogEntryIndex.__Tag == net/sourceforge/pebble/index/BlogEntryIndex
    //#pre[4] (int getNumberOfPublishedBlogEntries()): this.blogEntryIndex.publishedIndexEntries != null
    //#post(int getNumberOfPublishedBlogEntries()): init'ed(return_value)
    //#unanalyzed(int getNumberOfPublishedBlogEntries()): Effects-of-calling:java.util.List:size
    //#blog.java:973: end of method: int net.sourceforge.pebble.domain.Blog.getNumberOfPublishedBlogEntries()
  }

  /**
   * Gets the number of unpublished blog entries for this blog.
   *
   * @return  an int
   */
  public int getNumberOfUnpublishedBlogEntries() {
    return blogEntryIndex.getNumberOfUnpublishedBlogEntries();
    //#blog.java:982: method: int net.sourceforge.pebble.domain.Blog.getNumberOfUnpublishedBlogEntries()
    //#input(int getNumberOfUnpublishedBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[net/sourceforge/pebble/index/BlogEntryIndex]
    //#input(int getNumberOfUnpublishedBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[others]
    //#input(int getNumberOfUnpublishedBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Dispatch_Table.getNumberOfUnpublishedBlogEntries()I
    //#input(int getNumberOfUnpublishedBlogEntries()): this
    //#input(int getNumberOfUnpublishedBlogEntries()): this.blogEntryIndex
    //#input(int getNumberOfUnpublishedBlogEntries()): this.blogEntryIndex.__Tag
    //#input(int getNumberOfUnpublishedBlogEntries()): this.blogEntryIndex.unpublishedIndexEntries
    //#output(int getNumberOfUnpublishedBlogEntries()): return_value
    //#pre[2] (int getNumberOfUnpublishedBlogEntries()): this.blogEntryIndex != null
    //#pre[3] (int getNumberOfUnpublishedBlogEntries()): this.blogEntryIndex.__Tag == net/sourceforge/pebble/index/BlogEntryIndex
    //#pre[4] (int getNumberOfUnpublishedBlogEntries()): this.blogEntryIndex.unpublishedIndexEntries != null
    //#post(int getNumberOfUnpublishedBlogEntries()): init'ed(return_value)
    //#unanalyzed(int getNumberOfUnpublishedBlogEntries()): Effects-of-calling:java.util.List:size
    //#blog.java:982: end of method: int net.sourceforge.pebble.domain.Blog.getNumberOfUnpublishedBlogEntries()
  }

  /**
   * Gets the number of static pages for this blog.
   *
   * @return  an int
   */
  public int getNumberOfStaticPages() {
    return staticPageIndex.getNumberOfStaticPages();
    //#blog.java:991: method: int net.sourceforge.pebble.domain.Blog.getNumberOfStaticPages()
    //#input(int getNumberOfStaticPages()): net/sourceforge/pebble/index/StaticPageIndex.__Descendant_Table[net/sourceforge/pebble/index/StaticPageIndex]
    //#input(int getNumberOfStaticPages()): net/sourceforge/pebble/index/StaticPageIndex.__Descendant_Table[others]
    //#input(int getNumberOfStaticPages()): net/sourceforge/pebble/index/StaticPageIndex.__Dispatch_Table.getNumberOfStaticPages()I
    //#input(int getNumberOfStaticPages()): this
    //#input(int getNumberOfStaticPages()): this.staticPageIndex
    //#input(int getNumberOfStaticPages()): this.staticPageIndex.__Tag
    //#input(int getNumberOfStaticPages()): this.staticPageIndex.index
    //#output(int getNumberOfStaticPages()): return_value
    //#pre[2] (int getNumberOfStaticPages()): this.staticPageIndex != null
    //#pre[3] (int getNumberOfStaticPages()): this.staticPageIndex.__Tag == net/sourceforge/pebble/index/StaticPageIndex
    //#pre[4] (int getNumberOfStaticPages()): this.staticPageIndex.index != null
    //#post(int getNumberOfStaticPages()): init'ed(return_value)
    //#unanalyzed(int getNumberOfStaticPages()): Effects-of-calling:java.util.Map:size
    //#blog.java:991: end of method: int net.sourceforge.pebble.domain.Blog.getNumberOfStaticPages()
  }

  /**
   * Gets the most recent blog entries, the number
   * of which is specified.
   *
   * @param numberOfEntries the number of entries to get
   * @return a List containing the most recent blog entries
   */
  public List getRecentBlogEntries(int numberOfEntries) {
    BlogService service = new BlogService();
    //#blog.java:1002: method: List net.sourceforge.pebble.domain.Blog.getRecentBlogEntries(int)
    //#input(List getRecentBlogEntries(int)): log
    //#input(List getRecentBlogEntries(int)): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(List getRecentBlogEntries(int)): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(List getRecentBlogEntries(int)): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[net/sourceforge/pebble/index/BlogEntryIndex]
    //#input(List getRecentBlogEntries(int)): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[others]
    //#input(List getRecentBlogEntries(int)): net/sourceforge/pebble/index/BlogEntryIndex.__Dispatch_Table.getBlogEntries()Ljava/util/List;
    //#input(List getRecentBlogEntries(int)): numberOfEntries
    //#input(List getRecentBlogEntries(int)): this
    //#input(List getRecentBlogEntries(int)): this.blogEntryIndex
    //#input(List getRecentBlogEntries(int)): this.blogEntryIndex.__Tag
    //#input(List getRecentBlogEntries(int)): this.blogEntryIndex.indexEntries
    //#output(List getRecentBlogEntries(int)): new ArrayList(getRecentBlogEntries#2) num objects
    //#output(List getRecentBlogEntries(int)): return_value
    //#new obj(List getRecentBlogEntries(int)): new ArrayList(getRecentBlogEntries#2)
    //#pre[5] (List getRecentBlogEntries(int)): this.blogEntryIndex != null
    //#pre[6] (List getRecentBlogEntries(int)): this.blogEntryIndex.__Tag == net/sourceforge/pebble/index/BlogEntryIndex
    //#pre[7] (List getRecentBlogEntries(int)): init'ed(this.blogEntryIndex.indexEntries)
    //#presumption(List getRecentBlogEntries(int)): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#post(List getRecentBlogEntries(int)): return_value == &new ArrayList(getRecentBlogEntries#2)
    //#post(List getRecentBlogEntries(int)): new ArrayList(getRecentBlogEntries#2) num objects == 1
    //#unanalyzed(List getRecentBlogEntries(int)): Effects-of-calling:java.util.ArrayList
    //#test_vector(List getRecentBlogEntries(int)): java.util.Iterator:hasNext(...)@1005: {1}, {0}
    List<String> blogEntryIds = blogEntryIndex.getBlogEntries();
    List blogEntries = new ArrayList();
    for (String blogEntryId : blogEntryIds) {
      try {
        BlogEntry blogEntry = service.getBlogEntry(this, blogEntryId);
    //#blog.java:1007: Warning: call too complex - analysis skipped
    //#    -- call on BlogEntry getBlogEntry(Blog, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getRecentBlogEntries(int)
    //#    unanalyzed callee: BlogEntry getBlogEntry(Blog, String)
        blogEntries.add(blogEntry);
      } catch (BlogServiceException e) {
        log.error("Exception encountered", e);
    //#blog.java:1010: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getRecentBlogEntries(int)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }

      if (blogEntries.size() == numberOfEntries) {
        break;
      }
    }

    return blogEntries;
    //#blog.java:1018: end of method: List net.sourceforge.pebble.domain.Blog.getRecentBlogEntries(int)
  }

  /**
   * Gets the most recent published blog entries, the number of which
   * is taken from the recentBlogEntriesOnHomePage property.
   *
   * @return a List containing the most recent blog entries
   */
  public List getRecentPublishedBlogEntries() {
    return getRecentPublishedBlogEntries(getRecentBlogEntriesOnHomePage());
    //#blog.java:1028: method: List net.sourceforge.pebble.domain.Blog.getRecentPublishedBlogEntries()
    //#input(List getRecentPublishedBlogEntries()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getRecentPublishedBlogEntries()): __Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries()): __Dispatch_Table.getRecentBlogEntriesOnHomePage()I
    //#input(List getRecentPublishedBlogEntries()): __Dispatch_Table.getRecentPublishedBlogEntries(I)Ljava/util/List;
    //#input(List getRecentPublishedBlogEntries()): log
    //#input(List getRecentPublishedBlogEntries()): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(List getRecentPublishedBlogEntries()): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(List getRecentPublishedBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[net/sourceforge/pebble/index/BlogEntryIndex]
    //#input(List getRecentPublishedBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Dispatch_Table.getPublishedBlogEntries()Ljava/util/List;
    //#input(List getRecentPublishedBlogEntries()): this
    //#input(List getRecentPublishedBlogEntries()): this.__Tag
    //#input(List getRecentPublishedBlogEntries()): this.blogEntryIndex
    //#input(List getRecentPublishedBlogEntries()): this.blogEntryIndex.__Tag
    //#input(List getRecentPublishedBlogEntries()): this.blogEntryIndex.publishedIndexEntries
    //#input(List getRecentPublishedBlogEntries()): this.properties
    //#output(List getRecentPublishedBlogEntries()): new ArrayList(getRecentPublishedBlogEntries#2*) num objects
    //#output(List getRecentPublishedBlogEntries()): return_value
    //#new obj(List getRecentPublishedBlogEntries()): new ArrayList(getRecentPublishedBlogEntries#2*)
    //#pre[3] (List getRecentPublishedBlogEntries()): this.blogEntryIndex != null
    //#pre[4] (List getRecentPublishedBlogEntries()): this.blogEntryIndex.__Tag == net/sourceforge/pebble/index/BlogEntryIndex
    //#pre[5] (List getRecentPublishedBlogEntries()): init'ed(this.blogEntryIndex.publishedIndexEntries)
    //#pre[6] (List getRecentPublishedBlogEntries()): this.properties != null
    //#pre[2] (List getRecentPublishedBlogEntries()): (soft) this.__Tag == net/sourceforge/pebble/domain/Blog
    //#post(List getRecentPublishedBlogEntries()): return_value == &new ArrayList(getRecentPublishedBlogEntries#2*)
    //#post(List getRecentPublishedBlogEntries()): new ArrayList(getRecentPublishedBlogEntries#2*) num objects == 1
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:java.util.List:size
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:getConfiguredFactory
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:getBlogEntryDAO
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:getBlog
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:getId
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:getCompositeKeyForBlogEntry
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:setPersistent
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:setEventsEnabled
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.BlogServiceException
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:net.sf.ehcache.Cache:get
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:net.sf.ehcache.Element:getValue
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:loadBlogEntry
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:net.sf.ehcache.Element
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:net.sf.ehcache.Cache:put
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:clone
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:getBlogEntry
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:java.util.List:add
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(List getRecentPublishedBlogEntries()): Effects-of-calling:java.lang.Integer:parseInt
    //#blog.java:1028: end of method: List net.sourceforge.pebble.domain.Blog.getRecentPublishedBlogEntries()
  }

  /**
   * Gets the most recent published blog entries, the number of which
   * is specified
   *
   * @param number    the number of blog entries to get
   * @return a List containing the most recent blog entries
   */
  public List getRecentPublishedBlogEntries(int number) {
    BlogService service = new BlogService();
    //#blog.java:1039: method: List net.sourceforge.pebble.domain.Blog.getRecentPublishedBlogEntries(int)
    //#input(List getRecentPublishedBlogEntries(int)): log
    //#input(List getRecentPublishedBlogEntries(int)): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(List getRecentPublishedBlogEntries(int)): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(List getRecentPublishedBlogEntries(int)): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[net/sourceforge/pebble/index/BlogEntryIndex]
    //#input(List getRecentPublishedBlogEntries(int)): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(int)): net/sourceforge/pebble/index/BlogEntryIndex.__Dispatch_Table.getPublishedBlogEntries()Ljava/util/List;
    //#input(List getRecentPublishedBlogEntries(int)): number
    //#input(List getRecentPublishedBlogEntries(int)): this
    //#input(List getRecentPublishedBlogEntries(int)): this.blogEntryIndex
    //#input(List getRecentPublishedBlogEntries(int)): this.blogEntryIndex.__Tag
    //#input(List getRecentPublishedBlogEntries(int)): this.blogEntryIndex.publishedIndexEntries
    //#output(List getRecentPublishedBlogEntries(int)): new ArrayList(getRecentPublishedBlogEntries#2) num objects
    //#output(List getRecentPublishedBlogEntries(int)): return_value
    //#new obj(List getRecentPublishedBlogEntries(int)): new ArrayList(getRecentPublishedBlogEntries#2)
    //#pre[5] (List getRecentPublishedBlogEntries(int)): this.blogEntryIndex != null
    //#pre[6] (List getRecentPublishedBlogEntries(int)): this.blogEntryIndex.__Tag == net/sourceforge/pebble/index/BlogEntryIndex
    //#pre[7] (List getRecentPublishedBlogEntries(int)): init'ed(this.blogEntryIndex.publishedIndexEntries)
    //#presumption(List getRecentPublishedBlogEntries(int)): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#post(List getRecentPublishedBlogEntries(int)): return_value == &new ArrayList(getRecentPublishedBlogEntries#2)
    //#post(List getRecentPublishedBlogEntries(int)): new ArrayList(getRecentPublishedBlogEntries#2) num objects == 1
    //#unanalyzed(List getRecentPublishedBlogEntries(int)): Effects-of-calling:java.util.ArrayList
    //#test_vector(List getRecentPublishedBlogEntries(int)): getBlogEntry(...)@1048: Addr_Set{null}, Inverse{null}
    //#test_vector(List getRecentPublishedBlogEntries(int)): java.util.Iterator:hasNext(...)@1042: {1}, {0}
    List<String> blogEntryIds = blogEntryIndex.getPublishedBlogEntries();
    List blogEntries = new ArrayList();
    for (String blogEntryId : blogEntryIds) {
      if (blogEntries.size() == number) {
        break;
      }

      try {
        BlogEntry blogEntry = service.getBlogEntry(this, blogEntryId);
    //#blog.java:1048: Warning: call too complex - analysis skipped
    //#    -- call on BlogEntry getBlogEntry(Blog, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getRecentPublishedBlogEntries(int)
    //#    unanalyzed callee: BlogEntry getBlogEntry(Blog, String)
        if (blogEntry != null) {
          blogEntries.add(blogEntry);
        }
      } catch (BlogServiceException e) {
        log.error("Exception encountered", e);
    //#blog.java:1053: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getRecentPublishedBlogEntries(int)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }
    }

    return blogEntries;
    //#blog.java:1057: end of method: List net.sourceforge.pebble.domain.Blog.getRecentPublishedBlogEntries(int)
  }

  /**
   * Gets blog entries for a given list of IDs.
   *
   * @param blogEntryIds    the list of blog entry IDs
   * @return a List containing the blog entries
   */
  public List<BlogEntry> getBlogEntries(List<String> blogEntryIds) {
    BlogService service = new BlogService();
    //#blog.java:1067: method: List net.sourceforge.pebble.domain.Blog.getBlogEntries(List)
    //#input(List getBlogEntries(List)): blogEntryIds
    //#input(List getBlogEntries(List)): log
    //#input(List getBlogEntries(List)): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(List getBlogEntries(List)): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(List getBlogEntries(List)): this
    //#output(List getBlogEntries(List)): new LinkedList(getBlogEntries#2) num objects
    //#output(List getBlogEntries(List)): return_value
    //#new obj(List getBlogEntries(List)): new LinkedList(getBlogEntries#2)
    //#pre[1] (List getBlogEntries(List)): blogEntryIds != null
    //#presumption(List getBlogEntries(List)): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#post(List getBlogEntries(List)): return_value == &new LinkedList(getBlogEntries#2)
    //#post(List getBlogEntries(List)): new LinkedList(getBlogEntries#2) num objects == 1
    //#test_vector(List getBlogEntries(List)): getBlogEntry(...)@1071: Addr_Set{null}, Inverse{null}
    //#test_vector(List getBlogEntries(List)): java.util.Iterator:hasNext(...)@1069: {1}, {0}
    List<BlogEntry> blogEntries = new LinkedList<BlogEntry>();
    for (String blogEntryId : blogEntryIds) {
      try {
        BlogEntry blogEntry = service.getBlogEntry(this, blogEntryId);
    //#blog.java:1071: Warning: call too complex - analysis skipped
    //#    -- call on BlogEntry getBlogEntry(Blog, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getBlogEntries(List)
    //#    unanalyzed callee: BlogEntry getBlogEntry(Blog, String)
        if (blogEntry != null) {
          blogEntries.add(blogEntry);
        }
      } catch (BlogServiceException e) {
        log.error("Exception encountered", e);
    //#blog.java:1076: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getBlogEntries(List)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }
    }

    return blogEntries;
    //#blog.java:1080: end of method: List net.sourceforge.pebble.domain.Blog.getBlogEntries(List)
  }

  /**
   * Gets the most recent published blog entries for a given category, the
   * number of which is taken from the recentBlogEntriesOnHomePage property.
   *
   * @param   category          a category
   * @return  a List containing the most recent blog entries
   */
  public List getRecentPublishedBlogEntries(Category category) {
    BlogService service = new BlogService();
    //#blog.java:1091: method: List net.sourceforge.pebble.domain.Blog.getRecentPublishedBlogEntries(Category)
    //#input(List getRecentPublishedBlogEntries(Category)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getRecentPublishedBlogEntries(Category)): __Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(Category)): __Dispatch_Table.getRecentBlogEntriesOnHomePage()I
    //#input(List getRecentPublishedBlogEntries(Category)): category
    //#input(List getRecentPublishedBlogEntries(Category)): category.__Tag
    //#input(List getRecentPublishedBlogEntries(Category)): category.blogEntries
    //#input(List getRecentPublishedBlogEntries(Category)): log
    //#input(List getRecentPublishedBlogEntries(Category)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).__Tag
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isPublished()Z
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/Category.__Descendant_Table[net/sourceforge/pebble/domain/Category]
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/Category.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getBlogEntries()Ljava/util/List;
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/State.PUBLISHED
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/index/CategoryIndex.__Descendant_Table[net/sourceforge/pebble/index/CategoryIndex]
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/index/CategoryIndex.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(Category)): net/sourceforge/pebble/index/CategoryIndex.__Dispatch_Table.getRecentBlogEntries(Lnet/sourceforge/pebble/domain/Category;)Ljava/util/List;
    //#input(List getRecentPublishedBlogEntries(Category)): this
    //#input(List getRecentPublishedBlogEntries(Category)): this.__Tag
    //#input(List getRecentPublishedBlogEntries(Category)): this.categoryIndex
    //#input(List getRecentPublishedBlogEntries(Category)): this.categoryIndex.__Tag
    //#input(List getRecentPublishedBlogEntries(Category)): this.properties
    //#output(List getRecentPublishedBlogEntries(Category)): new ArrayList(getRecentPublishedBlogEntries#2) num objects
    //#output(List getRecentPublishedBlogEntries(Category)): return_value
    //#new obj(List getRecentPublishedBlogEntries(Category)): new ArrayList(getRecentPublishedBlogEntries#2)
    //#pre[1] (List getRecentPublishedBlogEntries(Category)): category != null
    //#pre[2] (List getRecentPublishedBlogEntries(Category)): category.__Tag == net/sourceforge/pebble/domain/Category
    //#pre[3] (List getRecentPublishedBlogEntries(Category)): init'ed(category.blogEntries)
    //#pre[8] (List getRecentPublishedBlogEntries(Category)): this.categoryIndex != null
    //#pre[9] (List getRecentPublishedBlogEntries(Category)): this.categoryIndex.__Tag == net/sourceforge/pebble/index/CategoryIndex
    //#pre[7] (List getRecentPublishedBlogEntries(Category)): (soft) this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[10] (List getRecentPublishedBlogEntries(Category)): (soft) this.properties != null
    //#presumption(List getRecentPublishedBlogEntries(Category)): blogEntry.__Tag@1096 == net/sourceforge/pebble/domain/BlogEntry
    //#presumption(List getRecentPublishedBlogEntries(Category)): blogEntry.state.__Tag@1096 == net/sourceforge/pebble/domain/State
    //#presumption(List getRecentPublishedBlogEntries(Category)): blogEntry.state@1096 != null
    //#presumption(List getRecentPublishedBlogEntries(Category)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name@1096 != null
    //#presumption(List getRecentPublishedBlogEntries(Category)): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#presumption(List getRecentPublishedBlogEntries(Category)): this.properties@1096 != null
    //#post(List getRecentPublishedBlogEntries(Category)): return_value == &new ArrayList(getRecentPublishedBlogEntries#2)
    //#post(List getRecentPublishedBlogEntries(Category)): new ArrayList(getRecentPublishedBlogEntries#2) num objects == 1
    //#unanalyzed(List getRecentPublishedBlogEntries(Category)): Effects-of-calling:getBlogEntries
    //#unanalyzed(List getRecentPublishedBlogEntries(Category)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getRecentPublishedBlogEntries(Category)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(List getRecentPublishedBlogEntries(Category)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(List getRecentPublishedBlogEntries(Category)): Effects-of-calling:java.lang.Integer:parseInt
    //#test_vector(List getRecentPublishedBlogEntries(Category)): getBlogEntry(...)@1096: Addr_Set{null}, Inverse{null}
    //#test_vector(List getRecentPublishedBlogEntries(Category)): java.util.Iterator:hasNext(...)@1094: {1}, {0}
    List<String> blogEntryIds = categoryIndex.getRecentBlogEntries(category);
    List blogEntries = new ArrayList();
    for (String blogEntryId : blogEntryIds) {
      try {
        BlogEntry blogEntry = service.getBlogEntry(this, blogEntryId);
    //#blog.java:1096: Warning: call too complex - analysis skipped
    //#    -- call on BlogEntry getBlogEntry(Blog, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getRecentPublishedBlogEntries(Category)
    //#    unanalyzed callee: BlogEntry getBlogEntry(Blog, String)
        if (blogEntry != null && blogEntry.isPublished()) {
          blogEntries.add(blogEntry);
        }
      } catch (BlogServiceException e) {
        log.error("Exception encountered", e);
    //#blog.java:1101: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getRecentPublishedBlogEntries(Category)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }

      if (blogEntries.size() == getRecentBlogEntriesOnHomePage()) {
        break;
      }
    }

    return blogEntries;
    //#blog.java:1109: end of method: List net.sourceforge.pebble.domain.Blog.getRecentPublishedBlogEntries(Category)
  }

  /**
   * Gets the most recent published blog entries for a given category, the
   * number of which is taken from the recentBlogEntriesOnHomePage property.
   *
   * @param   author    the author's username
   * @return  a List containing the most recent blog entries
   */
  public List getRecentPublishedBlogEntries(String author) {
    BlogService service = new BlogService();
    //#blog.java:1120: method: List net.sourceforge.pebble.domain.Blog.getRecentPublishedBlogEntries(String)
    //#input(List getRecentPublishedBlogEntries(String)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getRecentPublishedBlogEntries(String)): __Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(String)): __Dispatch_Table.getRecentBlogEntriesOnHomePage()I
    //#input(List getRecentPublishedBlogEntries(String)): author
    //#input(List getRecentPublishedBlogEntries(String)): log
    //#input(List getRecentPublishedBlogEntries(String)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).__Tag
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isPublished()Z
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/State.PUBLISHED
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/index/AuthorIndex.__Descendant_Table[net/sourceforge/pebble/index/AuthorIndex]
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/index/AuthorIndex.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(String)): net/sourceforge/pebble/index/AuthorIndex.__Dispatch_Table.getRecentBlogEntries(Ljava/lang/String;)Ljava/util/List;
    //#input(List getRecentPublishedBlogEntries(String)): this
    //#input(List getRecentPublishedBlogEntries(String)): this.__Tag
    //#input(List getRecentPublishedBlogEntries(String)): this.authorIndex
    //#input(List getRecentPublishedBlogEntries(String)): this.authorIndex.__Tag
    //#input(List getRecentPublishedBlogEntries(String)): this.authorIndex.authors
    //#input(List getRecentPublishedBlogEntries(String)): this.properties
    //#output(List getRecentPublishedBlogEntries(String)): new ArrayList(getRecentPublishedBlogEntries#2) num objects
    //#output(List getRecentPublishedBlogEntries(String)): return_value
    //#new obj(List getRecentPublishedBlogEntries(String)): new ArrayList(getRecentPublishedBlogEntries#2)
    //#pre[6] (List getRecentPublishedBlogEntries(String)): this.authorIndex != null
    //#pre[7] (List getRecentPublishedBlogEntries(String)): this.authorIndex.__Tag == net/sourceforge/pebble/index/AuthorIndex
    //#pre[8] (List getRecentPublishedBlogEntries(String)): this.authorIndex.authors != null
    //#pre[5] (List getRecentPublishedBlogEntries(String)): (soft) this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[9] (List getRecentPublishedBlogEntries(String)): (soft) this.properties != null
    //#presumption(List getRecentPublishedBlogEntries(String)): blogEntry.__Tag@1125 == net/sourceforge/pebble/domain/BlogEntry
    //#presumption(List getRecentPublishedBlogEntries(String)): blogEntry.state.__Tag@1125 == net/sourceforge/pebble/domain/State
    //#presumption(List getRecentPublishedBlogEntries(String)): blogEntry.state@1125 != null
    //#presumption(List getRecentPublishedBlogEntries(String)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name@1125 != null
    //#presumption(List getRecentPublishedBlogEntries(String)): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#presumption(List getRecentPublishedBlogEntries(String)): this.__Tag@1125 == net/sourceforge/pebble/domain/Blog
    //#presumption(List getRecentPublishedBlogEntries(String)): this.properties@1125 != null
    //#post(List getRecentPublishedBlogEntries(String)): return_value == &new ArrayList(getRecentPublishedBlogEntries#2)
    //#post(List getRecentPublishedBlogEntries(String)): new ArrayList(getRecentPublishedBlogEntries#2) num objects == 1
    //#unanalyzed(List getRecentPublishedBlogEntries(String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(List getRecentPublishedBlogEntries(String)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(List getRecentPublishedBlogEntries(String)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(List getRecentPublishedBlogEntries(String)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(List getRecentPublishedBlogEntries(String)): Effects-of-calling:java.util.LinkedList
    //#test_vector(List getRecentPublishedBlogEntries(String)): getBlogEntry(...)@1125: Addr_Set{null}, Inverse{null}
    //#test_vector(List getRecentPublishedBlogEntries(String)): java.util.Iterator:hasNext(...)@1123: {1}, {0}
    List<String> blogEntryIds = authorIndex.getRecentBlogEntries(author);
    List blogEntries = new ArrayList();
    for (String blogEntryId : blogEntryIds) {
      try {
        BlogEntry blogEntry = service.getBlogEntry(this, blogEntryId);
    //#blog.java:1125: Warning: call too complex - analysis skipped
    //#    -- call on BlogEntry getBlogEntry(Blog, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getRecentPublishedBlogEntries(String)
    //#    unanalyzed callee: BlogEntry getBlogEntry(Blog, String)
        if (blogEntry != null && blogEntry.isPublished()) {
          blogEntries.add(blogEntry);
        }
      } catch (BlogServiceException e) {
        log.error("Exception encountered", e);
    //#blog.java:1130: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getRecentPublishedBlogEntries(String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }

      if (blogEntries.size() == getRecentBlogEntriesOnHomePage()) {
        break;
      }
    }

    return blogEntries;
    //#blog.java:1138: end of method: List net.sourceforge.pebble.domain.Blog.getRecentPublishedBlogEntries(String)
  }

  /**
   * Gets the most recent published blog entries for a given tag, the
   * number of which is taken from the recentBlogEntriesOnHomePage property.
   *
   * @param tag             a tag
   * @return a List containing the most recent blog entries
   */
  public List getRecentPublishedBlogEntries(Tag tag) {
    BlogService service = new BlogService();
    //#blog.java:1149: method: List net.sourceforge.pebble.domain.Blog.getRecentPublishedBlogEntries(Tag)
    //#blog.java:1149: Warning: suspicious precondition
    //#    the precondition for tag.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getRecentPublishedBlogEntries(Tag)
    //#    suspicious precondition index: [4]
    //#input(List getRecentPublishedBlogEntries(Tag)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getRecentPublishedBlogEntries(Tag)): __Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(Tag)): __Dispatch_Table.getRecentBlogEntriesOnHomePage()I
    //#input(List getRecentPublishedBlogEntries(Tag)): log
    //#input(List getRecentPublishedBlogEntries(Tag)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).__Tag
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isPublished()Z
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/State.PUBLISHED
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/domain/Tag]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/index/IndexedTag]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/Tag.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/domain/Tag.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/index/IndexedTag.__Descendant_Table[net/sourceforge/pebble/index/IndexedTag]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/index/IndexedTag.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.getBlogEntries()Ljava/util/List;
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/index/TagIndex.__Descendant_Table[net/sourceforge/pebble/index/TagIndex]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/index/TagIndex.__Descendant_Table[others]
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/index/TagIndex.__Dispatch_Table.getRecentBlogEntries(Lnet/sourceforge/pebble/domain/Tag;)Ljava/util/List;
    //#input(List getRecentPublishedBlogEntries(Tag)): net/sourceforge/pebble/index/TagIndex.__Dispatch_Table.getTag(Ljava/lang/String;)Lnet/sourceforge/pebble/index/IndexedTag;
    //#input(List getRecentPublishedBlogEntries(Tag)): tag
    //#input(List getRecentPublishedBlogEntries(Tag)): tag.__Tag
    //#input(List getRecentPublishedBlogEntries(Tag)): tag.name
    //#input(List getRecentPublishedBlogEntries(Tag)): this
    //#input(List getRecentPublishedBlogEntries(Tag)): this.__Tag
    //#input(List getRecentPublishedBlogEntries(Tag)): this.properties
    //#input(List getRecentPublishedBlogEntries(Tag)): this.tagIndex
    //#input(List getRecentPublishedBlogEntries(Tag)): this.tagIndex.__Tag
    //#input(List getRecentPublishedBlogEntries(Tag)): this.tagIndex.blog
    //#input(List getRecentPublishedBlogEntries(Tag)): this.tagIndex.tags
    //#output(List getRecentPublishedBlogEntries(Tag)): new ArrayList(getRecentPublishedBlogEntries#2) num objects
    //#output(List getRecentPublishedBlogEntries(Tag)): return_value
    //#new obj(List getRecentPublishedBlogEntries(Tag)): new ArrayList(getRecentPublishedBlogEntries#2)
    //#pre[3] (List getRecentPublishedBlogEntries(Tag)): tag != null
    //#pre[4] (List getRecentPublishedBlogEntries(Tag)): tag.__Tag in {net/sourceforge/pebble/domain/Tag, net/sourceforge/pebble/index/IndexedTag}
    //#pre[5] (List getRecentPublishedBlogEntries(Tag)): init'ed(tag.name)
    //#pre[9] (List getRecentPublishedBlogEntries(Tag)): this.tagIndex != null
    //#pre[10] (List getRecentPublishedBlogEntries(Tag)): this.tagIndex.__Tag == net/sourceforge/pebble/index/TagIndex
    //#pre[12] (List getRecentPublishedBlogEntries(Tag)): this.tagIndex.tags != null
    //#pre[7] (List getRecentPublishedBlogEntries(Tag)): (soft) this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[8] (List getRecentPublishedBlogEntries(Tag)): (soft) this.properties != null
    //#pre[11] (List getRecentPublishedBlogEntries(Tag)): (soft) init'ed(this.tagIndex.blog)
    //#presumption(List getRecentPublishedBlogEntries(Tag)): blogEntry.__Tag@1154 == net/sourceforge/pebble/domain/BlogEntry
    //#presumption(List getRecentPublishedBlogEntries(Tag)): blogEntry.state.__Tag@1154 == net/sourceforge/pebble/domain/State
    //#presumption(List getRecentPublishedBlogEntries(Tag)): blogEntry.state@1154 != null
    //#presumption(List getRecentPublishedBlogEntries(Tag)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name@1154 != null
    //#presumption(List getRecentPublishedBlogEntries(Tag)): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#presumption(List getRecentPublishedBlogEntries(Tag)): this.__Tag@1154 == net/sourceforge/pebble/domain/Blog
    //#presumption(List getRecentPublishedBlogEntries(Tag)): this.properties@1154 != null
    //#post(List getRecentPublishedBlogEntries(Tag)): return_value == &new ArrayList(getRecentPublishedBlogEntries#2)
    //#post(List getRecentPublishedBlogEntries(Tag)): new ArrayList(getRecentPublishedBlogEntries#2) num objects == 1
    //#unanalyzed(List getRecentPublishedBlogEntries(Tag)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(List getRecentPublishedBlogEntries(Tag)): Effects-of-calling:java.lang.String:toLowerCase
    //#unanalyzed(List getRecentPublishedBlogEntries(Tag)): Effects-of-calling:java.lang.String:replaceAll
    //#unanalyzed(List getRecentPublishedBlogEntries(Tag)): Effects-of-calling:encode
    //#unanalyzed(List getRecentPublishedBlogEntries(Tag)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getRecentPublishedBlogEntries(Tag)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(List getRecentPublishedBlogEntries(Tag)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(List getRecentPublishedBlogEntries(Tag)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(List getRecentPublishedBlogEntries(Tag)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(List getRecentPublishedBlogEntries(Tag)): Effects-of-calling:net.sourceforge.pebble.index.IndexedTag
    //#unanalyzed(List getRecentPublishedBlogEntries(Tag)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(List getRecentPublishedBlogEntries(Tag)): Effects-of-calling:getName
    //#unanalyzed(List getRecentPublishedBlogEntries(Tag)): Effects-of-calling:getBlogEntries
    //#test_vector(List getRecentPublishedBlogEntries(Tag)): getBlogEntry(...)@1154: Addr_Set{null}, Inverse{null}
    //#test_vector(List getRecentPublishedBlogEntries(Tag)): java.util.Iterator:hasNext(...)@1152: {1}, {0}
    List<String> blogEntryIds = tagIndex.getRecentBlogEntries(tag);
    List blogEntries = new ArrayList();
    for (String blogEntryId : blogEntryIds) {
      try {
        BlogEntry blogEntry = service.getBlogEntry(this, blogEntryId);
    //#blog.java:1154: Warning: call too complex - analysis skipped
    //#    -- call on BlogEntry getBlogEntry(Blog, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getRecentPublishedBlogEntries(Tag)
    //#    unanalyzed callee: BlogEntry getBlogEntry(Blog, String)
        if (blogEntry != null && blogEntry.isPublished()) {
          blogEntries.add(blogEntry);
        }
      } catch (BlogServiceException e) {
        log.error("Exception encountered", e);
    //#blog.java:1159: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getRecentPublishedBlogEntries(Tag)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }

      if (blogEntries.size() == getRecentBlogEntriesOnHomePage()) {
        break;
      }
    }

    return blogEntries;
    //#blog.java:1167: end of method: List net.sourceforge.pebble.domain.Blog.getRecentPublishedBlogEntries(Tag)
  }

  /**
   * Gets the most recent responses.
   *
   * @return a List containing the most recent blog entries
   */
  public List<Response> getRecentApprovedResponses() {
    BlogService service = new BlogService();
    //#blog.java:1176: method: List net.sourceforge.pebble.domain.Blog.getRecentApprovedResponses()
    //#input(List getRecentApprovedResponses()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getRecentApprovedResponses()): __Descendant_Table[others]
    //#input(List getRecentApprovedResponses()): __Dispatch_Table.getRecentResponsesOnHomePage()I
    //#input(List getRecentApprovedResponses()): log
    //#input(List getRecentApprovedResponses()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).__Tag
    //#input(List getRecentApprovedResponses()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getComment(J)Lnet/sourceforge/pebble/domain/Comment;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getResponse(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Response;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTrackBack(J)Lnet/sourceforge/pebble/domain/TrackBack;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isPublished()Z
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[others]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getResponse(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Response;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getId()J
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/Response.__Descendant_Table[others]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/State.PUBLISHED
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getId()J
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[net/sourceforge/pebble/index/ResponseIndex]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[others]
    //#input(List getRecentApprovedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Dispatch_Table.getApprovedResponses()Ljava/util/List;
    //#input(List getRecentApprovedResponses()): this
    //#input(List getRecentApprovedResponses()): this.__Tag
    //#input(List getRecentApprovedResponses()): this.properties
    //#input(List getRecentApprovedResponses()): this.responseIndex
    //#input(List getRecentApprovedResponses()): this.responseIndex.__Tag
    //#input(List getRecentApprovedResponses()): this.responseIndex.approvedResponses
    //#output(List getRecentApprovedResponses()): new ArrayList(getRecentApprovedResponses#2) num objects
    //#output(List getRecentApprovedResponses()): return_value
    //#new obj(List getRecentApprovedResponses()): new ArrayList(getRecentApprovedResponses#2)
    //#pre[5] (List getRecentApprovedResponses()): this.responseIndex != null
    //#pre[6] (List getRecentApprovedResponses()): this.responseIndex.__Tag == net/sourceforge/pebble/index/ResponseIndex
    //#pre[7] (List getRecentApprovedResponses()): init'ed(this.responseIndex.approvedResponses)
    //#pre[1] (List getRecentApprovedResponses()): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name != null
    //#pre[3] (List getRecentApprovedResponses()): (soft) this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[4] (List getRecentApprovedResponses()): (soft) this.properties != null
    //#presumption(List getRecentApprovedResponses()): getBlogEntry(...).__Tag@1181 == net/sourceforge/pebble/domain/BlogEntry
    //#presumption(List getRecentApprovedResponses()): getBlogEntry(...).state.__Tag@1181 == net/sourceforge/pebble/domain/State
    //#presumption(List getRecentApprovedResponses()): getBlogEntry(...).state@1181 != null
    //#presumption(List getRecentApprovedResponses()): java.util.Iterator:next(...)@1179 != null
    //#presumption(List getRecentApprovedResponses()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#presumption(List getRecentApprovedResponses()): response.__Tag@1181 in {net/sourceforge/pebble/domain/Comment, net/sourceforge/pebble/domain/Response, net/sourceforge/pebble/domain/TrackBack}
    //#presumption(List getRecentApprovedResponses()): response.blogEntry@1181 != null
    //#post(List getRecentApprovedResponses()): return_value == &new ArrayList(getRecentApprovedResponses#2)
    //#post(List getRecentApprovedResponses()): new ArrayList(getRecentApprovedResponses#2) num objects == 1
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:getConfiguredFactory
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:getBlogEntryDAO
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:getBlog
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:getId
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:getCompositeKeyForBlogEntry
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:setPersistent
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:setEventsEnabled
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:net.sourceforge.pebble.domain.BlogServiceException
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:net.sf.ehcache.Cache:get
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:net.sf.ehcache.Element:getValue
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:loadBlogEntry
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:net.sf.ehcache.Element
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:net.sf.ehcache.Cache:put
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:clone
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:getBlogEntry
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.lang.String:lastIndexOf
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:getResponse
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:getComments
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.util.List:add
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:getTrackBack
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.lang.Long:parseLong
    //#unanalyzed(List getRecentApprovedResponses()): Effects-of-calling:java.lang.String:startsWith
    //#test_vector(List getRecentApprovedResponses()): java.util.Iterator:hasNext(...)@1179: {1}, {0}
    List<String> responseIds = responseIndex.getApprovedResponses();
    List<Response> responses = new ArrayList<Response>();
    for (String responseId : responseIds) {
      try {
        Response response = service.getResponse(this, responseId);
        if (response != null && response.getBlogEntry().isPublished()) {
    //#blog.java:1182: ?use of default init
    //#    init'ed(response.__Tag)
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getRecentApprovedResponses()
    //#    basic block: bb_4
    //#    assertion: init'ed(response.__Tag)
    //#    VN: response.__Tag
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#blog.java:1182: ?null dereference
    //#    net/sourceforge/pebble/domain/Response.__Descendant_Table[response.__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getRecentApprovedResponses()
    //#    basic block: bb_4
    //#    assertion: net/sourceforge/pebble/domain/Response.__Descendant_Table[response.__Tag] != null
    //#    VN: net/sourceforge/pebble/domain/Response.__Descendant_Table[response.__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
          responses.add(response);
        }
      } catch (BlogServiceException e) {
        log.error("Exception encountered", e);
    //#blog.java:1186: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: List getRecentApprovedResponses()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }

      if (responses.size() == getRecentResponsesOnHomePage()) {
        break;
      }
    }

    return responses;
    //#blog.java:1194: end of method: List net.sourceforge.pebble.domain.Blog.getRecentApprovedResponses()
  }

  /**
   * Gets the list of approved responses.
   *
   * @return  a List of response IDs
   */
  public List<String> getApprovedResponses() {
    return responseIndex.getApprovedResponses();
    //#blog.java:1203: method: List net.sourceforge.pebble.domain.Blog.getApprovedResponses()
    //#input(List getApprovedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[net/sourceforge/pebble/index/ResponseIndex]
    //#input(List getApprovedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[others]
    //#input(List getApprovedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Dispatch_Table.getApprovedResponses()Ljava/util/List;
    //#input(List getApprovedResponses()): this
    //#input(List getApprovedResponses()): this.responseIndex
    //#input(List getApprovedResponses()): this.responseIndex.__Tag
    //#input(List getApprovedResponses()): this.responseIndex.approvedResponses
    //#output(List getApprovedResponses()): new ArrayList(getApprovedResponses#1*) num objects
    //#output(List getApprovedResponses()): return_value
    //#new obj(List getApprovedResponses()): new ArrayList(getApprovedResponses#1*)
    //#pre[2] (List getApprovedResponses()): this.responseIndex != null
    //#pre[3] (List getApprovedResponses()): this.responseIndex.__Tag == net/sourceforge/pebble/index/ResponseIndex
    //#pre[4] (List getApprovedResponses()): init'ed(this.responseIndex.approvedResponses)
    //#post(List getApprovedResponses()): return_value == &new ArrayList(getApprovedResponses#1*)
    //#post(List getApprovedResponses()): new ArrayList(getApprovedResponses#1*) num objects == 1
    //#unanalyzed(List getApprovedResponses()): Effects-of-calling:java.util.ArrayList
    //#blog.java:1203: end of method: List net.sourceforge.pebble.domain.Blog.getApprovedResponses()
  }

  /**
   * Gets the list of pending responses.
   *
   * @return  a List of response IDs
   */
  public List<String> getPendingResponses() {
    return responseIndex.getPendingResponses();
    //#blog.java:1212: method: List net.sourceforge.pebble.domain.Blog.getPendingResponses()
    //#input(List getPendingResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[net/sourceforge/pebble/index/ResponseIndex]
    //#input(List getPendingResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[others]
    //#input(List getPendingResponses()): net/sourceforge/pebble/index/ResponseIndex.__Dispatch_Table.getPendingResponses()Ljava/util/List;
    //#input(List getPendingResponses()): this
    //#input(List getPendingResponses()): this.responseIndex
    //#input(List getPendingResponses()): this.responseIndex.__Tag
    //#input(List getPendingResponses()): this.responseIndex.pendingResponses
    //#output(List getPendingResponses()): new ArrayList(getPendingResponses#1*) num objects
    //#output(List getPendingResponses()): return_value
    //#new obj(List getPendingResponses()): new ArrayList(getPendingResponses#1*)
    //#pre[2] (List getPendingResponses()): this.responseIndex != null
    //#pre[3] (List getPendingResponses()): this.responseIndex.__Tag == net/sourceforge/pebble/index/ResponseIndex
    //#pre[4] (List getPendingResponses()): init'ed(this.responseIndex.pendingResponses)
    //#post(List getPendingResponses()): return_value == &new ArrayList(getPendingResponses#1*)
    //#post(List getPendingResponses()): new ArrayList(getPendingResponses#1*) num objects == 1
    //#unanalyzed(List getPendingResponses()): Effects-of-calling:java.util.ArrayList
    //#blog.java:1212: end of method: List net.sourceforge.pebble.domain.Blog.getPendingResponses()
  }

  /**
   * Gets the list of rejected responses.
   *
   * @return  a List of response IDs
   */
  public List<String> getRejectedResponses() {
    return responseIndex.getRejectedResponses();
    //#blog.java:1221: method: List net.sourceforge.pebble.domain.Blog.getRejectedResponses()
    //#input(List getRejectedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[net/sourceforge/pebble/index/ResponseIndex]
    //#input(List getRejectedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[others]
    //#input(List getRejectedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Dispatch_Table.getRejectedResponses()Ljava/util/List;
    //#input(List getRejectedResponses()): this
    //#input(List getRejectedResponses()): this.responseIndex
    //#input(List getRejectedResponses()): this.responseIndex.__Tag
    //#input(List getRejectedResponses()): this.responseIndex.rejectedResponses
    //#output(List getRejectedResponses()): new ArrayList(getRejectedResponses#1*) num objects
    //#output(List getRejectedResponses()): return_value
    //#new obj(List getRejectedResponses()): new ArrayList(getRejectedResponses#1*)
    //#pre[2] (List getRejectedResponses()): this.responseIndex != null
    //#pre[3] (List getRejectedResponses()): this.responseIndex.__Tag == net/sourceforge/pebble/index/ResponseIndex
    //#pre[4] (List getRejectedResponses()): init'ed(this.responseIndex.rejectedResponses)
    //#post(List getRejectedResponses()): return_value == &new ArrayList(getRejectedResponses#1*)
    //#post(List getRejectedResponses()): new ArrayList(getRejectedResponses#1*) num objects == 1
    //#unanalyzed(List getRejectedResponses()): Effects-of-calling:java.util.ArrayList
    //#blog.java:1221: end of method: List net.sourceforge.pebble.domain.Blog.getRejectedResponses()
  }

  /**
   * Gets the number of responses.
   *
   * @return the number of responses
   */
  public int getNumberOfResponses() {
    return responseIndex.getNumberOfResponses();
    //#blog.java:1230: method: int net.sourceforge.pebble.domain.Blog.getNumberOfResponses()
    //#input(int getNumberOfResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[net/sourceforge/pebble/index/ResponseIndex]
    //#input(int getNumberOfResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[others]
    //#input(int getNumberOfResponses()): net/sourceforge/pebble/index/ResponseIndex.__Dispatch_Table.getNumberOfApprovedResponses()I
    //#input(int getNumberOfResponses()): net/sourceforge/pebble/index/ResponseIndex.__Dispatch_Table.getNumberOfPendingResponses()I
    //#input(int getNumberOfResponses()): net/sourceforge/pebble/index/ResponseIndex.__Dispatch_Table.getNumberOfRejectedResponses()I
    //#input(int getNumberOfResponses()): net/sourceforge/pebble/index/ResponseIndex.__Dispatch_Table.getNumberOfResponses()I
    //#input(int getNumberOfResponses()): this
    //#input(int getNumberOfResponses()): this.responseIndex
    //#input(int getNumberOfResponses()): this.responseIndex.__Tag
    //#input(int getNumberOfResponses()): this.responseIndex.approvedResponses
    //#input(int getNumberOfResponses()): this.responseIndex.pendingResponses
    //#input(int getNumberOfResponses()): this.responseIndex.rejectedResponses
    //#output(int getNumberOfResponses()): return_value
    //#pre[2] (int getNumberOfResponses()): this.responseIndex != null
    //#pre[3] (int getNumberOfResponses()): this.responseIndex.__Tag == net/sourceforge/pebble/index/ResponseIndex
    //#pre[4] (int getNumberOfResponses()): this.responseIndex.approvedResponses != null
    //#pre[5] (int getNumberOfResponses()): this.responseIndex.pendingResponses != null
    //#pre[6] (int getNumberOfResponses()): this.responseIndex.rejectedResponses != null
    //#presumption(int getNumberOfResponses()): java.util.List:size(...)@202 + java.util.List:size(...)@193 + java.util.List:size(...)@211 in -2_147_483_648..4_294_967_295
    //#post(int getNumberOfResponses()): init'ed(return_value)
    //#unanalyzed(int getNumberOfResponses()): Effects-of-calling:java.util.List:size
    //#blog.java:1230: end of method: int net.sourceforge.pebble.domain.Blog.getNumberOfResponses()
  }

  /**
   * Gets the number of approved responses.
   *
   * @return the number of approved responses
   */
  public int getNumberOfApprovedResponses() {
    return responseIndex.getNumberOfApprovedResponses();
    //#blog.java:1239: method: int net.sourceforge.pebble.domain.Blog.getNumberOfApprovedResponses()
    //#input(int getNumberOfApprovedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[net/sourceforge/pebble/index/ResponseIndex]
    //#input(int getNumberOfApprovedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[others]
    //#input(int getNumberOfApprovedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Dispatch_Table.getNumberOfApprovedResponses()I
    //#input(int getNumberOfApprovedResponses()): this
    //#input(int getNumberOfApprovedResponses()): this.responseIndex
    //#input(int getNumberOfApprovedResponses()): this.responseIndex.__Tag
    //#input(int getNumberOfApprovedResponses()): this.responseIndex.approvedResponses
    //#output(int getNumberOfApprovedResponses()): return_value
    //#pre[2] (int getNumberOfApprovedResponses()): this.responseIndex != null
    //#pre[3] (int getNumberOfApprovedResponses()): this.responseIndex.__Tag == net/sourceforge/pebble/index/ResponseIndex
    //#pre[4] (int getNumberOfApprovedResponses()): this.responseIndex.approvedResponses != null
    //#post(int getNumberOfApprovedResponses()): init'ed(return_value)
    //#unanalyzed(int getNumberOfApprovedResponses()): Effects-of-calling:java.util.List:size
    //#blog.java:1239: end of method: int net.sourceforge.pebble.domain.Blog.getNumberOfApprovedResponses()
  }

  /**
   * Gets the number of pending responses.
   *
   * @return the number of pending responses
   */
  public int getNumberOfPendingResponses() {
    return responseIndex.getNumberOfPendingResponses();
    //#blog.java:1248: method: int net.sourceforge.pebble.domain.Blog.getNumberOfPendingResponses()
    //#input(int getNumberOfPendingResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[net/sourceforge/pebble/index/ResponseIndex]
    //#input(int getNumberOfPendingResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[others]
    //#input(int getNumberOfPendingResponses()): net/sourceforge/pebble/index/ResponseIndex.__Dispatch_Table.getNumberOfPendingResponses()I
    //#input(int getNumberOfPendingResponses()): this
    //#input(int getNumberOfPendingResponses()): this.responseIndex
    //#input(int getNumberOfPendingResponses()): this.responseIndex.__Tag
    //#input(int getNumberOfPendingResponses()): this.responseIndex.pendingResponses
    //#output(int getNumberOfPendingResponses()): return_value
    //#pre[2] (int getNumberOfPendingResponses()): this.responseIndex != null
    //#pre[3] (int getNumberOfPendingResponses()): this.responseIndex.__Tag == net/sourceforge/pebble/index/ResponseIndex
    //#pre[4] (int getNumberOfPendingResponses()): this.responseIndex.pendingResponses != null
    //#post(int getNumberOfPendingResponses()): init'ed(return_value)
    //#unanalyzed(int getNumberOfPendingResponses()): Effects-of-calling:java.util.List:size
    //#blog.java:1248: end of method: int net.sourceforge.pebble.domain.Blog.getNumberOfPendingResponses()
  }

  /**
   * Gets the number of rejected responses.
   *
   * @return the number of rejected responses
   */
  public int getNumberOfRejectedResponses() {
    return responseIndex.getNumberOfRejectedResponses();
    //#blog.java:1257: method: int net.sourceforge.pebble.domain.Blog.getNumberOfRejectedResponses()
    //#input(int getNumberOfRejectedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[net/sourceforge/pebble/index/ResponseIndex]
    //#input(int getNumberOfRejectedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[others]
    //#input(int getNumberOfRejectedResponses()): net/sourceforge/pebble/index/ResponseIndex.__Dispatch_Table.getNumberOfRejectedResponses()I
    //#input(int getNumberOfRejectedResponses()): this
    //#input(int getNumberOfRejectedResponses()): this.responseIndex
    //#input(int getNumberOfRejectedResponses()): this.responseIndex.__Tag
    //#input(int getNumberOfRejectedResponses()): this.responseIndex.rejectedResponses
    //#output(int getNumberOfRejectedResponses()): return_value
    //#pre[2] (int getNumberOfRejectedResponses()): this.responseIndex != null
    //#pre[3] (int getNumberOfRejectedResponses()): this.responseIndex.__Tag == net/sourceforge/pebble/index/ResponseIndex
    //#pre[4] (int getNumberOfRejectedResponses()): this.responseIndex.rejectedResponses != null
    //#post(int getNumberOfRejectedResponses()): init'ed(return_value)
    //#unanalyzed(int getNumberOfRejectedResponses()): Effects-of-calling:java.util.List:size
    //#blog.java:1257: end of method: int net.sourceforge.pebble.domain.Blog.getNumberOfRejectedResponses()
  }

  /**
   * Gets the date that this blog was last updated through the addition
   * of a blog entry.
   *
   * @return  a Date instance representing the time of the most recent entry
   */
  public Date getLastModified() {
    Date date = new Date(0);
    //#blog.java:1267: method: Date net.sourceforge.pebble.domain.Blog.getLastModified()
    //#input(Date getLastModified()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Date getLastModified()): __Descendant_Table[others]
    //#input(Date getLastModified()): __Dispatch_Table.getRecentPublishedBlogEntries(I)Ljava/util/List;
    //#input(Date getLastModified()): log
    //#input(Date getLastModified()): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(Date getLastModified()): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(Date getLastModified()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Date getLastModified()): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(Date getLastModified()): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(Date getLastModified()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[net/sourceforge/pebble/index/BlogEntryIndex]
    //#input(Date getLastModified()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[others]
    //#input(Date getLastModified()): net/sourceforge/pebble/index/BlogEntryIndex.__Dispatch_Table.getPublishedBlogEntries()Ljava/util/List;
    //#input(Date getLastModified()): this
    //#input(Date getLastModified()): this.__Tag
    //#input(Date getLastModified()): this.blogEntryIndex
    //#input(Date getLastModified()): this.blogEntryIndex.__Tag
    //#input(Date getLastModified()): this.blogEntryIndex.publishedIndexEntries
    //#output(Date getLastModified()): new Date(getLastModified#1) num objects
    //#output(Date getLastModified()): return_value
    //#new obj(Date getLastModified()): new Date(getLastModified#1)
    //#pre[3] (Date getLastModified()): this.blogEntryIndex != null
    //#pre[4] (Date getLastModified()): this.blogEntryIndex.__Tag == net/sourceforge/pebble/index/BlogEntryIndex
    //#pre[5] (Date getLastModified()): init'ed(this.blogEntryIndex.publishedIndexEntries)
    //#pre[2] (Date getLastModified()): (soft) this.__Tag == net/sourceforge/pebble/domain/Blog
    //#presumption(Date getLastModified()): java.util.List:get(...).__Tag@1270 == net/sourceforge/pebble/domain/BlogEntry
    //#presumption(Date getLastModified()): java.util.List:get(...)@1270 != null
    //#post(Date getLastModified()): init'ed(return_value)
    //#post(Date getLastModified()): new Date(getLastModified#1) num objects == 1
    //#unanalyzed(Date getLastModified()): Effects-of-calling:java.util.List:size
    //#unanalyzed(Date getLastModified()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Date getLastModified()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Date getLastModified()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Date getLastModified()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Date getLastModified()): Effects-of-calling:getConfiguredFactory
    //#unanalyzed(Date getLastModified()): Effects-of-calling:getBlogEntryDAO
    //#unanalyzed(Date getLastModified()): Effects-of-calling:getBlog
    //#unanalyzed(Date getLastModified()): Effects-of-calling:getId
    //#unanalyzed(Date getLastModified()): Effects-of-calling:getCompositeKeyForBlogEntry
    //#unanalyzed(Date getLastModified()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(Date getLastModified()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Date getLastModified()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Date getLastModified()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Date getLastModified()): Effects-of-calling:setPersistent
    //#unanalyzed(Date getLastModified()): Effects-of-calling:setEventsEnabled
    //#unanalyzed(Date getLastModified()): Effects-of-calling:net.sourceforge.pebble.domain.BlogServiceException
    //#unanalyzed(Date getLastModified()): Effects-of-calling:net.sf.ehcache.Cache:get
    //#unanalyzed(Date getLastModified()): Effects-of-calling:net.sf.ehcache.Element:getValue
    //#unanalyzed(Date getLastModified()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(Date getLastModified()): Effects-of-calling:loadBlogEntry
    //#unanalyzed(Date getLastModified()): Effects-of-calling:net.sf.ehcache.Element
    //#unanalyzed(Date getLastModified()): Effects-of-calling:net.sf.ehcache.Cache:put
    //#unanalyzed(Date getLastModified()): Effects-of-calling:clone
    //#unanalyzed(Date getLastModified()): Effects-of-calling:getBlogEntry
    //#unanalyzed(Date getLastModified()): Effects-of-calling:java.util.List:add
    //#unanalyzed(Date getLastModified()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#test_vector(Date getLastModified()): java.util.List:size(...)@1269: {-2_147_483_648..0, 2..4_294_967_295}, {1}
    List blogEntries = getRecentPublishedBlogEntries(1);
    if (blogEntries.size() == 1) {
      date = ((BlogEntry)blogEntries.get(0)).getDate();
    }

    return date;
    //#blog.java:1273: end of method: Date net.sourceforge.pebble.domain.Blog.getLastModified()
  }

  /**
   * Gets the date of the most recent response.
   *
   * @return  a Date instance representing the time of the most recent entry
   */
  public Date getDateOfLastResponse() {
    List<Response> responses = this.getRecentApprovedResponses();
    //#blog.java:1282: method: Date net.sourceforge.pebble.domain.Blog.getDateOfLastResponse()
    //#input(Date getDateOfLastResponse()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Date getDateOfLastResponse()): __Descendant_Table[others]
    //#input(Date getDateOfLastResponse()): __Dispatch_Table.getRecentApprovedResponses()Ljava/util/List;
    //#input(Date getDateOfLastResponse()): __Dispatch_Table.getRecentResponsesOnHomePage()I
    //#input(Date getDateOfLastResponse()): log
    //#input(Date getDateOfLastResponse()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).__Tag
    //#input(Date getDateOfLastResponse()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getComment(J)Lnet/sourceforge/pebble/domain/Comment;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getResponse(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Response;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTrackBack(J)Lnet/sourceforge/pebble/domain/TrackBack;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isPublished()Z
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[others]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getResponse(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Response;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getId()J
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/Response.__Descendant_Table[others]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/State.PUBLISHED
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getId()J
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[net/sourceforge/pebble/index/ResponseIndex]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[others]
    //#input(Date getDateOfLastResponse()): net/sourceforge/pebble/index/ResponseIndex.__Dispatch_Table.getApprovedResponses()Ljava/util/List;
    //#input(Date getDateOfLastResponse()): this
    //#input(Date getDateOfLastResponse()): this.__Tag
    //#input(Date getDateOfLastResponse()): this.properties
    //#input(Date getDateOfLastResponse()): this.responseIndex
    //#input(Date getDateOfLastResponse()): this.responseIndex.__Tag
    //#input(Date getDateOfLastResponse()): this.responseIndex.approvedResponses
    //#output(Date getDateOfLastResponse()): new Date(getDateOfLastResponse#1) num objects
    //#output(Date getDateOfLastResponse()): return_value
    //#new obj(Date getDateOfLastResponse()): new Date(getDateOfLastResponse#1)
    //#pre[4] (Date getDateOfLastResponse()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[6] (Date getDateOfLastResponse()): this.responseIndex != null
    //#pre[7] (Date getDateOfLastResponse()): this.responseIndex.__Tag == net/sourceforge/pebble/index/ResponseIndex
    //#pre[8] (Date getDateOfLastResponse()): init'ed(this.responseIndex.approvedResponses)
    //#pre[2] (Date getDateOfLastResponse()): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name != null
    //#pre[5] (Date getDateOfLastResponse()): (soft) this.properties != null
    //#presumption(Date getDateOfLastResponse()): java.util.List:get(...).__Tag@1284 in {net/sourceforge/pebble/domain/Comment, net/sourceforge/pebble/domain/Response, net/sourceforge/pebble/domain/TrackBack}
    //#presumption(Date getDateOfLastResponse()): java.util.List:get(...)@1284 != null
    //#post(Date getDateOfLastResponse()): init'ed(return_value)
    //#post(Date getDateOfLastResponse()): new Date(getDateOfLastResponse#1) num objects <= 1
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.util.List:size
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:getConfiguredFactory
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:getBlogEntryDAO
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:getBlog
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:getId
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:getCompositeKeyForBlogEntry
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:setPersistent
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:setEventsEnabled
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:net.sourceforge.pebble.domain.BlogServiceException
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:net.sf.ehcache.Cache:get
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:net.sf.ehcache.Element:getValue
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:loadBlogEntry
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:net.sf.ehcache.Element
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:net.sf.ehcache.Cache:put
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:clone
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:getBlogEntry
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.util.List:add
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.lang.String:lastIndexOf
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:getResponse
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:getComments
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:getTrackBack
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.lang.Long:parseLong
    //#unanalyzed(Date getDateOfLastResponse()): Effects-of-calling:java.lang.String:startsWith
    //#test_vector(Date getDateOfLastResponse()): java.util.List:size(...)@1283: {-2_147_483_648..0}, {1..4_294_967_295}
    if (responses != null && responses.size() > 0) {
    //#blog.java:1283: Warning: test always goes same way
    //#    test predetermined because responses != null
    //#    severity: LOW
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: Date getDateOfLastResponse()
    //#    from bb: Entry_BB_1
    //#    live edge: Entry_BB_1-->bb_2
    //#    tested vn: 0
    //#    tested vn values: {0}
      return responses.get(0).getDate();
    } else {
      return new Date(0);
    //#blog.java:1286: end of method: Date net.sourceforge.pebble.domain.Blog.getDateOfLastResponse()
    }
  }

  public BlogEntry getPreviousBlogEntry(BlogEntry blogEntry) {
    Day firstDay = getBlogForFirstMonth().getBlogForFirstDay();
    //#blog.java:1291: method: BlogEntry net.sourceforge.pebble.domain.Blog.getPreviousBlogEntry(BlogEntry)
    //#blog.java:1291: ?null dereference
    //#    getBlogForFirstMonth(...) != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getPreviousBlogEntry(BlogEntry)
    //#    basic block: Entry_BB_1
    //#    assertion: getBlogForFirstMonth(...) != null
    //#    VN: getBlogForFirstMonth(...)
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#blog.java:1291: ?precondition failure
    //#    net/sourceforge/pebble/domain/Month.getBlogForFirstDay: this.dailyBlogs.length >= 1
    //#    severity: LOW
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getPreviousBlogEntry(BlogEntry)
    //#    basic block: Entry_BB_1
    //#    assertion: getBlogForFirstMonth(...).dailyBlogs.length >= 1
    //#    callee: Day net/sourceforge/pebble/domain/Month.getBlogForFirstDay()
    //#    callee assertion: this.dailyBlogs.length >= 1
    //#    callee file: month.java
    //#    callee precondition index: [4]
    //#    callee srcpos: 209
    //#    VN: getBlogForFirstMonth(...).dailyBlogs.length
    //#    Expected: {1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad < Exp
    //#blog.java:1291: ?precondition failure
    //#    net/sourceforge/pebble/domain/Month.getBlogForFirstDay: this.lastDayInMonth >= 1
    //#    severity: LOW
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getPreviousBlogEntry(BlogEntry)
    //#    basic block: Entry_BB_1
    //#    assertion: getBlogForFirstMonth(...).lastDayInMonth >= 1
    //#    callee: Day net/sourceforge/pebble/domain/Month.getBlogForFirstDay()
    //#    callee assertion: this.lastDayInMonth >= 1
    //#    callee file: month.java
    //#    callee precondition index: [6]
    //#    callee srcpos: 209
    //#    VN: getBlogForFirstMonth(...).lastDayInMonth
    //#    Expected: {1..4_294_967_295}
    //#    Bad: {-2_147_483_648..0}
    //#    Attribs:  Int  Bad overlaps +/-1000  Bad < Exp
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Descendant_Table[others]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Dispatch_Table.getBlogEntryIndex()Lnet/sourceforge/pebble/index/BlogEntryIndex;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Dispatch_Table.getBlogForDay(III)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Dispatch_Table.getBlogForDay(Ljava/util/Date;)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Dispatch_Table.getBlogForFirstMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Dispatch_Table.getBlogForPreviousYear(Lnet/sourceforge/pebble/domain/Year;)Lnet/sourceforge/pebble/domain/Year;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Dispatch_Table.getBlogForThisMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): __Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): blogEntry
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): blogEntry.__Tag
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): blogEntry.date
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): blogEntry.id
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/AbstractBlog]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/MultiBlog]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[others]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getLastBlogEntry()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getPreviousBlogEntry(Ljava/lang/String;)Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getPreviousDay()Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForDay(I)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForFirstDay()Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForLastDay()Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForPreviousDay(Lnet/sourceforge/pebble/domain/Day;)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForPreviousMonth(Lnet/sourceforge/pebble/domain/Month;)Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[net/sourceforge/pebble/index/BlogEntryIndex]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[others]
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): net/sourceforge/pebble/index/BlogEntryIndex.__Dispatch_Table.getBlogEntries()Ljava/util/List;
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): this
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): this.__Tag
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): this.blogEntryIndex
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): this.blogEntryIndex.__Tag
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): this.blogEntryIndex.indexEntries
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): this.properties
    //#input(BlogEntry getPreviousBlogEntry(BlogEntry)): this.years
    //#output(BlogEntry getPreviousBlogEntry(BlogEntry)): return_value
    //#pre[1] (BlogEntry getPreviousBlogEntry(BlogEntry)): blogEntry != null
    //#pre[2] (BlogEntry getPreviousBlogEntry(BlogEntry)): blogEntry.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (BlogEntry getPreviousBlogEntry(BlogEntry)): init'ed(blogEntry.date)
    //#pre[4] (BlogEntry getPreviousBlogEntry(BlogEntry)): init'ed(blogEntry.id)
    //#pre[7] (BlogEntry getPreviousBlogEntry(BlogEntry)): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[8] (BlogEntry getPreviousBlogEntry(BlogEntry)): init'ed(this.blogEntryIndex)
    //#pre[9] (BlogEntry getPreviousBlogEntry(BlogEntry)): (soft) this.blogEntryIndex.__Tag == net/sourceforge/pebble/index/BlogEntryIndex
    //#pre[10] (BlogEntry getPreviousBlogEntry(BlogEntry)): (soft) init'ed(this.blogEntryIndex.indexEntries)
    //#pre[11] (BlogEntry getPreviousBlogEntry(BlogEntry)): (soft) this.properties != null
    //#pre[12] (BlogEntry getPreviousBlogEntry(BlogEntry)): (soft) this.years != null
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.__Tag@1292 == net/sourceforge/pebble/domain/Day
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.__Tag@1294 == net/sourceforge/pebble/domain/Day
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.__Tag@1296 == net/sourceforge/pebble/domain/Day
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.day <= day.month.dailyBlogs.length@1294 + 1
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.month.__Tag@1294 == net/sourceforge/pebble/domain/Month
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.month.dailyBlogs.length@1294 >= 1
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.month.dailyBlogs@1294 != null
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.month.month@1294 <= 13
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.month.month@1294 <= day.month.year.months.length@1294 + 1
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.month.year.__Tag@1294 == net/sourceforge/pebble/domain/Year
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.month.year.blog.__Tag@1294 == net/sourceforge/pebble/domain/Blog
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.month.year.blog.years@1294 != null
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.month.year.blog@1294 != null
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.month.year.months.length@1294 in range
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.month.year.months@1294 != null
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.month.year.year@1294 >= -2_147_483_647
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.month.year@1294 != null
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.month@1294 != null
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.publishedBlogEntries@1292 != null
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): day.publishedBlogEntries@1296 != null
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): getBlogForFirstMonth(...).__Tag@1291 == net/sourceforge/pebble/domain/Month
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): getBlogForFirstMonth(...).dailyBlogs.length@1291 >= 1
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): getBlogForFirstMonth(...).dailyBlogs@1291 != null
    //#presumption(BlogEntry getPreviousBlogEntry(BlogEntry)): getBlogForFirstMonth(...).lastDayInMonth@1291 >= 1
    //#post(BlogEntry getPreviousBlogEntry(BlogEntry)): init'ed(return_value)
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.List:size
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.List:get
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.Date
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.List:add
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:getTimeZone
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:getLocale
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.Locale
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.TimeZone:getTimeZone
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.Calendar:get
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:getBlogForMonth
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.List:isEmpty
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.lang.Long:parseLong
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:getBlogForDay
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.List:indexOf
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:getBlogForPreviousDay
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:getBlog
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:setDate
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:getMonth
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:getBlogForPreviousYear
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:getYear
    //#unanalyzed(BlogEntry getPreviousBlogEntry(BlogEntry)): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    Day day = getBlogForDay(blogEntry.getDate());

    String blogEntryId = day.getPreviousBlogEntry(blogEntry.getId());
    //#blog.java:1294: ?null dereference
    //#    day != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getPreviousBlogEntry(BlogEntry)
    //#    basic block: Entry_BB_1
    //#    assertion: day != null
    //#    VN: getBlogForDay(...)
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#blog.java:1294: ?null dereference
    //#    net/sourceforge/pebble/domain/Day.__Descendant_Table[day.__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getPreviousBlogEntry(BlogEntry)
    //#    basic block: Entry_BB_1
    //#    assertion: net/sourceforge/pebble/domain/Day.__Descendant_Table[day.__Tag] != null
    //#    VN: net/sourceforge/pebble/domain/Day.__Descendant_Table[day.__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#blog.java:1294: ?precondition failure
    //#    net/sourceforge/pebble/domain/Day.getPreviousBlogEntry: this.publishedBlogEntries != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getPreviousBlogEntry(BlogEntry)
    //#    basic block: Entry_BB_1
    //#    assertion: day.publishedBlogEntries != null
    //#    callee: String net/sourceforge/pebble/domain/Day.getPreviousBlogEntry(String)
    //#    callee assertion: this.publishedBlogEntries != null
    //#    callee file: day.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 360
    //#    VN: day.publishedBlogEntries
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    while (day != firstDay && blogEntryId == null) {
      day = day.getPreviousDay();
      blogEntryId = day.getLastBlogEntry();
    //#blog.java:1297: ?null dereference
    //#    day != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getPreviousBlogEntry(BlogEntry)
    //#    basic block: bb_2
    //#    assertion: day != null
    //#    VN: getPreviousDay(...)
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#blog.java:1297: ?null dereference
    //#    net/sourceforge/pebble/domain/Day.__Descendant_Table[day.__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getPreviousBlogEntry(BlogEntry)
    //#    basic block: bb_2
    //#    assertion: net/sourceforge/pebble/domain/Day.__Descendant_Table[day.__Tag] != null
    //#    VN: net/sourceforge/pebble/domain/Day.__Descendant_Table[day.__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#blog.java:1297: ?precondition failure
    //#    net/sourceforge/pebble/domain/Day.getLastBlogEntry: this.publishedBlogEntries != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getPreviousBlogEntry(BlogEntry)
    //#    basic block: bb_2
    //#    assertion: day.publishedBlogEntries != null
    //#    callee: String net/sourceforge/pebble/domain/Day.getLastBlogEntry()
    //#    callee assertion: this.publishedBlogEntries != null
    //#    callee file: day.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 387
    //#    VN: day.publishedBlogEntries
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    }

    if (blogEntryId != null) {
      BlogService service = new BlogService();
      try {
        BlogEntry previousBlogEntry = service.getBlogEntry(this, blogEntryId);
    //#blog.java:1303: Warning: call too complex - analysis skipped
    //#    -- call on BlogEntry getBlogEntry(Blog, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getPreviousBlogEntry(BlogEntry)
    //#    unanalyzed callee: BlogEntry getBlogEntry(Blog, String)
        return previousBlogEntry;
      } catch (BlogServiceException e) {
        // do nothing
      }
    }

    return null;
    //#blog.java:1310: end of method: BlogEntry net.sourceforge.pebble.domain.Blog.getPreviousBlogEntry(BlogEntry)
  }

  public BlogEntry getNextBlogEntry(BlogEntry blogEntry) {
    Day lastDay = getBlogForToday();
    //#blog.java:1314: method: BlogEntry net.sourceforge.pebble.domain.Blog.getNextBlogEntry(BlogEntry)
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): __Descendant_Table[others]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): __Dispatch_Table.getBlogForDay(III)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): __Dispatch_Table.getBlogForDay(Ljava/util/Date;)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): __Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): __Dispatch_Table.getBlogForNextYear(Lnet/sourceforge/pebble/domain/Year;)Lnet/sourceforge/pebble/domain/Year;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): __Dispatch_Table.getBlogForToday()Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): __Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): __Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): __Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): __Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): __Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): __Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): blogEntry
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): blogEntry.__Tag
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): blogEntry.date
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): blogEntry.id
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/AbstractBlog]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/MultiBlog]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[others]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/BlogService.__Descendant_Table[net/sourceforge/pebble/domain/BlogService]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/BlogService.__Dispatch_Table.getBlogEntry(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getFirstBlogEntry()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getNextBlogEntry(Ljava/lang/String;)Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getNextDay()Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForDay(I)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForFirstDay()Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForNextDay(Lnet/sourceforge/pebble/domain/Day;)Lnet/sourceforge/pebble/domain/Day;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForNextMonth(Lnet/sourceforge/pebble/domain/Month;)Lnet/sourceforge/pebble/domain/Month;
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): this
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): this.__Tag
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): this.properties
    //#input(BlogEntry getNextBlogEntry(BlogEntry)): this.years
    //#output(BlogEntry getNextBlogEntry(BlogEntry)): return_value
    //#pre[1] (BlogEntry getNextBlogEntry(BlogEntry)): blogEntry != null
    //#pre[2] (BlogEntry getNextBlogEntry(BlogEntry)): blogEntry.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (BlogEntry getNextBlogEntry(BlogEntry)): init'ed(blogEntry.date)
    //#pre[4] (BlogEntry getNextBlogEntry(BlogEntry)): init'ed(blogEntry.id)
    //#pre[7] (BlogEntry getNextBlogEntry(BlogEntry)): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[8] (BlogEntry getNextBlogEntry(BlogEntry)): this.properties != null
    //#pre[9] (BlogEntry getNextBlogEntry(BlogEntry)): this.years != null
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.__Tag@1315 == net/sourceforge/pebble/domain/Day
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.__Tag@1317 == net/sourceforge/pebble/domain/Day
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.__Tag@1319 == net/sourceforge/pebble/domain/Day
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.day < day.month.dailyBlogs.length@1317
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.day - day.month.lastDayInMonth@1317 in -4_294_967_295..6_442_450_943
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.month.__Tag@1317 == net/sourceforge/pebble/domain/Month
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.month.dailyBlogs.length@1317 >= 1
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.month.dailyBlogs@1317 != null
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.month.month@1317 >= 0
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.month.month@1317 - day.month.year.months.length@1317 in {-Inf..-1, 12..4_294_967_295}
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.month.year.__Tag@1317 == net/sourceforge/pebble/domain/Year
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.month.year.blog.__Tag@1317 == net/sourceforge/pebble/domain/Blog
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.month.year.blog.years@1317 != null
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.month.year.blog@1317 != null
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.month.year.months@1317 != null
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.month.year.year@1317 <= 4_294_967_294
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.month.year@1317 != null
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.month@1317 != null
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.publishedBlogEntries@1315 != null
    //#presumption(BlogEntry getNextBlogEntry(BlogEntry)): day.publishedBlogEntries@1319 != null
    //#post(BlogEntry getNextBlogEntry(BlogEntry)): init'ed(return_value)
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.List:add
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:getTimeZone
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:getLocale
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.Locale
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.TimeZone:getTimeZone
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.Calendar:get
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:getBlogForMonth
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:getBlogForDay
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:getBlogForFirstDay
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.List:get
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.List:size
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.List:isEmpty
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:getBlog
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:setDate
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.List:lastIndexOf
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:getBlogForNextDay
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:getMonth
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:getYear
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(BlogEntry getNextBlogEntry(BlogEntry)): Effects-of-calling:getBlogForNextYear
    Day day = getBlogForDay(blogEntry.getDate());

    String blogEntryId = day.getNextBlogEntry(blogEntry.getId());
    //#blog.java:1317: ?null dereference
    //#    day != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getNextBlogEntry(BlogEntry)
    //#    basic block: Entry_BB_1
    //#    assertion: day != null
    //#    VN: getBlogForDay(...)
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#blog.java:1317: ?null dereference
    //#    net/sourceforge/pebble/domain/Day.__Descendant_Table[day.__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getNextBlogEntry(BlogEntry)
    //#    basic block: Entry_BB_1
    //#    assertion: net/sourceforge/pebble/domain/Day.__Descendant_Table[day.__Tag] != null
    //#    VN: net/sourceforge/pebble/domain/Day.__Descendant_Table[day.__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#blog.java:1317: ?precondition failure
    //#    net/sourceforge/pebble/domain/Day.getNextBlogEntry: this.publishedBlogEntries != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getNextBlogEntry(BlogEntry)
    //#    basic block: Entry_BB_1
    //#    assertion: day.publishedBlogEntries != null
    //#    callee: String net/sourceforge/pebble/domain/Day.getNextBlogEntry(String)
    //#    callee assertion: this.publishedBlogEntries != null
    //#    callee file: day.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 401
    //#    VN: day.publishedBlogEntries
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    while (day != lastDay && blogEntryId == null) {
      day = day.getNextDay();
      blogEntryId = day.getFirstBlogEntry();
    //#blog.java:1320: ?null dereference
    //#    day != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getNextBlogEntry(BlogEntry)
    //#    basic block: bb_2
    //#    assertion: day != null
    //#    VN: getNextDay(...)
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#blog.java:1320: ?null dereference
    //#    net/sourceforge/pebble/domain/Day.__Descendant_Table[day.__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getNextBlogEntry(BlogEntry)
    //#    basic block: bb_2
    //#    assertion: net/sourceforge/pebble/domain/Day.__Descendant_Table[day.__Tag] != null
    //#    VN: net/sourceforge/pebble/domain/Day.__Descendant_Table[day.__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#blog.java:1320: ?precondition failure
    //#    net/sourceforge/pebble/domain/Day.getFirstBlogEntry: this.publishedBlogEntries != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getNextBlogEntry(BlogEntry)
    //#    basic block: bb_2
    //#    assertion: day.publishedBlogEntries != null
    //#    callee: String net/sourceforge/pebble/domain/Day.getFirstBlogEntry()
    //#    callee assertion: this.publishedBlogEntries != null
    //#    callee file: day.java
    //#    callee precondition index: [2]
    //#    callee srcpos: 374
    //#    VN: day.publishedBlogEntries
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    }

    if (blogEntryId != null) {
      BlogService service = new BlogService();
      try {
        BlogEntry nextBlogEntry = service.getBlogEntry(this, blogEntryId);
    //#blog.java:1326: Warning: call too complex - analysis skipped
    //#    -- call on BlogEntry getBlogEntry(Blog, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: BlogEntry getNextBlogEntry(BlogEntry)
    //#    unanalyzed callee: BlogEntry getBlogEntry(Blog, String)
        return nextBlogEntry;
      } catch (BlogServiceException e) {
        // do nothing
      }
    }

    return null;
    //#blog.java:1333: end of method: BlogEntry net.sourceforge.pebble.domain.Blog.getNextBlogEntry(BlogEntry)
  }

  /**
   * Gets the categories associated with this blog.
   *
   * @return  a List of Category instances
   */
  public List<Category> getCategories() {
    CategoryBuilder builder = new CategoryBuilder(this, rootCategory);
    //#blog.java:1342: method: List net.sourceforge.pebble.domain.Blog.getCategories()
    //#input(List getCategories()): net/sourceforge/pebble/domain/Category.__Descendant_Table[net/sourceforge/pebble/domain/Category]
    //#input(List getCategories()): net/sourceforge/pebble/domain/Category.__Descendant_Table[others]
    //#input(List getCategories()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.addSubCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(List getCategories()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(List getCategories()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getSubCategories()Ljava/util/List;
    //#input(List getCategories()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.isRootCategory()Z
    //#input(List getCategories()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(List getCategories()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setId(Ljava/lang/String;)V
    //#input(List getCategories()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setParent(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(List getCategories()): net/sourceforge/pebble/domain/CategoryBuilder.__Descendant_Table[net/sourceforge/pebble/domain/CategoryBuilder]
    //#input(List getCategories()): net/sourceforge/pebble/domain/CategoryBuilder.__Descendant_Table[others]
    //#input(List getCategories()): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.addCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(List getCategories()): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.getCategories()Ljava/util/List;
    //#input(List getCategories()): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.getCategories(Lnet/sourceforge/pebble/domain/Category;)Ljava/util/List;
    //#input(List getCategories()): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category;
    //#input(List getCategories()): this
    //#input(List getCategories()): this.rootCategory
    //#input(List getCategories()): this.rootCategory.__Tag
    //#output(List getCategories()): new ArrayList(Category#1) num objects
    //#output(List getCategories()): new ArrayList(Category#2) num objects
    //#output(List getCategories()): new ArrayList(Category#3) num objects
    //#output(List getCategories()): new ArrayList(getCategories#1*) num objects
    //#output(List getCategories()): new Category(getCategory#2) num objects
    //#output(List getCategories()): new Category(getCategory#2).__Tag
    //#output(List getCategories()): new Category(getCategory#2).blog
    //#output(List getCategories()): new Category(getCategory#2).blogEntries
    //#output(List getCategories()): new Category(getCategory#2).id
    //#output(List getCategories()): new Category(getCategory#2).name
    //#output(List getCategories()): new Category(getCategory#2).parent
    //#output(List getCategories()): new Category(getCategory#2).subCategories
    //#output(List getCategories()): new Category(getCategory#2).tags
    //#output(List getCategories()): new Category(getCategory#2).tagsAsList
    //#output(List getCategories()): new Category(getCategory#3) num objects
    //#output(List getCategories()): new Category(getCategory#3).__Tag
    //#output(List getCategories()): new Category(getCategory#3).blog
    //#output(List getCategories()): new Category(getCategory#3).blogEntries
    //#output(List getCategories()): new Category(getCategory#3).id
    //#output(List getCategories()): new Category(getCategory#3).name
    //#output(List getCategories()): new Category(getCategory#3).parent
    //#output(List getCategories()): new Category(getCategory#3).subCategories
    //#output(List getCategories()): new Category(getCategory#3).tags
    //#output(List getCategories()): new Category(getCategory#3).tagsAsList
    //#output(List getCategories()): return_value
    //#new obj(List getCategories()): new ArrayList(Category#1)
    //#new obj(List getCategories()): new ArrayList(Category#2)
    //#new obj(List getCategories()): new ArrayList(Category#3)
    //#new obj(List getCategories()): new ArrayList(getCategories#1*)
    //#new obj(List getCategories()): new Category(getCategory#2)
    //#new obj(List getCategories()): new Category(getCategory#3)
    //#pre[2] (List getCategories()): init'ed(this.rootCategory)
    //#post(List getCategories()): return_value == &new ArrayList(getCategories#1*)
    //#post(List getCategories()): init'ed(new ArrayList(Category#1) num objects)
    //#post(List getCategories()): init'ed(new ArrayList(Category#2) num objects)
    //#post(List getCategories()): init'ed(new ArrayList(Category#3) num objects)
    //#post(List getCategories()): new ArrayList(getCategories#1*) num objects == 1
    //#post(List getCategories()): init'ed(new Category(getCategory#2) num objects)
    //#post(List getCategories()): init'ed(new Category(getCategory#2).__Tag)
    //#post(List getCategories()): possibly_updated(new Category(getCategory#2).blog)
    //#post(List getCategories()): init'ed(new Category(getCategory#2).blogEntries)
    //#post(List getCategories()): possibly_updated(new Category(getCategory#2).id)
    //#post(List getCategories()): init'ed(new Category(getCategory#2).name)
    //#post(List getCategories()): possibly_updated(new Category(getCategory#2).parent)
    //#post(List getCategories()): init'ed(new Category(getCategory#2).subCategories)
    //#post(List getCategories()): init'ed(new Category(getCategory#2).tags)
    //#post(List getCategories()): init'ed(new Category(getCategory#2).tagsAsList)
    //#post(List getCategories()): init'ed(new Category(getCategory#3) num objects)
    //#post(List getCategories()): init'ed(new Category(getCategory#3).__Tag)
    //#post(List getCategories()): possibly_updated(new Category(getCategory#3).blog)
    //#post(List getCategories()): init'ed(new Category(getCategory#3).blogEntries)
    //#post(List getCategories()): possibly_updated(new Category(getCategory#3).id)
    //#post(List getCategories()): init'ed(new Category(getCategory#3).name)
    //#post(List getCategories()): possibly_updated(new Category(getCategory#3).parent)
    //#post(List getCategories()): init'ed(new Category(getCategory#3).subCategories)
    //#post(List getCategories()): init'ed(new Category(getCategory#3).tags)
    //#post(List getCategories()): init'ed(new Category(getCategory#3).tagsAsList)
    //#unanalyzed(List getCategories()): Effects-of-calling:getSubCategories
    //#unanalyzed(List getCategories()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(List getCategories()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(List getCategories()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(List getCategories()): Effects-of-calling:getCategory
    //#unanalyzed(List getCategories()): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(List getCategories()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(List getCategories()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(List getCategories()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(List getCategories()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(List getCategories()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getLocale
    //#unanalyzed(List getCategories()): Effects-of-calling:net.sourceforge.pebble.util.I18n:getMessage
    //#unanalyzed(List getCategories()): Effects-of-calling:net.sourceforge.pebble.domain.Category
    //#unanalyzed(List getCategories()): Effects-of-calling:addCategory
    //#unanalyzed(List getCategories()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(List getCategories()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(List getCategories()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(List getCategories()): Effects-of-calling:getId
    //#unanalyzed(List getCategories()): Effects-of-calling:java.lang.String:lastIndexOf
    //#unanalyzed(List getCategories()): Effects-of-calling:setBlog
    //#unanalyzed(List getCategories()): Effects-of-calling:isRootCategory
    //#unanalyzed(List getCategories()): Effects-of-calling:addSubCategory
    //#unanalyzed(List getCategories()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getCategories()): Effects-of-calling:java.util.List:add
    //#unanalyzed(List getCategories()): Effects-of-calling:getCategories
    //#unanalyzed(List getCategories()): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(List getCategories()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(List getCategories()): Effects-of-calling:java.util.Collections:unmodifiableList
    //#unanalyzed(List getCategories()): Effects-of-calling:java.util.List:contains
    return builder.getCategories();
    //#blog.java:1343: end of method: List net.sourceforge.pebble.domain.Blog.getCategories()
  }

  /**
   * Gets a specific category.
   *
   * @return  a Category instance
   */
  public Category getCategory(String id) {
    CategoryBuilder builder = new CategoryBuilder(this, rootCategory);
    //#blog.java:1352: method: Category net.sourceforge.pebble.domain.Blog.getCategory(String)
    //#input(Category getCategory(String)): id
    //#input(Category getCategory(String)): net/sourceforge/pebble/domain/Category.__Descendant_Table[net/sourceforge/pebble/domain/Category]
    //#input(Category getCategory(String)): net/sourceforge/pebble/domain/Category.__Descendant_Table[others]
    //#input(Category getCategory(String)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.addSubCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(Category getCategory(String)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(Category getCategory(String)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getSubCategories()Ljava/util/List;
    //#input(Category getCategory(String)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.isRootCategory()Z
    //#input(Category getCategory(String)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(Category getCategory(String)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setId(Ljava/lang/String;)V
    //#input(Category getCategory(String)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setParent(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(Category getCategory(String)): net/sourceforge/pebble/domain/CategoryBuilder.__Descendant_Table[net/sourceforge/pebble/domain/CategoryBuilder]
    //#input(Category getCategory(String)): net/sourceforge/pebble/domain/CategoryBuilder.__Descendant_Table[others]
    //#input(Category getCategory(String)): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.addCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(Category getCategory(String)): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.getCategory(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Category;
    //#input(Category getCategory(String)): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category;
    //#input(Category getCategory(String)): this
    //#input(Category getCategory(String)): this.rootCategory
    //#input(Category getCategory(String)): this.rootCategory.__Tag
    //#output(Category getCategory(String)): new ArrayList(Category#1) num objects
    //#output(Category getCategory(String)): new ArrayList(Category#2) num objects
    //#output(Category getCategory(String)): new ArrayList(Category#3) num objects
    //#output(Category getCategory(String)): new Category(getCategory#2*) num objects
    //#output(Category getCategory(String)): new Category(getCategory#2*).__Tag
    //#output(Category getCategory(String)): new Category(getCategory#2*).blog
    //#output(Category getCategory(String)): new Category(getCategory#2*).blogEntries
    //#output(Category getCategory(String)): new Category(getCategory#2*).id
    //#output(Category getCategory(String)): new Category(getCategory#2*).name
    //#output(Category getCategory(String)): new Category(getCategory#2*).parent
    //#output(Category getCategory(String)): new Category(getCategory#2*).subCategories
    //#output(Category getCategory(String)): new Category(getCategory#2*).tags
    //#output(Category getCategory(String)): new Category(getCategory#2*).tagsAsList
    //#output(Category getCategory(String)): new Category(getCategory#3*) num objects
    //#output(Category getCategory(String)): new Category(getCategory#3*).__Tag
    //#output(Category getCategory(String)): new Category(getCategory#3*).blog
    //#output(Category getCategory(String)): new Category(getCategory#3*).blogEntries
    //#output(Category getCategory(String)): new Category(getCategory#3*).id
    //#output(Category getCategory(String)): new Category(getCategory#3*).name
    //#output(Category getCategory(String)): new Category(getCategory#3*).parent
    //#output(Category getCategory(String)): new Category(getCategory#3*).subCategories
    //#output(Category getCategory(String)): new Category(getCategory#3*).tags
    //#output(Category getCategory(String)): new Category(getCategory#3*).tagsAsList
    //#output(Category getCategory(String)): return_value
    //#new obj(Category getCategory(String)): new ArrayList(Category#1)
    //#new obj(Category getCategory(String)): new ArrayList(Category#2)
    //#new obj(Category getCategory(String)): new ArrayList(Category#3)
    //#new obj(Category getCategory(String)): new Category(getCategory#2*)
    //#new obj(Category getCategory(String)): new Category(getCategory#3*)
    //#pre[3] (Category getCategory(String)): init'ed(this.rootCategory)
    //#post(Category getCategory(String)): init'ed(return_value)
    //#post(Category getCategory(String)): init'ed(new ArrayList(Category#1) num objects)
    //#post(Category getCategory(String)): init'ed(new ArrayList(Category#2) num objects)
    //#post(Category getCategory(String)): init'ed(new ArrayList(Category#3) num objects)
    //#post(Category getCategory(String)): init'ed(new Category(getCategory#2*) num objects)
    //#post(Category getCategory(String)): init'ed(new Category(getCategory#2*).__Tag)
    //#post(Category getCategory(String)): possibly_updated(new Category(getCategory#2*).blog)
    //#post(Category getCategory(String)): init'ed(new Category(getCategory#2*).blogEntries)
    //#post(Category getCategory(String)): possibly_updated(new Category(getCategory#2*).id)
    //#post(Category getCategory(String)): init'ed(new Category(getCategory#2*).name)
    //#post(Category getCategory(String)): possibly_updated(new Category(getCategory#2*).parent)
    //#post(Category getCategory(String)): possibly_updated(new Category(getCategory#2*).subCategories)
    //#post(Category getCategory(String)): init'ed(new Category(getCategory#2*).tags)
    //#post(Category getCategory(String)): init'ed(new Category(getCategory#2*).tagsAsList)
    //#post(Category getCategory(String)): init'ed(new Category(getCategory#3*) num objects)
    //#post(Category getCategory(String)): init'ed(new Category(getCategory#3*).__Tag)
    //#post(Category getCategory(String)): possibly_updated(new Category(getCategory#3*).blog)
    //#post(Category getCategory(String)): init'ed(new Category(getCategory#3*).blogEntries)
    //#post(Category getCategory(String)): possibly_updated(new Category(getCategory#3*).id)
    //#post(Category getCategory(String)): init'ed(new Category(getCategory#3*).name)
    //#post(Category getCategory(String)): possibly_updated(new Category(getCategory#3*).parent)
    //#post(Category getCategory(String)): possibly_updated(new Category(getCategory#3*).subCategories)
    //#post(Category getCategory(String)): init'ed(new Category(getCategory#3*).tags)
    //#post(Category getCategory(String)): init'ed(new Category(getCategory#3*).tagsAsList)
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:getSubCategories
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:getCategory
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getLocale
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:net.sourceforge.pebble.util.I18n:getMessage
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:net.sourceforge.pebble.domain.Category
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:addCategory
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:getId
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.lang.String:lastIndexOf
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:setBlog
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:isRootCategory
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:addSubCategory
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.util.Collections:unmodifiableList
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.util.List:contains
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Category getCategory(String)): Effects-of-calling:java.util.List:add
    return builder.getCategory(id);
    //#blog.java:1353: end of method: Category net.sourceforge.pebble.domain.Blog.getCategory(String)
  }

  /**
   * Gets the root category for this blog.
   *
   * @return  a Category instance
   */
  public Category getRootCategory() {
    return this.rootCategory;
    //#blog.java:1362: method: Category net.sourceforge.pebble.domain.Blog.getRootCategory()
    //#input(Category getRootCategory()): this
    //#input(Category getRootCategory()): this.rootCategory
    //#output(Category getRootCategory()): return_value
    //#pre[2] (Category getRootCategory()): init'ed(this.rootCategory)
    //#post(Category getRootCategory()): return_value == this.rootCategory
    //#post(Category getRootCategory()): init'ed(return_value)
    //#blog.java:1362: end of method: Category net.sourceforge.pebble.domain.Blog.getRootCategory()
  }

  /**
   * Sets the root category for this blog.
   *
   * @param category    a Category instance
   */
  public void setRootCategory(Category category) {
    this.rootCategory = category;
    //#blog.java:1371: method: void net.sourceforge.pebble.domain.Blog.setRootCategory(Category)
    //#input(void setRootCategory(Category)): category
    //#input(void setRootCategory(Category)): this
    //#output(void setRootCategory(Category)): this.rootCategory
    //#post(void setRootCategory(Category)): this.rootCategory == category
    //#post(void setRootCategory(Category)): init'ed(this.rootCategory)
  }
    //#blog.java:1372: end of method: void net.sourceforge.pebble.domain.Blog.setRootCategory(Category)

  /**
   * Adds a category.
   *
   * @param category    the Category to be added
   */
  public synchronized void addCategory(Category category) {
    if (getCategory(category.getId()) == null) {
    //#blog.java:1380: method: void net.sourceforge.pebble.domain.Blog.addCategory(Category)
    //#input(void addCategory(Category)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void addCategory(Category)): __Descendant_Table[others]
    //#input(void addCategory(Category)): __Dispatch_Table.getCategory(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Category;
    //#input(void addCategory(Category)): category
    //#input(void addCategory(Category)): category.__Tag
    //#input(void addCategory(Category)): category.id
    //#input(void addCategory(Category)): net/sourceforge/pebble/domain/Category.__Descendant_Table[net/sourceforge/pebble/domain/Category]
    //#input(void addCategory(Category)): net/sourceforge/pebble/domain/Category.__Descendant_Table[others]
    //#input(void addCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.addSubCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(void addCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void addCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getSubCategories()Ljava/util/List;
    //#input(void addCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.isRootCategory()Z
    //#input(void addCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void addCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setId(Ljava/lang/String;)V
    //#input(void addCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setParent(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(void addCategory(Category)): net/sourceforge/pebble/domain/CategoryBuilder.__Descendant_Table[net/sourceforge/pebble/domain/CategoryBuilder]
    //#input(void addCategory(Category)): net/sourceforge/pebble/domain/CategoryBuilder.__Descendant_Table[others]
    //#input(void addCategory(Category)): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.addCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(void addCategory(Category)): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.getCategory(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Category;
    //#input(void addCategory(Category)): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category;
    //#input(void addCategory(Category)): this
    //#input(void addCategory(Category)): this.__Tag
    //#input(void addCategory(Category)): this.rootCategory
    //#input(void addCategory(Category)): this.rootCategory.__Tag
    //#output(void addCategory(Category)): category.blog
    //#output(void addCategory(Category)): category.parent
    //#output(void addCategory(Category)): new ArrayList(Category#1) num objects
    //#output(void addCategory(Category)): new ArrayList(Category#2) num objects
    //#output(void addCategory(Category)): new ArrayList(Category#3) num objects
    //#output(void addCategory(Category)): new Category(getCategory#2*) num objects
    //#output(void addCategory(Category)): new Category(getCategory#2*).__Tag
    //#output(void addCategory(Category)): new Category(getCategory#2*).blog
    //#output(void addCategory(Category)): new Category(getCategory#2*).blogEntries
    //#output(void addCategory(Category)): new Category(getCategory#2*).id
    //#output(void addCategory(Category)): new Category(getCategory#2*).name
    //#output(void addCategory(Category)): new Category(getCategory#2*).parent
    //#output(void addCategory(Category)): new Category(getCategory#2*).subCategories
    //#output(void addCategory(Category)): new Category(getCategory#2*).tags
    //#output(void addCategory(Category)): new Category(getCategory#2*).tagsAsList
    //#output(void addCategory(Category)): new Category(getCategory#3*) num objects
    //#output(void addCategory(Category)): new Category(getCategory#3*).__Tag
    //#output(void addCategory(Category)): new Category(getCategory#3*).blog
    //#output(void addCategory(Category)): new Category(getCategory#3*).blogEntries
    //#output(void addCategory(Category)): new Category(getCategory#3*).id
    //#output(void addCategory(Category)): new Category(getCategory#3*).name
    //#output(void addCategory(Category)): new Category(getCategory#3*).parent
    //#output(void addCategory(Category)): new Category(getCategory#3*).subCategories
    //#output(void addCategory(Category)): new Category(getCategory#3*).tags
    //#output(void addCategory(Category)): new Category(getCategory#3*).tagsAsList
    //#new obj(void addCategory(Category)): new ArrayList(Category#1)
    //#new obj(void addCategory(Category)): new ArrayList(Category#2)
    //#new obj(void addCategory(Category)): new ArrayList(Category#3)
    //#new obj(void addCategory(Category)): new Category(getCategory#2*)
    //#new obj(void addCategory(Category)): new Category(getCategory#3*)
    //#pre[1] (void addCategory(Category)): category != null
    //#pre[2] (void addCategory(Category)): category.__Tag == net/sourceforge/pebble/domain/Category
    //#pre[8] (void addCategory(Category)): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[9] (void addCategory(Category)): init'ed(this.rootCategory)
    //#pre[3] (void addCategory(Category)): (soft) category.id != null
    //#post(void addCategory(Category)): possibly_updated(category.blog)
    //#post(void addCategory(Category)): possibly_updated(category.parent)
    //#post(void addCategory(Category)): init'ed(new ArrayList(Category#1) num objects)
    //#post(void addCategory(Category)): init'ed(new ArrayList(Category#2) num objects)
    //#post(void addCategory(Category)): init'ed(new ArrayList(Category#3) num objects)
    //#post(void addCategory(Category)): init'ed(new Category(getCategory#2*) num objects)
    //#post(void addCategory(Category)): init'ed(new Category(getCategory#2*).__Tag)
    //#post(void addCategory(Category)): possibly_updated(new Category(getCategory#2*).blog)
    //#post(void addCategory(Category)): init'ed(new Category(getCategory#2*).blogEntries)
    //#post(void addCategory(Category)): possibly_updated(new Category(getCategory#2*).id)
    //#post(void addCategory(Category)): init'ed(new Category(getCategory#2*).name)
    //#post(void addCategory(Category)): possibly_updated(new Category(getCategory#2*).parent)
    //#post(void addCategory(Category)): possibly_updated(new Category(getCategory#2*).subCategories)
    //#post(void addCategory(Category)): init'ed(new Category(getCategory#2*).tags)
    //#post(void addCategory(Category)): init'ed(new Category(getCategory#2*).tagsAsList)
    //#post(void addCategory(Category)): init'ed(new Category(getCategory#3*) num objects)
    //#post(void addCategory(Category)): init'ed(new Category(getCategory#3*).__Tag)
    //#post(void addCategory(Category)): possibly_updated(new Category(getCategory#3*).blog)
    //#post(void addCategory(Category)): init'ed(new Category(getCategory#3*).blogEntries)
    //#post(void addCategory(Category)): possibly_updated(new Category(getCategory#3*).id)
    //#post(void addCategory(Category)): init'ed(new Category(getCategory#3*).name)
    //#post(void addCategory(Category)): possibly_updated(new Category(getCategory#3*).parent)
    //#post(void addCategory(Category)): possibly_updated(new Category(getCategory#3*).subCategories)
    //#post(void addCategory(Category)): init'ed(new Category(getCategory#3*).tags)
    //#post(void addCategory(Category)): init'ed(new Category(getCategory#3*).tagsAsList)
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:getSubCategories
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:getCategory
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getLocale
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:net.sourceforge.pebble.util.I18n:getMessage
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:net.sourceforge.pebble.domain.Category
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:addCategory
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:getId
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.lang.String:lastIndexOf
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:setBlog
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:isRootCategory
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:addSubCategory
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.util.Collections:unmodifiableList
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void addCategory(Category)): Effects-of-calling:java.util.List:add
      CategoryBuilder builder = new CategoryBuilder(this, rootCategory);
      builder.addCategory(category);
    //#blog.java:1382: Warning: unused assignment in callee
    //#    unused assignment to (builder.rootCategory) in addCategory
    //#    severity: LOW
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void addCategory(Category)
    //#blog.java:1382: ?precondition failure
    //#    net/sourceforge/pebble/domain/CategoryBuilder.addCategory: category.id != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void addCategory(Category)
    //#    basic block: bb_2
    //#    assertion: category.id != null
    //#    callee: void net/sourceforge/pebble/domain/CategoryBuilder.addCategory(Category)
    //#    callee assertion: category.id != null
    //#    callee file: categorybuilder.java
    //#    callee precondition index: [4]
    //#    callee srcpos: 78
    //#    VN: category.id
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null, Invalid}
    //#    Attribs:  Ptr  null in Bad
    }
  }
    //#blog.java:1384: end of method: void net.sourceforge.pebble.domain.Blog.addCategory(Category)

  /**
   * Removes a category.
   *
   * @param category    the Category to be removed
   */
  public synchronized void removeCategory(Category category) {
    if (getCategory(category.getId()) != null) {
    //#blog.java:1392: method: void net.sourceforge.pebble.domain.Blog.removeCategory(Category)
    //#input(void removeCategory(Category)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void removeCategory(Category)): __Descendant_Table[others]
    //#input(void removeCategory(Category)): __Dispatch_Table.getCategory(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Category;
    //#input(void removeCategory(Category)): category
    //#input(void removeCategory(Category)): category.__Tag
    //#input(void removeCategory(Category)): category.id
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/Category.__Descendant_Table[net/sourceforge/pebble/domain/Category]
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/Category.__Descendant_Table[others]
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.addSubCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getSubCategories()Ljava/util/List;
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.isRootCategory()Z
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.removeSubCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setId(Ljava/lang/String;)V
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setParent(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/CategoryBuilder.__Descendant_Table[net/sourceforge/pebble/domain/CategoryBuilder]
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/CategoryBuilder.__Descendant_Table[others]
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.addCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.getCategory(Ljava/lang/String;)Lnet/sourceforge/pebble/domain/Category;
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category;
    //#input(void removeCategory(Category)): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.removeCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(void removeCategory(Category)): this
    //#input(void removeCategory(Category)): this.__Tag
    //#input(void removeCategory(Category)): this.rootCategory
    //#input(void removeCategory(Category)): this.rootCategory.__Tag
    //#output(void removeCategory(Category)): category.parent
    //#output(void removeCategory(Category)): new ArrayList(Category#1) num objects
    //#output(void removeCategory(Category)): new ArrayList(Category#2) num objects
    //#output(void removeCategory(Category)): new ArrayList(Category#3) num objects
    //#output(void removeCategory(Category)): new Category(getCategory#2) num objects
    //#output(void removeCategory(Category)): new Category(getCategory#2).__Tag
    //#output(void removeCategory(Category)): new Category(getCategory#2).blog
    //#output(void removeCategory(Category)): new Category(getCategory#2).blogEntries
    //#output(void removeCategory(Category)): new Category(getCategory#2).id
    //#output(void removeCategory(Category)): new Category(getCategory#2).name
    //#output(void removeCategory(Category)): new Category(getCategory#2).parent
    //#output(void removeCategory(Category)): new Category(getCategory#2).subCategories
    //#output(void removeCategory(Category)): new Category(getCategory#2).tags
    //#output(void removeCategory(Category)): new Category(getCategory#2).tagsAsList
    //#output(void removeCategory(Category)): new Category(getCategory#3) num objects
    //#output(void removeCategory(Category)): new Category(getCategory#3).__Tag
    //#output(void removeCategory(Category)): new Category(getCategory#3).blog
    //#output(void removeCategory(Category)): new Category(getCategory#3).blogEntries
    //#output(void removeCategory(Category)): new Category(getCategory#3).id
    //#output(void removeCategory(Category)): new Category(getCategory#3).name
    //#output(void removeCategory(Category)): new Category(getCategory#3).parent
    //#output(void removeCategory(Category)): new Category(getCategory#3).subCategories
    //#output(void removeCategory(Category)): new Category(getCategory#3).tags
    //#output(void removeCategory(Category)): new Category(getCategory#3).tagsAsList
    //#new obj(void removeCategory(Category)): new ArrayList(Category#1)
    //#new obj(void removeCategory(Category)): new ArrayList(Category#2)
    //#new obj(void removeCategory(Category)): new ArrayList(Category#3)
    //#new obj(void removeCategory(Category)): new Category(getCategory#2)
    //#new obj(void removeCategory(Category)): new Category(getCategory#3)
    //#pre[1] (void removeCategory(Category)): category != null
    //#pre[2] (void removeCategory(Category)): category.__Tag == net/sourceforge/pebble/domain/Category
    //#pre[6] (void removeCategory(Category)): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (void removeCategory(Category)): (soft) category.id != null
    //#pre[7] (void removeCategory(Category)): (soft) init'ed(this.rootCategory)
    //#post(void removeCategory(Category)): possibly_updated(category.parent)
    //#post(void removeCategory(Category)): init'ed(new ArrayList(Category#1) num objects)
    //#post(void removeCategory(Category)): init'ed(new ArrayList(Category#2) num objects)
    //#post(void removeCategory(Category)): init'ed(new ArrayList(Category#3) num objects)
    //#post(void removeCategory(Category)): init'ed(new Category(getCategory#2) num objects)
    //#post(void removeCategory(Category)): init'ed(new Category(getCategory#2).__Tag)
    //#post(void removeCategory(Category)): possibly_updated(new Category(getCategory#2).blog)
    //#post(void removeCategory(Category)): init'ed(new Category(getCategory#2).blogEntries)
    //#post(void removeCategory(Category)): possibly_updated(new Category(getCategory#2).id)
    //#post(void removeCategory(Category)): init'ed(new Category(getCategory#2).name)
    //#post(void removeCategory(Category)): possibly_updated(new Category(getCategory#2).parent)
    //#post(void removeCategory(Category)): possibly_updated(new Category(getCategory#2).subCategories)
    //#post(void removeCategory(Category)): init'ed(new Category(getCategory#2).tags)
    //#post(void removeCategory(Category)): init'ed(new Category(getCategory#2).tagsAsList)
    //#post(void removeCategory(Category)): init'ed(new Category(getCategory#3) num objects)
    //#post(void removeCategory(Category)): init'ed(new Category(getCategory#3).__Tag)
    //#post(void removeCategory(Category)): possibly_updated(new Category(getCategory#3).blog)
    //#post(void removeCategory(Category)): init'ed(new Category(getCategory#3).blogEntries)
    //#post(void removeCategory(Category)): possibly_updated(new Category(getCategory#3).id)
    //#post(void removeCategory(Category)): init'ed(new Category(getCategory#3).name)
    //#post(void removeCategory(Category)): possibly_updated(new Category(getCategory#3).parent)
    //#post(void removeCategory(Category)): possibly_updated(new Category(getCategory#3).subCategories)
    //#post(void removeCategory(Category)): init'ed(new Category(getCategory#3).tags)
    //#post(void removeCategory(Category)): init'ed(new Category(getCategory#3).tagsAsList)
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:getSubCategories
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:getCategory
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:getParent
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:removeSubCategory
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getLocale
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:net.sourceforge.pebble.util.I18n:getMessage
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:net.sourceforge.pebble.domain.Category
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:addCategory
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:getId
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.lang.String:lastIndexOf
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:setBlog
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:isRootCategory
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:addSubCategory
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.util.Collections:unmodifiableList
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.util.List:remove
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void removeCategory(Category)): Effects-of-calling:java.util.List:add
      CategoryBuilder builder = new CategoryBuilder(this, rootCategory);
      builder.removeCategory(category);
    //#blog.java:1394: ?precondition failure
    //#    net/sourceforge/pebble/domain/CategoryBuilder.removeCategory: category.id != null
    //#    severity: MEDIUM
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void removeCategory(Category)
    //#    basic block: bb_2
    //#    assertion: category.id != null
    //#    callee: void net/sourceforge/pebble/domain/CategoryBuilder.removeCategory(Category)
    //#    callee assertion: category.id != null
    //#    callee file: categorybuilder.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 94
    //#    VN: category.id
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null, Invalid}
    //#    Attribs:  Ptr  null in Bad
    }
  }
    //#blog.java:1396: end of method: void net.sourceforge.pebble.domain.Blog.removeCategory(Category)

  /**
   * Gets the list of tags associated with this blog.
   */
  public List<Tag> getTags() {
    return tagIndex.getTags();
    //#blog.java:1402: method: List net.sourceforge.pebble.domain.Blog.getTags()
    //#input(List getTags()): net/sourceforge/pebble/index/TagIndex.__Descendant_Table[net/sourceforge/pebble/index/TagIndex]
    //#input(List getTags()): net/sourceforge/pebble/index/TagIndex.__Descendant_Table[others]
    //#input(List getTags()): net/sourceforge/pebble/index/TagIndex.__Dispatch_Table.getTags()Ljava/util/List;
    //#input(List getTags()): this
    //#input(List getTags()): this.tagIndex
    //#input(List getTags()): this.tagIndex.__Tag
    //#input(List getTags()): this.tagIndex.orderedTags
    //#output(List getTags()): new ArrayList(getTags#1*) num objects
    //#output(List getTags()): return_value
    //#new obj(List getTags()): new ArrayList(getTags#1*)
    //#pre[2] (List getTags()): this.tagIndex != null
    //#pre[3] (List getTags()): this.tagIndex.__Tag == net/sourceforge/pebble/index/TagIndex
    //#pre[4] (List getTags()): init'ed(this.tagIndex.orderedTags)
    //#post(List getTags()): return_value == &new ArrayList(getTags#1*)
    //#post(List getTags()): new ArrayList(getTags#1*) num objects == 1
    //#unanalyzed(List getTags()): Effects-of-calling:java.util.ArrayList
    //#blog.java:1402: end of method: List net.sourceforge.pebble.domain.Blog.getTags()
  }

  /**
   * Gets the tag with the specified name.
   *
   * @param name    the name as a String
   * @return  a Tag instance
   */
  public Tag getTag(String name) {
    return new Tag(name, this);
    //#blog.java:1412: method: Tag net.sourceforge.pebble.domain.Blog.getTag(String)
    //#input(Tag getTag(String)): name
    //#input(Tag getTag(String)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/domain/Tag]
    //#input(Tag getTag(String)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/index/IndexedTag]
    //#input(Tag getTag(String)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[others]
    //#input(Tag getTag(String)): net/sourceforge/pebble/domain/Tag.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(Tag getTag(String)): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(Tag getTag(String)): this
    //#output(Tag getTag(String)): new Tag(getTag#1) num objects
    //#output(Tag getTag(String)): return_value.__Tag
    //#output(Tag getTag(String)): return_value.blog
    //#output(Tag getTag(String)): return_value.name
    //#output(Tag getTag(String)): return_value
    //#new obj(Tag getTag(String)): new Tag(getTag#1)
    //#post(Tag getTag(String)): return_value == &new Tag(getTag#1)
    //#post(Tag getTag(String)): new Tag(getTag#1) num objects == 1
    //#post(Tag getTag(String)): return_value.__Tag == net/sourceforge/pebble/domain/Tag
    //#post(Tag getTag(String)): return_value.blog == this
    //#post(Tag getTag(String)): return_value.blog != null
    //#post(Tag getTag(String)): return_value.name != null
    //#unanalyzed(Tag getTag(String)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(Tag getTag(String)): Effects-of-calling:java.lang.String:toLowerCase
    //#unanalyzed(Tag getTag(String)): Effects-of-calling:java.lang.String:replaceAll
    //#blog.java:1412: end of method: Tag net.sourceforge.pebble.domain.Blog.getTag(String)
  }

  /**
   * Gets the object managing referer filters.
   *
   * @return  a RefererFilterManager instance
   */
  public RefererFilterManager getRefererFilterManager() {
    return this.refererFilterManager;
    //#blog.java:1421: method: RefererFilterManager net.sourceforge.pebble.domain.Blog.getRefererFilterManager()
    //#input(RefererFilterManager getRefererFilterManager()): this
    //#input(RefererFilterManager getRefererFilterManager()): this.refererFilterManager
    //#output(RefererFilterManager getRefererFilterManager()): return_value
    //#pre[2] (RefererFilterManager getRefererFilterManager()): init'ed(this.refererFilterManager)
    //#post(RefererFilterManager getRefererFilterManager()): return_value == this.refererFilterManager
    //#post(RefererFilterManager getRefererFilterManager()): init'ed(return_value)
    //#blog.java:1421: end of method: RefererFilterManager net.sourceforge.pebble.domain.Blog.getRefererFilterManager()
  }

  /**
   * Gets the search index.
   *
   * @return  a BlogEntryIndex instance
   */
  public SearchIndex getSearchIndex() {
    return this.searchIndex;
    //#blog.java:1430: method: SearchIndex net.sourceforge.pebble.domain.Blog.getSearchIndex()
    //#input(SearchIndex getSearchIndex()): this
    //#input(SearchIndex getSearchIndex()): this.searchIndex
    //#output(SearchIndex getSearchIndex()): return_value
    //#pre[2] (SearchIndex getSearchIndex()): init'ed(this.searchIndex)
    //#post(SearchIndex getSearchIndex()): return_value == this.searchIndex
    //#post(SearchIndex getSearchIndex()): init'ed(return_value)
    //#blog.java:1430: end of method: SearchIndex net.sourceforge.pebble.domain.Blog.getSearchIndex()
  }

  /**
   * Gets the blog entry index.
   *
   * @return  a BlogEntryIndex instance
   */
  public BlogEntryIndex getBlogEntryIndex() {
    return this.blogEntryIndex;
    //#blog.java:1439: method: BlogEntryIndex net.sourceforge.pebble.domain.Blog.getBlogEntryIndex()
    //#input(BlogEntryIndex getBlogEntryIndex()): this
    //#input(BlogEntryIndex getBlogEntryIndex()): this.blogEntryIndex
    //#output(BlogEntryIndex getBlogEntryIndex()): return_value
    //#pre[2] (BlogEntryIndex getBlogEntryIndex()): init'ed(this.blogEntryIndex)
    //#post(BlogEntryIndex getBlogEntryIndex()): return_value == this.blogEntryIndex
    //#post(BlogEntryIndex getBlogEntryIndex()): init'ed(return_value)
    //#blog.java:1439: end of method: BlogEntryIndex net.sourceforge.pebble.domain.Blog.getBlogEntryIndex()
  }

  /**
   * Gets the response index.
   *
   * @return  a ResponseIndex instance
   */
  public ResponseIndex getResponseIndex() {
    return this.responseIndex;
    //#blog.java:1448: method: ResponseIndex net.sourceforge.pebble.domain.Blog.getResponseIndex()
    //#input(ResponseIndex getResponseIndex()): this
    //#input(ResponseIndex getResponseIndex()): this.responseIndex
    //#output(ResponseIndex getResponseIndex()): return_value
    //#pre[2] (ResponseIndex getResponseIndex()): init'ed(this.responseIndex)
    //#post(ResponseIndex getResponseIndex()): return_value == this.responseIndex
    //#post(ResponseIndex getResponseIndex()): init'ed(return_value)
    //#blog.java:1448: end of method: ResponseIndex net.sourceforge.pebble.domain.Blog.getResponseIndex()
  }

  /**
   * Gets the tag index.
   *
   * @return  a TagIndex instance
   */
  public TagIndex getTagIndex() {
    return this.tagIndex;
    //#blog.java:1457: method: TagIndex net.sourceforge.pebble.domain.Blog.getTagIndex()
    //#input(TagIndex getTagIndex()): this
    //#input(TagIndex getTagIndex()): this.tagIndex
    //#output(TagIndex getTagIndex()): return_value
    //#pre[2] (TagIndex getTagIndex()): init'ed(this.tagIndex)
    //#post(TagIndex getTagIndex()): return_value == this.tagIndex
    //#post(TagIndex getTagIndex()): init'ed(return_value)
    //#blog.java:1457: end of method: TagIndex net.sourceforge.pebble.domain.Blog.getTagIndex()
  }

  /**
   * Gets the category index.
   *
   * @return  a CategoryIndex instance
   */
  public CategoryIndex getCategoryIndex() {
    return this.categoryIndex;
    //#blog.java:1466: method: CategoryIndex net.sourceforge.pebble.domain.Blog.getCategoryIndex()
    //#input(CategoryIndex getCategoryIndex()): this
    //#input(CategoryIndex getCategoryIndex()): this.categoryIndex
    //#output(CategoryIndex getCategoryIndex()): return_value
    //#pre[2] (CategoryIndex getCategoryIndex()): init'ed(this.categoryIndex)
    //#post(CategoryIndex getCategoryIndex()): return_value == this.categoryIndex
    //#post(CategoryIndex getCategoryIndex()): init'ed(return_value)
    //#blog.java:1466: end of method: CategoryIndex net.sourceforge.pebble.domain.Blog.getCategoryIndex()
  }

  /**
   * Gets the author index.
   *
   * @return  a AuthorIndex instance
   */
  public AuthorIndex getAuthorIndex() {
    return this.authorIndex;
    //#blog.java:1475: method: AuthorIndex net.sourceforge.pebble.domain.Blog.getAuthorIndex()
    //#input(AuthorIndex getAuthorIndex()): this
    //#input(AuthorIndex getAuthorIndex()): this.authorIndex
    //#output(AuthorIndex getAuthorIndex()): return_value
    //#pre[2] (AuthorIndex getAuthorIndex()): init'ed(this.authorIndex)
    //#post(AuthorIndex getAuthorIndex()): return_value == this.authorIndex
    //#post(AuthorIndex getAuthorIndex()): init'ed(return_value)
    //#blog.java:1475: end of method: AuthorIndex net.sourceforge.pebble.domain.Blog.getAuthorIndex()
  }

  /**
   * Gets the story index.
   *
   * @return  a StaticPageIndex instance
   */
  public StaticPageIndex getStaticPageIndex() {
    return this.staticPageIndex;
    //#blog.java:1484: method: StaticPageIndex net.sourceforge.pebble.domain.Blog.getStaticPageIndex()
    //#input(StaticPageIndex getStaticPageIndex()): this
    //#input(StaticPageIndex getStaticPageIndex()): this.staticPageIndex
    //#output(StaticPageIndex getStaticPageIndex()): return_value
    //#pre[2] (StaticPageIndex getStaticPageIndex()): init'ed(this.staticPageIndex)
    //#post(StaticPageIndex getStaticPageIndex()): return_value == this.staticPageIndex
    //#post(StaticPageIndex getStaticPageIndex()): init'ed(return_value)
    //#blog.java:1484: end of method: StaticPageIndex net.sourceforge.pebble.domain.Blog.getStaticPageIndex()
  }

  /**
   * Logs this request for blog.
   *
   * @param request   the HttpServletRequest instance for this request
   */
  public synchronized void log(HttpServletRequest request, int status) {
    String externalUri = (String)request.getAttribute(Constants.EXTERNAL_URI);
    //#blog.java:1493: method: void net.sourceforge.pebble.domain.Blog.log(HttpServletRequest, int)
    //#input(void log(HttpServletRequest, int)): request
    //#input(void log(HttpServletRequest, int)): status
    //#input(void log(HttpServletRequest, int)): this
    //#input(void log(HttpServletRequest, int)): this.logger
    //#pre[1] (void log(HttpServletRequest, int)): request != null
    //#pre[4] (void log(HttpServletRequest, int)): (soft) this.logger != null
    //#presumption(void log(HttpServletRequest, int)): javax.servlet.http.HttpServletRequest:getAttribute(...)@1493 != null
    //#test_vector(void log(HttpServletRequest, int)): java.lang.String:matches(...)@1494: {1}, {0}
    if (externalUri.matches("/images/.+")) {
      // do nothing, we don't want to log the following types of requests
      // - a blog's images
    } else {
      // log the request
      logger.log(request, status);
    //#blog.java:1499: Warning: method not available
    //#    -- call on void net.sourceforge.pebble.logging.AbstractLogger:log(HttpServletRequest, int)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void log(HttpServletRequest, int)
    //#    unanalyzed callee: void net.sourceforge.pebble.logging.AbstractLogger:log(HttpServletRequest, int)
    }
  }
    //#blog.java:1501: end of method: void net.sourceforge.pebble.domain.Blog.log(HttpServletRequest, int)

  /**
   * Gets an object representing the editable theme.
   *
   * @return    an EditableTheme instance
   */
  public Theme getEditableTheme() {
    return editableTheme;
    //#blog.java:1509: method: Theme net.sourceforge.pebble.domain.Blog.getEditableTheme()
    //#input(Theme getEditableTheme()): this
    //#input(Theme getEditableTheme()): this.editableTheme
    //#output(Theme getEditableTheme()): return_value
    //#pre[2] (Theme getEditableTheme()): init'ed(this.editableTheme)
    //#post(Theme getEditableTheme()): return_value == this.editableTheme
    //#post(Theme getEditableTheme()): init'ed(return_value)
    //#blog.java:1509: end of method: Theme net.sourceforge.pebble.domain.Blog.getEditableTheme()
  }

  /**
   * Sets an object representing the editable theme.
   *
   * @param editableTheme    an EditableTheme instance
   */
  public void setEditableTheme(Theme editableTheme) {
    this.editableTheme = editableTheme;
    //#blog.java:1518: method: void net.sourceforge.pebble.domain.Blog.setEditableTheme(Theme)
    //#input(void setEditableTheme(Theme)): editableTheme
    //#input(void setEditableTheme(Theme)): this
    //#output(void setEditableTheme(Theme)): this.editableTheme
    //#post(void setEditableTheme(Theme)): this.editableTheme == editableTheme
    //#post(void setEditableTheme(Theme)): init'ed(this.editableTheme)
  }
    //#blog.java:1519: end of method: void net.sourceforge.pebble.domain.Blog.setEditableTheme(Theme)

  /**
   * Gets the location where the blog files are stored.
   *
   * @return    an absolute, local path on the filing system
   */
  public String getFilesDirectory() {
    return getRoot() + File.separator + "files";
    //#blog.java:1527: method: String net.sourceforge.pebble.domain.Blog.getFilesDirectory()
    //#input(String getFilesDirectory()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getFilesDirectory()): __Descendant_Table[others]
    //#input(String getFilesDirectory()): __Dispatch_Table.getRoot()Ljava/lang/String;
    //#input(String getFilesDirectory()): java.io.File.separator
    //#input(String getFilesDirectory()): this
    //#input(String getFilesDirectory()): this.__Tag
    //#input(String getFilesDirectory()): this.root
    //#output(String getFilesDirectory()): return_value
    //#pre[2] (String getFilesDirectory()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (String getFilesDirectory()): init'ed(this.root)
    //#presumption(String getFilesDirectory()): init'ed(java.io.File.separator)
    //#post(String getFilesDirectory()): return_value != null
    //#blog.java:1527: end of method: String net.sourceforge.pebble.domain.Blog.getFilesDirectory()
  }

  /**
   * Gets the location where the blog theme is stored.
   *
   * @return    an absolute, local path on the filing system
   */
  public String getThemeDirectory() {
    return getRoot() + File.separator + "theme";
    //#blog.java:1536: method: String net.sourceforge.pebble.domain.Blog.getThemeDirectory()
    //#input(String getThemeDirectory()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getThemeDirectory()): __Descendant_Table[others]
    //#input(String getThemeDirectory()): __Dispatch_Table.getRoot()Ljava/lang/String;
    //#input(String getThemeDirectory()): java.io.File.separator
    //#input(String getThemeDirectory()): this
    //#input(String getThemeDirectory()): this.__Tag
    //#input(String getThemeDirectory()): this.root
    //#output(String getThemeDirectory()): return_value
    //#pre[2] (String getThemeDirectory()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (String getThemeDirectory()): init'ed(this.root)
    //#presumption(String getThemeDirectory()): init'ed(java.io.File.separator)
    //#post(String getThemeDirectory()): return_value != null
    //#blog.java:1536: end of method: String net.sourceforge.pebble.domain.Blog.getThemeDirectory()
  }

  /**
   * Gets the location where the plugin properties file is stored.
   *
   * @return    an absolute, local path on the filing system
   */
  public String getPluginPropertiesFile() {
    return getRoot() + File.separator + "plugin.properties";
    //#blog.java:1545: method: String net.sourceforge.pebble.domain.Blog.getPluginPropertiesFile()
    //#input(String getPluginPropertiesFile()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getPluginPropertiesFile()): __Descendant_Table[others]
    //#input(String getPluginPropertiesFile()): __Dispatch_Table.getRoot()Ljava/lang/String;
    //#input(String getPluginPropertiesFile()): java.io.File.separator
    //#input(String getPluginPropertiesFile()): this
    //#input(String getPluginPropertiesFile()): this.__Tag
    //#input(String getPluginPropertiesFile()): this.root
    //#output(String getPluginPropertiesFile()): return_value
    //#pre[2] (String getPluginPropertiesFile()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (String getPluginPropertiesFile()): init'ed(this.root)
    //#presumption(String getPluginPropertiesFile()): init'ed(java.io.File.separator)
    //#post(String getPluginPropertiesFile()): return_value != null
    //#blog.java:1545: end of method: String net.sourceforge.pebble.domain.Blog.getPluginPropertiesFile()
  }

  /**
   * Determines whether this blog is public.
   *
   * @return  true if public, false otherwise
   */
  public boolean isPublic() {
    return properties.getProperty(PRIVATE_KEY).equalsIgnoreCase(FALSE);
    //#blog.java:1554: method: bool net.sourceforge.pebble.domain.Blog.isPublic()
    //#input(bool isPublic()): this
    //#input(bool isPublic()): this.properties
    //#output(bool isPublic()): return_value
    //#pre[2] (bool isPublic()): this.properties != null
    //#presumption(bool isPublic()): java.util.Properties:getProperty(...)@1554 != null
    //#post(bool isPublic()): init'ed(return_value)
    //#blog.java:1554: end of method: bool net.sourceforge.pebble.domain.Blog.isPublic()
  }

  /**
   * Determines whether this blog is private.
   *
   * @return  true if public, false otherwise
   */
  public boolean isPrivate() {
    return properties.getProperty(PRIVATE_KEY).equalsIgnoreCase(TRUE);
    //#blog.java:1563: method: bool net.sourceforge.pebble.domain.Blog.isPrivate()
    //#input(bool isPrivate()): this
    //#input(bool isPrivate()): this.properties
    //#output(bool isPrivate()): return_value
    //#pre[2] (bool isPrivate()): this.properties != null
    //#presumption(bool isPrivate()): java.util.Properties:getProperty(...)@1563 != null
    //#post(bool isPrivate()): init'ed(return_value)
    //#blog.java:1563: end of method: bool net.sourceforge.pebble.domain.Blog.isPrivate()
  }

  /**
   * Called to start (i.e. activate/initialise, restore the theme, etc) this
   * blog.
   */
  void start() {
    log.debug("Starting blog with ID " + getId());
    //#blog.java:1571: method: void net.sourceforge.pebble.domain.Blog.start()
    //#blog.java:1571: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void start()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void start()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void start()): __Descendant_Table[others]
    //#input(void start()): __Dispatch_Table.error(Ljava/lang/String;)V
    //#input(void start()): __Dispatch_Table.getFilesDirectory()Ljava/lang/String;
    //#input(void start()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(void start()): __Dispatch_Table.getImagesDirectory()Ljava/lang/String;
    //#input(void start()): __Dispatch_Table.getIndexesDirectory()Ljava/lang/String;
    //#input(void start()): __Dispatch_Table.getLogsDirectory()Ljava/lang/String;
    //#input(void start()): __Dispatch_Table.getLuceneAnalyzer()Ljava/lang/String;
    //#input(void start()): __Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#input(void start()): __Dispatch_Table.getRoot()Ljava/lang/String;
    //#input(void start()): __Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void start()): __Dispatch_Table.info(Ljava/lang/String;)V
    //#input(void start()): __Dispatch_Table.reindex()V
    //#input(void start()): __Dispatch_Table.reindexBlogEntries()V
    //#input(void start()): __Dispatch_Table.reindexStaticPages()V
    //#input(void start()): log
    //#input(void start()): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(void start()): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(void start()): net/sourceforge/pebble/api/event/EventDispatcher.__Descendant_Table[net/sourceforge/pebble/api/event/EventDispatcher]
    //#input(void start()): net/sourceforge/pebble/api/event/EventDispatcher.__Descendant_Table[net/sourceforge/pebble/event/DefaultEventDispatcher]
    //#input(void start()): net/sourceforge/pebble/api/event/EventDispatcher.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/api/event/EventDispatcher.__Dispatch_Table.fireBlogEvent(Lnet/sourceforge/pebble/api/event/blog/BlogEvent;)V
    //#input(void start()): net/sourceforge/pebble/api/event/blog/BlogEvent.__Descendant_Table[net/sourceforge/pebble/api/event/blog/BlogEvent]
    //#input(void start()): net/sourceforge/pebble/api/event/blog/BlogEvent.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/api/event/blog/BlogEvent.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void start()): net/sourceforge/pebble/api/event/blog/BlogEvent.__Dispatch_Table.getType()I
    //#input(void start()): net/sourceforge/pebble/api/event/blog/BlogEvent.__Dispatch_Table.isVetoed()Z
    //#input(void start()): net/sourceforge/pebble/api/event/blog/BlogListener.__Descendant_Table[net/sourceforge/pebble/api/event/blog/BlogListener]
    //#input(void start()): net/sourceforge/pebble/api/event/blog/BlogListener.__Descendant_Table[net/sourceforge/pebble/event/blog/PebbleAPIBlogEntryAggregator]
    //#input(void start()): net/sourceforge/pebble/api/event/blog/BlogListener.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/api/event/blog/BlogListener.__Dispatch_Table.blogStarted(Lnet/sourceforge/pebble/api/event/blog/BlogEvent;)V
    //#input(void start()): net/sourceforge/pebble/api/event/blog/BlogListener.__Dispatch_Table.blogStopped(Lnet/sourceforge/pebble/api/event/blog/BlogEvent;)V
    //#input(void start()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(void start()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.getPermalink(Lnet/sourceforge/pebble/domain/BlogEntry;)Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[net/sourceforge/pebble/dao/DAOFactory]
    //#input(void start()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[net/sourceforge/pebble/dao/file/FileDAOFactory]
    //#input(void start()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/dao/DAOFactory.__Dispatch_Table.getStaticPageDAO()Lnet/sourceforge/pebble/dao/StaticPageDAO;
    //#input(void start()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory.__Tag
    //#input(void start()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory.staticPageDAO.__Tag
    //#input(void start()): net/sourceforge/pebble/dao/StaticPageDAO.__Descendant_Table[net/sourceforge/pebble/dao/StaticPageDAO]
    //#input(void start()): net/sourceforge/pebble/dao/StaticPageDAO.__Descendant_Table[net/sourceforge/pebble/dao/file/FileStaticPageDAO]
    //#input(void start()): net/sourceforge/pebble/dao/StaticPageDAO.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/dao/StaticPageDAO.__Dispatch_Table.loadStaticPages(Lnet/sourceforge/pebble/domain/Blog;)Ljava/util/Collection;
    //#input(void start()): net/sourceforge/pebble/dao/file/FileDAOFactory.__Dispatch_Table.getStaticPageDAO()Lnet/sourceforge/pebble/dao/StaticPageDAO;
    //#input(void start()): net/sourceforge/pebble/dao/file/FileStaticPageDAO.__Descendant_Table[net/sourceforge/pebble/dao/file/FileStaticPageDAO]
    //#input(void start()): net/sourceforge/pebble/dao/file/FileStaticPageDAO.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/dao/file/FileStaticPageDAO.__Dispatch_Table.loadStaticPage(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/StaticPage;
    //#input(void start()): net/sourceforge/pebble/dao/file/FileStaticPageDAO.__Dispatch_Table.loadStaticPages(Lnet/sourceforge/pebble/domain/Blog;)Ljava/util/Collection;
    //#input(void start()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/AbstractBlog]
    //#input(void start()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void start()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/MultiBlog]
    //#input(void start()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getRoot()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void start()): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void start()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isAggregated()Z
    //#input(void start()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(void start()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(void start()): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(void start()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void start()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void start()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void start()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Content]
    //#input(void start()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void start()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void start()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void start()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void start()): net/sourceforge/pebble/domain/Content.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/domain/Content.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/Message.__Descendant_Table[net/sourceforge/pebble/domain/Message]
    //#input(void start()): net/sourceforge/pebble/domain/Message.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/MessageType.ERROR
    //#input(void start()): net/sourceforge/pebble/domain/MessageType.INFO
    //#input(void start()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getRoot()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void start()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void start()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void start()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.isAggregated()Z
    //#input(void start()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getAuthor()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getPermalink()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getTitle()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getTruncatedContent()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.isAggregated()Z
    //#input(void start()): net/sourceforge/pebble/domain/Theme.__Descendant_Table[net/sourceforge/pebble/domain/Theme]
    //#input(void start()): net/sourceforge/pebble/domain/Theme.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/domain/Theme.__Dispatch_Table.getBackupThemeDirectory()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/Theme.__Dispatch_Table.getPathToLiveTheme()Ljava/io/File;
    //#input(void start()): net/sourceforge/pebble/domain/Theme.__Dispatch_Table.restore()V
    //#input(void start()): net/sourceforge/pebble/domain/Theme.__Dispatch_Table.restore(Ljava/lang/String;)V
    //#input(void start()): net/sourceforge/pebble/domain/Theme.log
    //#input(void start()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void start()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#input(void start()): net/sourceforge/pebble/event/DefaultEventDispatcher.__Descendant_Table[net/sourceforge/pebble/event/DefaultEventDispatcher]
    //#input(void start()): net/sourceforge/pebble/event/DefaultEventDispatcher.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/event/DefaultEventDispatcher.__Dispatch_Table.fireBlogEvent(Lnet/sourceforge/pebble/api/event/blog/BlogEvent;)V
    //#input(void start()): net/sourceforge/pebble/event/DefaultEventDispatcher.__Dispatch_Table.getEventListenerList()Lnet/sourceforge/pebble/event/EventListenerList;
    //#input(void start()): net/sourceforge/pebble/event/EventListenerList.__Descendant_Table[net/sourceforge/pebble/event/EventListenerList]
    //#input(void start()): net/sourceforge/pebble/event/EventListenerList.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/event/EventListenerList.__Dispatch_Table.getBlogListeners()Ljava/util/List;
    //#input(void start()): net/sourceforge/pebble/event/blog/PebbleAPIBlogEntryAggregator.__Dispatch_Table.blogStarted(Lnet/sourceforge/pebble/api/event/blog/BlogEvent;)V
    //#input(void start()): net/sourceforge/pebble/event/blog/PebbleAPIBlogEntryAggregator.__Dispatch_Table.blogStopped(Lnet/sourceforge/pebble/api/event/blog/BlogEvent;)V
    //#input(void start()): net/sourceforge/pebble/index/SearchIndex.__Descendant_Table[net/sourceforge/pebble/index/SearchIndex]
    //#input(void start()): net/sourceforge/pebble/index/SearchIndex.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/index/SearchIndex.__Dispatch_Table.indexStaticPages(Ljava/util/Collection;)V
    //#input(void start()): net/sourceforge/pebble/index/SearchIndex.log
    //#input(void start()): net/sourceforge/pebble/index/StaticPageIndex.__Descendant_Table[net/sourceforge/pebble/index/StaticPageIndex]
    //#input(void start()): net/sourceforge/pebble/index/StaticPageIndex.__Descendant_Table[others]
    //#input(void start()): net/sourceforge/pebble/index/StaticPageIndex.__Dispatch_Table.reindex(Ljava/util/Collection;)V
    //#input(void start()): net/sourceforge/pebble/index/StaticPageIndex.log
    //#input(void start()): this
    //#input(void start()): this...__Tag
    //#input(void start()): this.__Tag
    //#input(void start()): this.editableTheme
    //#input(void start()): this.editableTheme.__Tag
    //#input(void start()): this.editableTheme.blog
    //#input(void start()): this.editableTheme.name
    //#input(void start()): this.editableTheme.pathToLiveThemes
    //#input(void start()): this.eventDispatcher
    //#input(void start()): this.eventDispatcher.__Tag
    //#input(void start()): this.eventDispatcher.eventListenerList
    //#input(void start()): this.eventDispatcher.eventListenerList.__Tag
    //#input(void start()): this.eventDispatcher.eventListenerList.blogListeners
    //#input(void start()): this.id
    //#input(void start()): this.logger
    //#input(void start()): this.root
    //#input(void start()): this.searchIndex.__Tag
    //#input(void start()): this.searchIndex.blog
    //#input(void start()): this.staticPageIndex.__Tag
    //#output(void start()): new HashMap(reindex#1) num objects
    //#output(void start()): this.messages
    //#output(void start()): this.staticPageIndex.index
    //#output(void start()): this.staticPageIndex.lockAttempts
    //#new obj(void start()): new HashMap(reindex#1)
    //#pre[9] (void start()): net/sourceforge/pebble/domain/Theme.log != null
    //#pre[16] (void start()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[17] (void start()): this.editableTheme != null
    //#pre[18] (void start()): this.editableTheme.__Tag == net/sourceforge/pebble/domain/Theme
    //#pre[19] (void start()): this.editableTheme.blog != null
    //#pre[20] (void start()): init'ed(this.editableTheme.name)
    //#pre[21] (void start()): init'ed(this.editableTheme.pathToLiveThemes)
    //#pre[22] (void start()): this.eventDispatcher != null
    //#pre[23] (void start()): this.eventDispatcher.__Tag == net/sourceforge/pebble/event/DefaultEventDispatcher
    //#pre[24] (void start()): this.eventDispatcher.eventListenerList != null
    //#pre[25] (void start()): this.eventDispatcher.eventListenerList.__Tag == net/sourceforge/pebble/event/EventListenerList
    //#pre[26] (void start()): this.eventDispatcher.eventListenerList.blogListeners != null
    //#pre[27] (void start()): init'ed(this.id)
    //#pre[28] (void start()): this.logger != null
    //#pre[29] (void start()): init'ed(this.root)
    //#presumption(void start()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#post(void start()): possibly_updated(this.messages)
    //#post(void start()): possibly_updated(this.staticPageIndex.index)
    //#post(void start()): possibly_updated(this.staticPageIndex.lockAttempts)
    //#post(void start()): new HashMap(reindex#1) num objects <= 1
    //#unanalyzed(void start()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void start()): Effects-of-calling:getBlog
    //#unanalyzed(void start()): Effects-of-calling:getId
    //#unanalyzed(void start()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void start()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void start()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void start()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void start()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getRoot
    //#unanalyzed(void start()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void start()): Effects-of-calling:java.io.File
    //#unanalyzed(void start()): Effects-of-calling:java.io.File:exists
    //#unanalyzed(void start()): Effects-of-calling:java.io.File:mkdir
    //#unanalyzed(void start()): Effects-of-calling:java.io.File:listFiles
    //#unanalyzed(void start()): Effects-of-calling:java.io.File:isDirectory
    //#unanalyzed(void start()): Effects-of-calling:java.io.File:getName
    //#unanalyzed(void start()): Effects-of-calling:copy
    //#unanalyzed(void start()): Effects-of-calling:java.io.FileInputStream
    //#unanalyzed(void start()): Effects-of-calling:java.io.FileInputStream:getChannel
    //#unanalyzed(void start()): Effects-of-calling:java.io.FileOutputStream
    //#unanalyzed(void start()): Effects-of-calling:java.io.FileOutputStream:getChannel
    //#unanalyzed(void start()): Effects-of-calling:java.nio.channels.FileChannel:size
    //#unanalyzed(void start()): Effects-of-calling:java.nio.channels.FileChannel:transferFrom
    //#unanalyzed(void start()): Effects-of-calling:java.nio.channels.FileChannel:close
    //#unanalyzed(void start()): Effects-of-calling:java.io.File:getAbsolutePath
    //#unanalyzed(void start()): Effects-of-calling:net.sourceforge.pebble.util.FileUtils:deleteFile
    //#unanalyzed(void start()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void start()): Effects-of-calling:java.io.File:renameTo
    //#unanalyzed(void start()): Effects-of-calling:net.sourceforge.pebble.api.event.PebbleEvent
    //#unanalyzed(void start()): Effects-of-calling:getEventListenerList
    //#unanalyzed(void start()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void start()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void start()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void start()): Effects-of-calling:getType
    //#unanalyzed(void start()): Effects-of-calling:isVetoed
    //#unanalyzed(void start()): Effects-of-calling:getBlogListeners
    //#unanalyzed(void start()): Effects-of-calling:blogStarted
    //#unanalyzed(void start()): Effects-of-calling:blogStopped
    //#unanalyzed(void start()): Effects-of-calling:org.apache.commons.logging.Log:info
    //#unanalyzed(void start()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void start()): Effects-of-calling:java.util.List:subList
    //#unanalyzed(void start()): Effects-of-calling:net.sourceforge.pebble.util.SecurityUtils:getUsername
    //#unanalyzed(void start()): Effects-of-calling:java.util.Date
    //#unanalyzed(void start()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void start()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void start()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getIndexesDirectory
    //#unanalyzed(void start()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void start()): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void start()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(void start()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(void start()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void start()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void start()): Effects-of-calling:reindexBlogEntries
    //#unanalyzed(void start()): Effects-of-calling:reindexStaticPages
    //#unanalyzed(void start()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory
    //#unanalyzed(void start()): Effects-of-calling:java.lang.Exception:getMessage
    //#unanalyzed(void start()): Effects-of-calling:getAnalyzer
    //#unanalyzed(void start()): Effects-of-calling:org.apache.lucene.index.IndexWriter:close
    //#unanalyzed(void start()): Effects-of-calling:getLuceneAnalyzer
    //#unanalyzed(void start()): Effects-of-calling:java.lang.Class:forName
    //#unanalyzed(void start()): Effects-of-calling:java.lang.Class:newInstance
    //#unanalyzed(void start()): Effects-of-calling:getDate
    //#unanalyzed(void start()): Effects-of-calling:getAuthor
    //#unanalyzed(void start()): Effects-of-calling:getTitle
    //#unanalyzed(void start()): Effects-of-calling:org.apache.lucene.index.IndexWriter
    //#unanalyzed(void start()): Effects-of-calling:java.util.Collection:iterator
    //#unanalyzed(void start()): Effects-of-calling:org.apache.lucene.document.Document
    //#unanalyzed(void start()): Effects-of-calling:org.apache.lucene.document.Field:Keyword
    //#unanalyzed(void start()): Effects-of-calling:org.apache.lucene.document.Document:add
    //#unanalyzed(void start()): Effects-of-calling:org.apache.lucene.document.Field:Text
    //#unanalyzed(void start()): Effects-of-calling:getPermalink
    //#unanalyzed(void start()): Effects-of-calling:org.apache.lucene.document.DateField:dateToString
    //#unanalyzed(void start()): Effects-of-calling:org.apache.lucene.document.Field:UnIndexed
    //#unanalyzed(void start()): Effects-of-calling:getBody
    //#unanalyzed(void start()): Effects-of-calling:org.apache.lucene.document.Field:UnStored
    //#unanalyzed(void start()): Effects-of-calling:getTruncatedContent
    //#unanalyzed(void start()): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void start()): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void start()): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void start()): Effects-of-calling:org.apache.lucene.index.IndexWriter:addDocument
    //#unanalyzed(void start()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void start()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void start()): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:transformHTML
    //#unanalyzed(void start()): Effects-of-calling:getStaticPageDAO
    //#unanalyzed(void start()): Effects-of-calling:loadStaticPages
    //#unanalyzed(void start()): Effects-of-calling:loadStaticPage
    //#unanalyzed(void start()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void start()): Effects-of-calling:java.io.File:createNewFile
    //#unanalyzed(void start()): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(void start()): Effects-of-calling:java.io.FileWriter
    //#unanalyzed(void start()): Effects-of-calling:java.io.BufferedWriter
    //#unanalyzed(void start()): Effects-of-calling:java.util.Map:keySet
    //#unanalyzed(void start()): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void start()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void start()): Effects-of-calling:java.io.BufferedWriter:write
    //#unanalyzed(void start()): Effects-of-calling:java.io.BufferedWriter:newLine
    //#unanalyzed(void start()): Effects-of-calling:java.io.BufferedWriter:flush
    //#unanalyzed(void start()): Effects-of-calling:java.io.BufferedWriter:close
    //#unanalyzed(void start()): Effects-of-calling:java.io.File:delete
    //#unanalyzed(void start()): Effects-of-calling:getName
    //#unanalyzed(void start()): Effects-of-calling:net.sourceforge.pebble.domain.StaticPage:getId
    //#unanalyzed(void start()): Effects-of-calling:index
    //#unanalyzed(void start()): Effects-of-calling:java.util.EventObject
    //#unanalyzed(void start()): Effects-of-calling:java.util.Timer:schedule
    //#unanalyzed(void start()): Effects-of-calling:java.util.Timer:cancel
    //#unanalyzed(void start()): Effects-of-calling:getLocalPermalink
    //#unanalyzed(void start()): Effects-of-calling:getUrl
    //#unanalyzed(void start()): Effects-of-calling:getContent
    //#unanalyzed(void start()): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:truncate
    //#unanalyzed(void start()): Effects-of-calling:net.sourceforge.pebble.api.event.blog.BlogEvent:getSource
    //#unanalyzed(void start()): Effects-of-calling:getPermalinkProvider
    //#test_vector(void start()): java.io.File:exists(...)@1575: {1}, {0}
    //#test_vector(void start()): java.io.File:exists(...)@1581: {1}, {0}
    //#test_vector(void start()): java.io.File:exists(...)@1586: {1}, {0}
    //#test_vector(void start()): java.io.File:exists(...)@1591: {1}, {0}

    // reindex the blog if the indexes don't exist
    File indexes = new File(getIndexesDirectory());
    if (!indexes.exists()) {
      indexes.mkdir();
      reindex();
    }

    File imagesDirectory = new File(getImagesDirectory());
    if (!imagesDirectory.exists()) {
      imagesDirectory.mkdir();
    }

    File filesDirectory = new File(getFilesDirectory());
    if (!filesDirectory.exists()) {
      filesDirectory.mkdir();
    }

    File logDirectory = new File(getLogsDirectory());
    if (!logDirectory.exists()) {
      logDirectory.mkdir();
    }

    logger.start();
    //#blog.java:1595: Warning: method not available
    //#    -- call on void net.sourceforge.pebble.logging.AbstractLogger:start()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void start()
    //#    unanalyzed callee: void net.sourceforge.pebble.logging.AbstractLogger:start()
    editableTheme.restore();

    // call blog listeners
    eventDispatcher.fireBlogEvent(new BlogEvent(this, BlogEvent.BLOG_STARTED));
    //#blog.java:1599: Warning: method not available
    //#    -- call on void fireBlogEvent(BlogEvent)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void start()
    //#    unanalyzed callee: void fireBlogEvent(BlogEvent)
    log.info("Started blog with ID " + getId());
    //#blog.java:1600: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:info(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void start()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:info(Object)
  }
    //#blog.java:1601: end of method: void net.sourceforge.pebble.domain.Blog.start()

  /**
   * Called to shutdown this blog.
   */
  void stop() {
    log.debug("Stopping blog with ID " + getId());
    //#blog.java:1607: method: void net.sourceforge.pebble.domain.Blog.stop()
    //#blog.java:1607: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void stop()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void stop()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void stop()): __Descendant_Table[others]
    //#input(void stop()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(void stop()): log
    //#input(void stop()): net/sourceforge/pebble/api/event/EventDispatcher.__Descendant_Table[net/sourceforge/pebble/api/event/EventDispatcher]
    //#input(void stop()): net/sourceforge/pebble/api/event/EventDispatcher.__Descendant_Table[net/sourceforge/pebble/event/DefaultEventDispatcher]
    //#input(void stop()): net/sourceforge/pebble/api/event/EventDispatcher.__Descendant_Table[others]
    //#input(void stop()): net/sourceforge/pebble/api/event/EventDispatcher.__Dispatch_Table.fireBlogEvent(Lnet/sourceforge/pebble/api/event/blog/BlogEvent;)V
    //#input(void stop()): net/sourceforge/pebble/api/event/blog/BlogEvent.__Descendant_Table[net/sourceforge/pebble/api/event/blog/BlogEvent]
    //#input(void stop()): net/sourceforge/pebble/api/event/blog/BlogEvent.__Descendant_Table[others]
    //#input(void stop()): net/sourceforge/pebble/api/event/blog/BlogEvent.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void stop()): net/sourceforge/pebble/api/event/blog/BlogEvent.__Dispatch_Table.getType()I
    //#input(void stop()): net/sourceforge/pebble/api/event/blog/BlogEvent.__Dispatch_Table.isVetoed()Z
    //#input(void stop()): net/sourceforge/pebble/api/event/blog/BlogListener.__Descendant_Table[net/sourceforge/pebble/api/event/blog/BlogListener]
    //#input(void stop()): net/sourceforge/pebble/api/event/blog/BlogListener.__Descendant_Table[net/sourceforge/pebble/event/blog/PebbleAPIBlogEntryAggregator]
    //#input(void stop()): net/sourceforge/pebble/api/event/blog/BlogListener.__Descendant_Table[others]
    //#input(void stop()): net/sourceforge/pebble/api/event/blog/BlogListener.__Dispatch_Table.blogStarted(Lnet/sourceforge/pebble/api/event/blog/BlogEvent;)V
    //#input(void stop()): net/sourceforge/pebble/api/event/blog/BlogListener.__Dispatch_Table.blogStopped(Lnet/sourceforge/pebble/api/event/blog/BlogEvent;)V
    //#input(void stop()): net/sourceforge/pebble/domain/Theme.__Descendant_Table[net/sourceforge/pebble/domain/Theme]
    //#input(void stop()): net/sourceforge/pebble/domain/Theme.__Descendant_Table[others]
    //#input(void stop()): net/sourceforge/pebble/domain/Theme.__Dispatch_Table.backup()V
    //#input(void stop()): net/sourceforge/pebble/domain/Theme.__Dispatch_Table.getBackupThemeDirectory()Ljava/lang/String;
    //#input(void stop()): net/sourceforge/pebble/domain/Theme.log
    //#input(void stop()): net/sourceforge/pebble/event/DefaultEventDispatcher.__Descendant_Table[net/sourceforge/pebble/event/DefaultEventDispatcher]
    //#input(void stop()): net/sourceforge/pebble/event/DefaultEventDispatcher.__Descendant_Table[others]
    //#input(void stop()): net/sourceforge/pebble/event/DefaultEventDispatcher.__Dispatch_Table.fireBlogEvent(Lnet/sourceforge/pebble/api/event/blog/BlogEvent;)V
    //#input(void stop()): net/sourceforge/pebble/event/DefaultEventDispatcher.__Dispatch_Table.getEventListenerList()Lnet/sourceforge/pebble/event/EventListenerList;
    //#input(void stop()): net/sourceforge/pebble/event/EventListenerList.__Descendant_Table[net/sourceforge/pebble/event/EventListenerList]
    //#input(void stop()): net/sourceforge/pebble/event/EventListenerList.__Descendant_Table[others]
    //#input(void stop()): net/sourceforge/pebble/event/EventListenerList.__Dispatch_Table.getBlogListeners()Ljava/util/List;
    //#input(void stop()): net/sourceforge/pebble/event/blog/PebbleAPIBlogEntryAggregator.__Dispatch_Table.blogStarted(Lnet/sourceforge/pebble/api/event/blog/BlogEvent;)V
    //#input(void stop()): net/sourceforge/pebble/event/blog/PebbleAPIBlogEntryAggregator.__Dispatch_Table.blogStopped(Lnet/sourceforge/pebble/api/event/blog/BlogEvent;)V
    //#input(void stop()): this
    //#input(void stop()): this.__Tag
    //#input(void stop()): this.editableTheme
    //#input(void stop()): this.editableTheme.__Tag
    //#input(void stop()): this.editableTheme.blog
    //#input(void stop()): this.editableTheme.name
    //#input(void stop()): this.editableTheme.pathToLiveThemes
    //#input(void stop()): this.eventDispatcher
    //#input(void stop()): this.eventDispatcher.__Tag
    //#input(void stop()): this.eventDispatcher.eventListenerList
    //#input(void stop()): this.eventDispatcher.eventListenerList.__Tag
    //#input(void stop()): this.eventDispatcher.eventListenerList.blogListeners
    //#input(void stop()): this.id
    //#input(void stop()): this.logger
    //#pre[1] (void stop()): net/sourceforge/pebble/domain/Theme.log != null
    //#pre[3] (void stop()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[4] (void stop()): this.editableTheme != null
    //#pre[5] (void stop()): this.editableTheme.__Tag == net/sourceforge/pebble/domain/Theme
    //#pre[6] (void stop()): this.editableTheme.blog != null
    //#pre[7] (void stop()): init'ed(this.editableTheme.name)
    //#pre[8] (void stop()): init'ed(this.editableTheme.pathToLiveThemes)
    //#pre[9] (void stop()): this.eventDispatcher != null
    //#pre[10] (void stop()): this.eventDispatcher.__Tag == net/sourceforge/pebble/event/DefaultEventDispatcher
    //#pre[11] (void stop()): this.eventDispatcher.eventListenerList != null
    //#pre[12] (void stop()): this.eventDispatcher.eventListenerList.__Tag == net/sourceforge/pebble/event/EventListenerList
    //#pre[13] (void stop()): this.eventDispatcher.eventListenerList.blogListeners != null
    //#pre[14] (void stop()): init'ed(this.id)
    //#pre[15] (void stop()): this.logger != null
    //#presumption(void stop()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#unanalyzed(void stop()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getRoot
    //#unanalyzed(void stop()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void stop()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void stop()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void stop()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void stop()): Effects-of-calling:java.io.File
    //#unanalyzed(void stop()): Effects-of-calling:java.io.File:exists
    //#unanalyzed(void stop()): Effects-of-calling:java.io.File:mkdir
    //#unanalyzed(void stop()): Effects-of-calling:java.io.File:listFiles
    //#unanalyzed(void stop()): Effects-of-calling:java.io.File:isDirectory
    //#unanalyzed(void stop()): Effects-of-calling:java.io.File:getName
    //#unanalyzed(void stop()): Effects-of-calling:copy
    //#unanalyzed(void stop()): Effects-of-calling:java.io.FileInputStream
    //#unanalyzed(void stop()): Effects-of-calling:java.io.FileInputStream:getChannel
    //#unanalyzed(void stop()): Effects-of-calling:java.io.FileOutputStream
    //#unanalyzed(void stop()): Effects-of-calling:java.io.FileOutputStream:getChannel
    //#unanalyzed(void stop()): Effects-of-calling:java.nio.channels.FileChannel:size
    //#unanalyzed(void stop()): Effects-of-calling:java.nio.channels.FileChannel:transferFrom
    //#unanalyzed(void stop()): Effects-of-calling:java.nio.channels.FileChannel:close
    //#unanalyzed(void stop()): Effects-of-calling:java.io.File:getAbsolutePath
    //#unanalyzed(void stop()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void stop()): Effects-of-calling:net.sourceforge.pebble.util.FileUtils:deleteFile
    //#unanalyzed(void stop()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void stop()): Effects-of-calling:java.io.File:renameTo
    //#unanalyzed(void stop()): Effects-of-calling:net.sourceforge.pebble.api.event.PebbleEvent
    //#unanalyzed(void stop()): Effects-of-calling:getEventListenerList
    //#unanalyzed(void stop()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void stop()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void stop()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void stop()): Effects-of-calling:getType
    //#unanalyzed(void stop()): Effects-of-calling:isVetoed
    //#unanalyzed(void stop()): Effects-of-calling:getBlogListeners
    //#unanalyzed(void stop()): Effects-of-calling:blogStarted
    //#unanalyzed(void stop()): Effects-of-calling:blogStopped
    //#unanalyzed(void stop()): Effects-of-calling:java.util.EventObject
    //#unanalyzed(void stop()): Effects-of-calling:getBlog
    //#unanalyzed(void stop()): Effects-of-calling:java.util.Timer:schedule
    //#unanalyzed(void stop()): Effects-of-calling:java.util.Timer:cancel
    //#unanalyzed(void stop()): Effects-of-calling:net.sourceforge.pebble.api.event.blog.BlogEvent:getSource

    logger.stop();
    //#blog.java:1609: Warning: method not available
    //#    -- call on void net.sourceforge.pebble.logging.AbstractLogger:stop()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void stop()
    //#    unanalyzed callee: void net.sourceforge.pebble.logging.AbstractLogger:stop()
    editableTheme.backup();

    // call blog listeners
    eventDispatcher.fireBlogEvent(new BlogEvent(this, BlogEvent.BLOG_STOPPED));
    //#blog.java:1613: Warning: method not available
    //#    -- call on void fireBlogEvent(BlogEvent)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void stop()
    //#    unanalyzed callee: void fireBlogEvent(BlogEvent)
    log.info("Stopped blog with ID " + getId());
    //#blog.java:1614: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:info(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void stop()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:info(Object)
  }
    //#blog.java:1615: end of method: void net.sourceforge.pebble.domain.Blog.stop()

  /**
   * Gets the logger associated with this blog.
   *
   * @return    an AbstractLogger implementation
   */
  public AbstractLogger getLogger() {
    return this.logger;
    //#blog.java:1623: method: AbstractLogger net.sourceforge.pebble.domain.Blog.getLogger()
    //#input(AbstractLogger getLogger()): this
    //#input(AbstractLogger getLogger()): this.logger
    //#output(AbstractLogger getLogger()): return_value
    //#pre[2] (AbstractLogger getLogger()): init'ed(this.logger)
    //#post(AbstractLogger getLogger()): return_value == this.logger
    //#post(AbstractLogger getLogger()): init'ed(return_value)
    //#blog.java:1623: end of method: AbstractLogger net.sourceforge.pebble.domain.Blog.getLogger()
  }

  /**
   * Gets the list of plugins.
   *
   * @return  a comma separated list of class names
   */
  public List<String> getContentDecorators() {
    return getStringsFromProperty(CONTENT_DECORATORS_KEY);
    //#blog.java:1632: method: List net.sourceforge.pebble.domain.Blog.getContentDecorators()
    //#input(List getContentDecorators()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getContentDecorators()): __Descendant_Table[others]
    //#input(List getContentDecorators()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(List getContentDecorators()): this
    //#input(List getContentDecorators()): this.__Tag
    //#input(List getContentDecorators()): this.properties
    //#output(List getContentDecorators()): new ArrayList(getStringsFromProperty#1) num objects
    //#output(List getContentDecorators()): return_value
    //#new obj(List getContentDecorators()): new ArrayList(getStringsFromProperty#1)
    //#pre[2] (List getContentDecorators()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (List getContentDecorators()): this.properties != null
    //#post(List getContentDecorators()): return_value == &new ArrayList(getStringsFromProperty#1)
    //#post(List getContentDecorators()): new ArrayList(getStringsFromProperty#1) num objects == 1
    //#unanalyzed(List getContentDecorators()): Effects-of-calling:java.lang.String:split
    //#unanalyzed(List getContentDecorators()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getContentDecorators()): Effects-of-calling:java.util.List:add
    //#unanalyzed(List getContentDecorators()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(List getContentDecorators()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(List getContentDecorators()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(List getContentDecorators()): Effects-of-calling:java.lang.String:startsWith
    //#blog.java:1632: end of method: List net.sourceforge.pebble.domain.Blog.getContentDecorators()
  }

  /**
   * Gets the decorator manager associated with this blog.
   *
   * @return  a BlogEntryDecoratorManager instance
   */
  public ContentDecoratorChain getContentDecoratorChain() {
    return this.decoratorChain;
    //#blog.java:1641: method: ContentDecoratorChain net.sourceforge.pebble.domain.Blog.getContentDecoratorChain()
    //#input(ContentDecoratorChain getContentDecoratorChain()): this
    //#input(ContentDecoratorChain getContentDecoratorChain()): this.decoratorChain
    //#output(ContentDecoratorChain getContentDecoratorChain()): return_value
    //#pre[2] (ContentDecoratorChain getContentDecoratorChain()): init'ed(this.decoratorChain)
    //#post(ContentDecoratorChain getContentDecoratorChain()): return_value == this.decoratorChain
    //#post(ContentDecoratorChain getContentDecoratorChain()): init'ed(return_value)
    //#blog.java:1641: end of method: ContentDecoratorChain net.sourceforge.pebble.domain.Blog.getContentDecoratorChain()
  }

  /**
   * Gets the list of blog listeners as strings.
   *
   * @return  The list of class names
   */
  public List<String> getBlogListeners() {
    return getStringsFromProperty(BLOG_LISTENERS_KEY);
    //#blog.java:1650: method: List net.sourceforge.pebble.domain.Blog.getBlogListeners()
    //#input(List getBlogListeners()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getBlogListeners()): __Descendant_Table[others]
    //#input(List getBlogListeners()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(List getBlogListeners()): this
    //#input(List getBlogListeners()): this.__Tag
    //#input(List getBlogListeners()): this.properties
    //#output(List getBlogListeners()): new ArrayList(getStringsFromProperty#1) num objects
    //#output(List getBlogListeners()): return_value
    //#new obj(List getBlogListeners()): new ArrayList(getStringsFromProperty#1)
    //#pre[2] (List getBlogListeners()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (List getBlogListeners()): this.properties != null
    //#post(List getBlogListeners()): return_value == &new ArrayList(getStringsFromProperty#1)
    //#post(List getBlogListeners()): new ArrayList(getStringsFromProperty#1) num objects == 1
    //#unanalyzed(List getBlogListeners()): Effects-of-calling:java.lang.String:split
    //#unanalyzed(List getBlogListeners()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getBlogListeners()): Effects-of-calling:java.util.List:add
    //#unanalyzed(List getBlogListeners()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(List getBlogListeners()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(List getBlogListeners()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(List getBlogListeners()): Effects-of-calling:java.lang.String:startsWith
    //#blog.java:1650: end of method: List net.sourceforge.pebble.domain.Blog.getBlogListeners()
  }

  /**
   * Gets the list of blog entry listeners as strings.
   *
   * @return  The list of class names
   */
  public List<String> getBlogEntryListeners() {
    return getStringsFromProperty(BLOG_ENTRY_LISTENERS_KEY);
    //#blog.java:1659: method: List net.sourceforge.pebble.domain.Blog.getBlogEntryListeners()
    //#input(List getBlogEntryListeners()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getBlogEntryListeners()): __Descendant_Table[others]
    //#input(List getBlogEntryListeners()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(List getBlogEntryListeners()): this
    //#input(List getBlogEntryListeners()): this.__Tag
    //#input(List getBlogEntryListeners()): this.properties
    //#output(List getBlogEntryListeners()): new ArrayList(getStringsFromProperty#1) num objects
    //#output(List getBlogEntryListeners()): return_value
    //#new obj(List getBlogEntryListeners()): new ArrayList(getStringsFromProperty#1)
    //#pre[2] (List getBlogEntryListeners()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (List getBlogEntryListeners()): this.properties != null
    //#post(List getBlogEntryListeners()): return_value == &new ArrayList(getStringsFromProperty#1)
    //#post(List getBlogEntryListeners()): new ArrayList(getStringsFromProperty#1) num objects == 1
    //#unanalyzed(List getBlogEntryListeners()): Effects-of-calling:java.lang.String:split
    //#unanalyzed(List getBlogEntryListeners()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getBlogEntryListeners()): Effects-of-calling:java.util.List:add
    //#unanalyzed(List getBlogEntryListeners()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(List getBlogEntryListeners()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(List getBlogEntryListeners()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(List getBlogEntryListeners()): Effects-of-calling:java.lang.String:startsWith
    //#blog.java:1659: end of method: List net.sourceforge.pebble.domain.Blog.getBlogEntryListeners()
  }

  /**
   * Gets the list of comment listeners as strings.
   *
   * @return  The list of class names
   */
  public List<String> getCommentListeners() {
    return getStringsFromProperty(COMMENT_LISTENERS_KEY);
    //#blog.java:1668: method: List net.sourceforge.pebble.domain.Blog.getCommentListeners()
    //#input(List getCommentListeners()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getCommentListeners()): __Descendant_Table[others]
    //#input(List getCommentListeners()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(List getCommentListeners()): this
    //#input(List getCommentListeners()): this.__Tag
    //#input(List getCommentListeners()): this.properties
    //#output(List getCommentListeners()): new ArrayList(getStringsFromProperty#1) num objects
    //#output(List getCommentListeners()): return_value
    //#new obj(List getCommentListeners()): new ArrayList(getStringsFromProperty#1)
    //#pre[2] (List getCommentListeners()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (List getCommentListeners()): this.properties != null
    //#post(List getCommentListeners()): return_value == &new ArrayList(getStringsFromProperty#1)
    //#post(List getCommentListeners()): new ArrayList(getStringsFromProperty#1) num objects == 1
    //#unanalyzed(List getCommentListeners()): Effects-of-calling:java.lang.String:split
    //#unanalyzed(List getCommentListeners()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getCommentListeners()): Effects-of-calling:java.util.List:add
    //#unanalyzed(List getCommentListeners()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(List getCommentListeners()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(List getCommentListeners()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(List getCommentListeners()): Effects-of-calling:java.lang.String:startsWith
    //#blog.java:1668: end of method: List net.sourceforge.pebble.domain.Blog.getCommentListeners()
  }

  /**
   * Gets the list of TrackBack listeners as strings.
   *
   * @return  The list of class names
   */
  public List<String> getTrackBackListeners() {
    return getStringsFromProperty(TRACKBACK_LISTENERS_KEY);
    //#blog.java:1677: method: List net.sourceforge.pebble.domain.Blog.getTrackBackListeners()
    //#input(List getTrackBackListeners()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getTrackBackListeners()): __Descendant_Table[others]
    //#input(List getTrackBackListeners()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(List getTrackBackListeners()): this
    //#input(List getTrackBackListeners()): this.__Tag
    //#input(List getTrackBackListeners()): this.properties
    //#output(List getTrackBackListeners()): new ArrayList(getStringsFromProperty#1) num objects
    //#output(List getTrackBackListeners()): return_value
    //#new obj(List getTrackBackListeners()): new ArrayList(getStringsFromProperty#1)
    //#pre[2] (List getTrackBackListeners()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (List getTrackBackListeners()): this.properties != null
    //#post(List getTrackBackListeners()): return_value == &new ArrayList(getStringsFromProperty#1)
    //#post(List getTrackBackListeners()): new ArrayList(getStringsFromProperty#1) num objects == 1
    //#unanalyzed(List getTrackBackListeners()): Effects-of-calling:java.lang.String:split
    //#unanalyzed(List getTrackBackListeners()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(List getTrackBackListeners()): Effects-of-calling:java.util.List:add
    //#unanalyzed(List getTrackBackListeners()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(List getTrackBackListeners()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(List getTrackBackListeners()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(List getTrackBackListeners()): Effects-of-calling:java.lang.String:startsWith
    //#blog.java:1677: end of method: List net.sourceforge.pebble.domain.Blog.getTrackBackListeners()
  }

  /**
   * Gets the name the event dispatcher.
   *
   * @return  a String
   */
  public String getEventDispatcherName() {
    return getProperty(EVENT_DISPATCHER_KEY);
    //#blog.java:1686: method: String net.sourceforge.pebble.domain.Blog.getEventDispatcherName()
    //#input(String getEventDispatcherName()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getEventDispatcherName()): __Descendant_Table[others]
    //#input(String getEventDispatcherName()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(String getEventDispatcherName()): this
    //#input(String getEventDispatcherName()): this.__Tag
    //#input(String getEventDispatcherName()): this.properties
    //#output(String getEventDispatcherName()): return_value
    //#pre[2] (String getEventDispatcherName()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (String getEventDispatcherName()): this.properties != null
    //#post(String getEventDispatcherName()): init'ed(return_value)
    //#unanalyzed(String getEventDispatcherName()): Effects-of-calling:java.util.Properties:getProperty
    //#blog.java:1686: end of method: String net.sourceforge.pebble.domain.Blog.getEventDispatcherName()
  }

  /**
   * Gets the event dispatcher in use.
   *
   * @return  an EventDispatcher implementation
   */
  public EventDispatcher getEventDispatcher() {
    return this.eventDispatcher;
    //#blog.java:1695: method: EventDispatcher net.sourceforge.pebble.domain.Blog.getEventDispatcher()
    //#input(EventDispatcher getEventDispatcher()): this
    //#input(EventDispatcher getEventDispatcher()): this.eventDispatcher
    //#output(EventDispatcher getEventDispatcher()): return_value
    //#pre[2] (EventDispatcher getEventDispatcher()): init'ed(this.eventDispatcher)
    //#post(EventDispatcher getEventDispatcher()): return_value == this.eventDispatcher
    //#post(EventDispatcher getEventDispatcher()): init'ed(return_value)
    //#blog.java:1695: end of method: EventDispatcher net.sourceforge.pebble.domain.Blog.getEventDispatcher()
  }

  /**
   * Gets the event listsner list.
   */
  public EventListenerList getEventListenerList() {
    return this.eventListenerList;
    //#blog.java:1702: method: EventListenerList net.sourceforge.pebble.domain.Blog.getEventListenerList()
    //#input(EventListenerList getEventListenerList()): this
    //#input(EventListenerList getEventListenerList()): this.eventListenerList
    //#output(EventListenerList getEventListenerList()): return_value
    //#pre[2] (EventListenerList getEventListenerList()): init'ed(this.eventListenerList)
    //#post(EventListenerList getEventListenerList()): return_value == this.eventListenerList
    //#post(EventListenerList getEventListenerList()): init'ed(return_value)
    //#blog.java:1702: end of method: EventListenerList net.sourceforge.pebble.domain.Blog.getEventListenerList()
  }

  public PluginProperties getPluginProperties() {
    return this.pluginProperties;
    //#blog.java:1706: method: PluginProperties net.sourceforge.pebble.domain.Blog.getPluginProperties()
    //#input(PluginProperties getPluginProperties()): this
    //#input(PluginProperties getPluginProperties()): this.pluginProperties
    //#output(PluginProperties getPluginProperties()): return_value
    //#pre[2] (PluginProperties getPluginProperties()): init'ed(this.pluginProperties)
    //#post(PluginProperties getPluginProperties()): return_value == this.pluginProperties
    //#post(PluginProperties getPluginProperties()): init'ed(return_value)
    //#blog.java:1706: end of method: PluginProperties net.sourceforge.pebble.domain.Blog.getPluginProperties()
  }

  /**
   * Gets the name of the permalink provider.
   *
   * @return    the fully qualified class name of the permalink provider
   */
  public String getPermalinkProviderName() {
    return properties.getProperty(PERMALINK_PROVIDER_KEY);
    //#blog.java:1715: method: String net.sourceforge.pebble.domain.Blog.getPermalinkProviderName()
    //#input(String getPermalinkProviderName()): this
    //#input(String getPermalinkProviderName()): this.properties
    //#output(String getPermalinkProviderName()): return_value
    //#pre[2] (String getPermalinkProviderName()): this.properties != null
    //#post(String getPermalinkProviderName()): init'ed(return_value)
    //#blog.java:1715: end of method: String net.sourceforge.pebble.domain.Blog.getPermalinkProviderName()
  }

  /**
   * Gets the permalink provider in use.
   *
   * @return  a PermalinkProvider instance
   */
  public PermalinkProvider getPermalinkProvider() {
    return this.permalinkProvider;
    //#blog.java:1724: method: PermalinkProvider net.sourceforge.pebble.domain.Blog.getPermalinkProvider()
    //#input(PermalinkProvider getPermalinkProvider()): this
    //#input(PermalinkProvider getPermalinkProvider()): this.permalinkProvider
    //#output(PermalinkProvider getPermalinkProvider()): return_value
    //#pre[2] (PermalinkProvider getPermalinkProvider()): init'ed(this.permalinkProvider)
    //#post(PermalinkProvider getPermalinkProvider()): return_value == this.permalinkProvider
    //#post(PermalinkProvider getPermalinkProvider()): init'ed(return_value)
    //#blog.java:1724: end of method: PermalinkProvider net.sourceforge.pebble.domain.Blog.getPermalinkProvider()
  }

  /**
   * Sets the permalink provider in use.
   *
   * @param provider    PermalinkProvider instance
   */
  public void setPermalinkProvider(PermalinkProvider provider) {
    this.permalinkProvider = provider;
    //#blog.java:1733: method: void net.sourceforge.pebble.domain.Blog.setPermalinkProvider(PermalinkProvider)
    //#input(void setPermalinkProvider(PermalinkProvider)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(void setPermalinkProvider(PermalinkProvider)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(void setPermalinkProvider(PermalinkProvider)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void setPermalinkProvider(PermalinkProvider)): provider
    //#input(void setPermalinkProvider(PermalinkProvider)): provider.__Tag
    //#input(void setPermalinkProvider(PermalinkProvider)): this
    //#input(void setPermalinkProvider(PermalinkProvider)): this.permalinkProvider.__Tag
    //#output(void setPermalinkProvider(PermalinkProvider)): this.permalinkProvider
    //#pre[1] (void setPermalinkProvider(PermalinkProvider)): provider != null
    //#pre[2] (void setPermalinkProvider(PermalinkProvider)): provider.__Tag == net/sourceforge/pebble/api/permalink/PermalinkProvider
    //#post(void setPermalinkProvider(PermalinkProvider)): this.permalinkProvider == provider
    //#post(void setPermalinkProvider(PermalinkProvider)): this.permalinkProvider != null
    this.permalinkProvider.setBlog(this);
    //#blog.java:1734: Warning: method not available
    //#    -- call on void setBlog(Blog)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void setPermalinkProvider(PermalinkProvider)
    //#    unanalyzed callee: void setBlog(Blog)
  }
    //#blog.java:1735: end of method: void net.sourceforge.pebble.domain.Blog.setPermalinkProvider(PermalinkProvider)

  public void reindex() {
    log.info("Reindexing blog with ID " + getId());
    //#blog.java:1738: method: void net.sourceforge.pebble.domain.Blog.reindex()
    //#blog.java:1738: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:info(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void reindex()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:info(Object)
    //#input(void reindex()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void reindex()): __Descendant_Table[others]
    //#input(void reindex()): __Dispatch_Table.error(Ljava/lang/String;)V
    //#input(void reindex()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(void reindex()): __Dispatch_Table.getLuceneAnalyzer()Ljava/lang/String;
    //#input(void reindex()): __Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#input(void reindex()): __Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void reindex()): __Dispatch_Table.info(Ljava/lang/String;)V
    //#input(void reindex()): __Dispatch_Table.reindexBlogEntries()V
    //#input(void reindex()): __Dispatch_Table.reindexStaticPages()V
    //#input(void reindex()): log
    //#input(void reindex()): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(void reindex()): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(void reindex()): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(void reindex()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(void reindex()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(void reindex()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.getPermalink(Lnet/sourceforge/pebble/domain/BlogEntry;)Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[net/sourceforge/pebble/dao/DAOFactory]
    //#input(void reindex()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[net/sourceforge/pebble/dao/file/FileDAOFactory]
    //#input(void reindex()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[others]
    //#input(void reindex()): net/sourceforge/pebble/dao/DAOFactory.__Dispatch_Table.getStaticPageDAO()Lnet/sourceforge/pebble/dao/StaticPageDAO;
    //#input(void reindex()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory.__Tag
    //#input(void reindex()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory.staticPageDAO.__Tag
    //#input(void reindex()): net/sourceforge/pebble/dao/StaticPageDAO.__Descendant_Table[net/sourceforge/pebble/dao/StaticPageDAO]
    //#input(void reindex()): net/sourceforge/pebble/dao/StaticPageDAO.__Descendant_Table[net/sourceforge/pebble/dao/file/FileStaticPageDAO]
    //#input(void reindex()): net/sourceforge/pebble/dao/StaticPageDAO.__Descendant_Table[others]
    //#input(void reindex()): net/sourceforge/pebble/dao/StaticPageDAO.__Dispatch_Table.loadStaticPages(Lnet/sourceforge/pebble/domain/Blog;)Ljava/util/Collection;
    //#input(void reindex()): net/sourceforge/pebble/dao/file/FileDAOFactory.__Dispatch_Table.getStaticPageDAO()Lnet/sourceforge/pebble/dao/StaticPageDAO;
    //#input(void reindex()): net/sourceforge/pebble/dao/file/FileStaticPageDAO.__Descendant_Table[net/sourceforge/pebble/dao/file/FileStaticPageDAO]
    //#input(void reindex()): net/sourceforge/pebble/dao/file/FileStaticPageDAO.__Descendant_Table[others]
    //#input(void reindex()): net/sourceforge/pebble/dao/file/FileStaticPageDAO.__Dispatch_Table.loadStaticPage(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/StaticPage;
    //#input(void reindex()): net/sourceforge/pebble/dao/file/FileStaticPageDAO.__Dispatch_Table.loadStaticPages(Lnet/sourceforge/pebble/domain/Blog;)Ljava/util/Collection;
    //#input(void reindex()): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void reindex()): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(void reindex()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void reindex()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isAggregated()Z
    //#input(void reindex()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(void reindex()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(void reindex()): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(void reindex()): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(void reindex()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void reindex()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void reindex()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void reindex()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void reindex()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Content]
    //#input(void reindex()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void reindex()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void reindex()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void reindex()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void reindex()): net/sourceforge/pebble/domain/Content.__Descendant_Table[others]
    //#input(void reindex()): net/sourceforge/pebble/domain/Content.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/Message.__Descendant_Table[net/sourceforge/pebble/domain/Message]
    //#input(void reindex()): net/sourceforge/pebble/domain/Message.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/MessageType.ERROR
    //#input(void reindex()): net/sourceforge/pebble/domain/MessageType.INFO
    //#input(void reindex()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void reindex()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void reindex()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void reindex()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(void reindex()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.isAggregated()Z
    //#input(void reindex()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[others]
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getAuthor()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getPermalink()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getTitle()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getTruncatedContent()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.isAggregated()Z
    //#input(void reindex()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void reindex()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(void reindex()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#input(void reindex()): net/sourceforge/pebble/index/SearchIndex.__Descendant_Table[net/sourceforge/pebble/index/SearchIndex]
    //#input(void reindex()): net/sourceforge/pebble/index/SearchIndex.__Descendant_Table[others]
    //#input(void reindex()): net/sourceforge/pebble/index/SearchIndex.__Dispatch_Table.indexStaticPages(Ljava/util/Collection;)V
    //#input(void reindex()): net/sourceforge/pebble/index/SearchIndex.log
    //#input(void reindex()): net/sourceforge/pebble/index/StaticPageIndex.__Descendant_Table[net/sourceforge/pebble/index/StaticPageIndex]
    //#input(void reindex()): net/sourceforge/pebble/index/StaticPageIndex.__Descendant_Table[others]
    //#input(void reindex()): net/sourceforge/pebble/index/StaticPageIndex.__Dispatch_Table.reindex(Ljava/util/Collection;)V
    //#input(void reindex()): net/sourceforge/pebble/index/StaticPageIndex.log
    //#input(void reindex()): this
    //#input(void reindex()): this.__Tag
    //#input(void reindex()): this.id
    //#output(void reindex()): new HashMap(reindex#1) num objects
    //#output(void reindex()): this.messages
    //#output(void reindex()): this.staticPageIndex.index
    //#output(void reindex()): this.staticPageIndex.lockAttempts
    //#new obj(void reindex()): new HashMap(reindex#1)
    //#pre[12] (void reindex()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[13] (void reindex()): init'ed(this.id)
    //#presumption(void reindex()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory.__Tag@1740 in {net/sourceforge/pebble/dao/DAOFactory, net/sourceforge/pebble/dao/file/FileDAOFactory}
    //#presumption(void reindex()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory.staticPageDAO@1740 != null
    //#presumption(void reindex()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory@1740 != null
    //#presumption(void reindex()): net/sourceforge/pebble/domain/AbstractBlog.log@1740 != null
    //#presumption(void reindex()): net/sourceforge/pebble/domain/BlogManager.instance.__Tag@1740 == net/sourceforge/pebble/domain/BlogManager
    //#presumption(void reindex()): net/sourceforge/pebble/domain/BlogManager.instance@1740 != null
    //#presumption(void reindex()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#presumption(void reindex()): this...__Tag@1740 == net/sourceforge/pebble/domain/Blog
    //#presumption(void reindex()): this...properties@1740 != null
    //#presumption(void reindex()): this.__Tag@1740 == net/sourceforge/pebble/domain/Blog
    //#presumption(void reindex()): this.messages@1740 != null
    //#presumption(void reindex()): this.searchIndex.__Tag@1740 == net/sourceforge/pebble/index/SearchIndex
    //#presumption(void reindex()): this.searchIndex.blog@1740 != null
    //#presumption(void reindex()): this.searchIndex@1740 != null
    //#presumption(void reindex()): this.staticPageIndex.__Tag@1740 == net/sourceforge/pebble/index/StaticPageIndex
    //#presumption(void reindex()): this.staticPageIndex.blog@1740 != null
    //#presumption(void reindex()): this.staticPageIndex.lockAttempts@1740 <= 4_294_967_294
    //#presumption(void reindex()): this.staticPageIndex@1740 != null
    //#post(void reindex()): init'ed(this.messages)
    //#post(void reindex()): possibly_updated(this.staticPageIndex.index)
    //#post(void reindex()): possibly_updated(this.staticPageIndex.lockAttempts)
    //#post(void reindex()): new HashMap(reindex#1) num objects <= 1
    //#unanalyzed(void reindex()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void reindex()): Effects-of-calling:getBlog
    //#unanalyzed(void reindex()): Effects-of-calling:getId
    //#unanalyzed(void reindex()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void reindex()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void reindex()): Effects-of-calling:java.util.List:subList
    //#unanalyzed(void reindex()): Effects-of-calling:net.sourceforge.pebble.util.SecurityUtils:getUsername
    //#unanalyzed(void reindex()): Effects-of-calling:java.util.Date
    //#unanalyzed(void reindex()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void reindex()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getIndexesDirectory
    //#unanalyzed(void reindex()): Effects-of-calling:java.io.File
    //#unanalyzed(void reindex()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void reindex()): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void reindex()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(void reindex()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void reindex()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.Exception:getMessage
    //#unanalyzed(void reindex()): Effects-of-calling:getAnalyzer
    //#unanalyzed(void reindex()): Effects-of-calling:org.apache.lucene.index.IndexWriter:close
    //#unanalyzed(void reindex()): Effects-of-calling:getLuceneAnalyzer
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.Class:forName
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.Class:newInstance
    //#unanalyzed(void reindex()): Effects-of-calling:getDate
    //#unanalyzed(void reindex()): Effects-of-calling:getAuthor
    //#unanalyzed(void reindex()): Effects-of-calling:getTitle
    //#unanalyzed(void reindex()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void reindex()): Effects-of-calling:org.apache.lucene.index.IndexWriter
    //#unanalyzed(void reindex()): Effects-of-calling:java.util.Collection:iterator
    //#unanalyzed(void reindex()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void reindex()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void reindex()): Effects-of-calling:org.apache.lucene.document.Document
    //#unanalyzed(void reindex()): Effects-of-calling:org.apache.lucene.document.Field:Keyword
    //#unanalyzed(void reindex()): Effects-of-calling:org.apache.lucene.document.Document:add
    //#unanalyzed(void reindex()): Effects-of-calling:org.apache.lucene.document.Field:Text
    //#unanalyzed(void reindex()): Effects-of-calling:getPermalink
    //#unanalyzed(void reindex()): Effects-of-calling:org.apache.lucene.document.DateField:dateToString
    //#unanalyzed(void reindex()): Effects-of-calling:org.apache.lucene.document.Field:UnIndexed
    //#unanalyzed(void reindex()): Effects-of-calling:getBody
    //#unanalyzed(void reindex()): Effects-of-calling:org.apache.lucene.document.Field:UnStored
    //#unanalyzed(void reindex()): Effects-of-calling:getTruncatedContent
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void reindex()): Effects-of-calling:org.apache.lucene.index.IndexWriter:addDocument
    //#unanalyzed(void reindex()): Effects-of-calling:org.apache.commons.logging.Log:info
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void reindex()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void reindex()): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:transformHTML
    //#unanalyzed(void reindex()): Effects-of-calling:getStaticPageDAO
    //#unanalyzed(void reindex()): Effects-of-calling:loadStaticPages
    //#unanalyzed(void reindex()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getRoot
    //#unanalyzed(void reindex()): Effects-of-calling:loadStaticPage
    //#unanalyzed(void reindex()): Effects-of-calling:java.io.File:getName
    //#unanalyzed(void reindex()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void reindex()): Effects-of-calling:java.io.File:listFiles
    //#unanalyzed(void reindex()): Effects-of-calling:java.io.File:createNewFile
    //#unanalyzed(void reindex()): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(void reindex()): Effects-of-calling:java.io.FileWriter
    //#unanalyzed(void reindex()): Effects-of-calling:java.io.BufferedWriter
    //#unanalyzed(void reindex()): Effects-of-calling:java.util.Map:keySet
    //#unanalyzed(void reindex()): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void reindex()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void reindex()): Effects-of-calling:java.io.BufferedWriter:write
    //#unanalyzed(void reindex()): Effects-of-calling:java.io.BufferedWriter:newLine
    //#unanalyzed(void reindex()): Effects-of-calling:java.io.BufferedWriter:flush
    //#unanalyzed(void reindex()): Effects-of-calling:java.io.BufferedWriter:close
    //#unanalyzed(void reindex()): Effects-of-calling:java.io.File:delete
    //#unanalyzed(void reindex()): Effects-of-calling:getName
    //#unanalyzed(void reindex()): Effects-of-calling:net.sourceforge.pebble.domain.StaticPage:getId
    //#unanalyzed(void reindex()): Effects-of-calling:index
    //#unanalyzed(void reindex()): Effects-of-calling:getLocalPermalink
    //#unanalyzed(void reindex()): Effects-of-calling:getUrl
    //#unanalyzed(void reindex()): Effects-of-calling:getContent
    //#unanalyzed(void reindex()): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:truncate
    //#unanalyzed(void reindex()): Effects-of-calling:getPermalinkProvider

    reindexBlogEntries();
    //#blog.java:1740: Warning: call too complex - analysis skipped
    //#    -- call on void reindexBlogEntries()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void reindex()
    //#    unanalyzed callee: void reindexBlogEntries()
    reindexStaticPages();
  }
    //#blog.java:1742: end of method: void net.sourceforge.pebble.domain.Blog.reindex()

  public void reindexBlogEntries() {
    blogEntryIndex.clear();
    //#blog.java:1745: method: void net.sourceforge.pebble.domain.Blog.reindexBlogEntries()
    //#blog.java:1745: Warning: suspicious precondition
    //#    the precondition for net/sourceforge/pebble/dao/DAOFactory.configuredFactory.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void reindexBlogEntries()
    //#    suspicious precondition index: [7]
    //#    Attribs:  Soft
    //#input(void reindexBlogEntries()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void reindexBlogEntries()): __Descendant_Table[others]
    //#input(void reindexBlogEntries()): __Dispatch_Table.error(Ljava/lang/String;)V
    //#input(void reindexBlogEntries()): __Dispatch_Table.getBlogForDay(III)Lnet/sourceforge/pebble/domain/Day;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getBlogForDay(Ljava/util/Date;)Lnet/sourceforge/pebble/domain/Day;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getBlogForMonth(II)Lnet/sourceforge/pebble/domain/Month;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getCategories()Ljava/util/List;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getLuceneAnalyzer()Ljava/lang/String;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(void reindexBlogEntries()): __Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void reindexBlogEntries()): __Dispatch_Table.info(Ljava/lang/String;)V
    //#input(void reindexBlogEntries()): log
    //#input(void reindexBlogEntries()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).__Tag
    //#input(void reindexBlogEntries()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).name
    //#input(void reindexBlogEntries()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#2).__Tag
    //#input(void reindexBlogEntries()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#2).name
    //#input(void reindexBlogEntries()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#3).__Tag
    //#input(void reindexBlogEntries()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#3).name
    //#input(void reindexBlogEntries()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#4).__Tag
    //#input(void reindexBlogEntries()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).__Tag
    //#input(void reindexBlogEntries()): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.getPermalink(Lnet/sourceforge/pebble/domain/BlogEntry;)Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/dao/BlogEntryDAO.__Descendant_Table[net/sourceforge/pebble/dao/BlogEntryDAO]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/dao/BlogEntryDAO.__Descendant_Table[net/sourceforge/pebble/dao/file/FileBlogEntryDAO]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/dao/BlogEntryDAO.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/dao/BlogEntryDAO.__Dispatch_Table.loadBlogEntries(Lnet/sourceforge/pebble/domain/Blog;)Ljava/util/Collection;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[net/sourceforge/pebble/dao/DAOFactory]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[net/sourceforge/pebble/dao/file/FileDAOFactory]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/dao/DAOFactory.__Dispatch_Table.getBlogEntryDAO()Lnet/sourceforge/pebble/dao/BlogEntryDAO;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory.__Tag
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory.blogEntryDAO
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/dao/file/FileBlogEntryDAO.__Dispatch_Table.loadBlogEntries(Lnet/sourceforge/pebble/domain/Blog;)Ljava/util/Collection;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/dao/file/FileBlogEntryDAO.log
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/dao/file/FileDAOFactory.__Dispatch_Table.getBlogEntryDAO()Lnet/sourceforge/pebble/dao/BlogEntryDAO;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/AbstractBlog]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[net/sourceforge/pebble/domain/MultiBlog]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/AbstractBlog.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/AbstractBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/AbstractBlog.log
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.addEvent(Lnet/sourceforge/pebble/api/event/PebbleEvent;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.areEventsEnabled()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getAuthor()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getCategories()Ljava/util/Set;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getPermalink()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getResponses()Ljava/util/List;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTitle()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTruncatedContent()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isAggregated()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isPublished()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isUnpublished()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.setPublished(Z)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Descendant_Table[net/sourceforge/pebble/domain/Category]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.addBlogEntry(Ljava/lang/String;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.addSubCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getBlogEntries()Ljava/util/List;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getParent()Lnet/sourceforge/pebble/domain/Category;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getSubCategories()Ljava/util/List;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.isRootCategory()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.removeAllBlogEntries()V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setBlog(Lnet/sourceforge/pebble/domain/Blog;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setId(Ljava/lang/String;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Category.__Dispatch_Table.setParent(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/CategoryBuilder.__Descendant_Table[net/sourceforge/pebble/domain/CategoryBuilder]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/CategoryBuilder.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.addCategory(Lnet/sourceforge/pebble/domain/Category;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.getCategories()Ljava/util/List;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.getCategories(Lnet/sourceforge/pebble/domain/Category;)Ljava/util/List;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/CategoryBuilder.__Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getGuid()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getId()J
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isApproved()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isPending()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isRejected()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Content]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Content.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Content.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Day.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Day.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.addPublishedBlogEntry(Ljava/lang/String;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.addUnpublishedBlogEntry(Ljava/lang/String;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getDay()I
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Day.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Message.__Descendant_Table[net/sourceforge/pebble/domain/Message]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Message.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/MessageType.ERROR
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/MessageType.INFO
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForDay(I)Lnet/sourceforge/pebble/domain/Day;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getCountry()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLanguage()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getLocale()Ljava/util/Locale;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZone()Ljava/util/TimeZone;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/MultiBlog.__Dispatch_Table.getTimeZoneId()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.isAggregated()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Response.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getGuid()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getId()J
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.isApproved()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.isPending()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.isRejected()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/State.APPROVED
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/State.PENDING
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/State.PUBLISHED
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/State.REJECTED
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/State.UNPUBLISHED
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.isAggregated()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.setState(Lnet/sourceforge/pebble/domain/State;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/domain/Tag]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/index/IndexedTag]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Tag.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Tag.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Tag.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getBlogEntry()Lnet/sourceforge/pebble/domain/BlogEntry;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getGuid()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getId()J
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isApproved()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isPending()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isRejected()Z
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/AuthorIndex.__Descendant_Table[net/sourceforge/pebble/index/AuthorIndex]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/AuthorIndex.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/AuthorIndex.__Dispatch_Table.clear()V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/AuthorIndex.__Dispatch_Table.index(Ljava/util/Collection;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/AuthorIndex.log
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[net/sourceforge/pebble/index/BlogEntryIndex]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Dispatch_Table.clear()V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.__Dispatch_Table.index(Ljava/util/Collection;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/BlogEntryIndex.log
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/CategoryIndex.__Descendant_Table[net/sourceforge/pebble/index/CategoryIndex]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/CategoryIndex.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/CategoryIndex.__Dispatch_Table.clear()V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/CategoryIndex.__Dispatch_Table.index(Ljava/util/Collection;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/CategoryIndex.log
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/IndexedTag.__Descendant_Table[net/sourceforge/pebble/index/IndexedTag]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/IndexedTag.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.addBlogEntry(Ljava/lang/String;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.calculateRank([I)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.getBlogEntries()Ljava/util/List;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.getNumberOfBlogEntries()I
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[net/sourceforge/pebble/index/ResponseIndex]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/ResponseIndex.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/ResponseIndex.__Dispatch_Table.clear()V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/ResponseIndex.__Dispatch_Table.index(Ljava/util/Collection;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/ResponseIndex.log
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/SearchIndex.__Descendant_Table[net/sourceforge/pebble/index/SearchIndex]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/SearchIndex.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/SearchIndex.__Dispatch_Table.clear()V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/SearchIndex.__Dispatch_Table.indexBlogEntries(Ljava/util/Collection;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/SearchIndex.log
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/TagIndex.__Descendant_Table[net/sourceforge/pebble/index/TagIndex]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/TagIndex.__Descendant_Table[others]
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/TagIndex.__Dispatch_Table.clear()V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/TagIndex.__Dispatch_Table.getTag(Ljava/lang/String;)Lnet/sourceforge/pebble/index/IndexedTag;
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/TagIndex.__Dispatch_Table.index(Ljava/util/Collection;)V
    //#input(void reindexBlogEntries()): net/sourceforge/pebble/index/TagIndex.log
    //#input(void reindexBlogEntries()): this
    //#input(void reindexBlogEntries()): this...__Tag
    //#input(void reindexBlogEntries()): this...properties
    //#input(void reindexBlogEntries()): this...rootCategory
    //#input(void reindexBlogEntries()): this...rootCategory.__Tag
    //#input(void reindexBlogEntries()): this...years
    //#input(void reindexBlogEntries()): this.__Tag
    //#input(void reindexBlogEntries()): this.authorIndex
    //#input(void reindexBlogEntries()): this.authorIndex.__Tag
    //#input(void reindexBlogEntries()): this.authorIndex.blog
    //#input(void reindexBlogEntries()): this.blogEntryIndex
    //#input(void reindexBlogEntries()): this.blogEntryIndex.__Tag
    //#input(void reindexBlogEntries()): this.blogEntryIndex.blog
    //#input(void reindexBlogEntries()): this.categoryIndex
    //#input(void reindexBlogEntries()): this.categoryIndex.__Tag
    //#input(void reindexBlogEntries()): this.categoryIndex.blog
    //#input(void reindexBlogEntries()): this.messages
    //#input(void reindexBlogEntries()): this.responseIndex
    //#input(void reindexBlogEntries()): this.responseIndex.__Tag
    //#input(void reindexBlogEntries()): this.responseIndex.blog
    //#input(void reindexBlogEntries()): this.responseIndex.pendingResponses
    //#input(void reindexBlogEntries()): this.responseIndex.rejectedResponses
    //#input(void reindexBlogEntries()): this.searchIndex
    //#input(void reindexBlogEntries()): this.searchIndex.__Tag
    //#input(void reindexBlogEntries()): this.searchIndex.blog
    //#input(void reindexBlogEntries()): this.tagIndex
    //#input(void reindexBlogEntries()): this.tagIndex.__Tag
    //#input(void reindexBlogEntries()): this.tagIndex.blog
    //#output(void reindexBlogEntries()): new ArrayList(Category#1) num objects
    //#output(void reindexBlogEntries()): new ArrayList(Category#2) num objects
    //#output(void reindexBlogEntries()): new ArrayList(Category#3) num objects
    //#output(void reindexBlogEntries()): new ArrayList(clear#1) num objects
    //#output(void reindexBlogEntries()): new ArrayList(clear#2) num objects
    //#output(void reindexBlogEntries()): new ArrayList(clear#3) num objects
    //#output(void reindexBlogEntries()): new ArrayList(recalculateTagRankings#2) num objects
    //#output(void reindexBlogEntries()): new ArrayList(removeAllBlogEntries#1) num objects
    //#output(void reindexBlogEntries()): new Category(getCategory#2) num objects
    //#output(void reindexBlogEntries()): new Category(getCategory#2).__Tag
    //#output(void reindexBlogEntries()): new Category(getCategory#2).blog
    //#output(void reindexBlogEntries()): new Category(getCategory#2).blogEntries
    //#output(void reindexBlogEntries()): new Category(getCategory#2).id
    //#output(void reindexBlogEntries()): new Category(getCategory#2).name
    //#output(void reindexBlogEntries()): new Category(getCategory#2).parent
    //#output(void reindexBlogEntries()): new Category(getCategory#2).subCategories
    //#output(void reindexBlogEntries()): new Category(getCategory#2).tags
    //#output(void reindexBlogEntries()): new Category(getCategory#2).tagsAsList
    //#output(void reindexBlogEntries()): new Category(getCategory#3) num objects
    //#output(void reindexBlogEntries()): new Category(getCategory#3).__Tag
    //#output(void reindexBlogEntries()): new Category(getCategory#3).blog
    //#output(void reindexBlogEntries()): new Category(getCategory#3).blogEntries
    //#output(void reindexBlogEntries()): new Category(getCategory#3).id
    //#output(void reindexBlogEntries()): new Category(getCategory#3).name
    //#output(void reindexBlogEntries()): new Category(getCategory#3).parent
    //#output(void reindexBlogEntries()): new Category(getCategory#3).subCategories
    //#output(void reindexBlogEntries()): new Category(getCategory#3).tags
    //#output(void reindexBlogEntries()): new Category(getCategory#3).tagsAsList
    //#output(void reindexBlogEntries()): new HashMap(clear#1) num objects
    //#output(void reindexBlogEntries()): this.authorIndex.authors
    //#output(void reindexBlogEntries()): this.blogEntryIndex.indexEntries
    //#output(void reindexBlogEntries()): this.blogEntryIndex.publishedIndexEntries
    //#output(void reindexBlogEntries()): this.blogEntryIndex.unpublishedIndexEntries
    //#output(void reindexBlogEntries()): this.messages
    //#output(void reindexBlogEntries()): this.responseIndex.approvedResponses
    //#output(void reindexBlogEntries()): this.responseIndex.pendingResponses
    //#output(void reindexBlogEntries()): this.responseIndex.rejectedResponses
    //#output(void reindexBlogEntries()): this.tagIndex.orderedTags
    //#output(void reindexBlogEntries()): this.tagIndex.tags
    //#new obj(void reindexBlogEntries()): new ArrayList(Category#1)
    //#new obj(void reindexBlogEntries()): new ArrayList(Category#2)
    //#new obj(void reindexBlogEntries()): new ArrayList(Category#3)
    //#new obj(void reindexBlogEntries()): new ArrayList(clear#1)
    //#new obj(void reindexBlogEntries()): new ArrayList(clear#2)
    //#new obj(void reindexBlogEntries()): new ArrayList(clear#3)
    //#new obj(void reindexBlogEntries()): new ArrayList(recalculateTagRankings#2)
    //#new obj(void reindexBlogEntries()): new ArrayList(removeAllBlogEntries#1)
    //#new obj(void reindexBlogEntries()): new Category(getCategory#2)
    //#new obj(void reindexBlogEntries()): new Category(getCategory#3)
    //#new obj(void reindexBlogEntries()): new HashMap(clear#1)
    //#pre[10] (void reindexBlogEntries()): net/sourceforge/pebble/domain/AbstractBlog.log != null
    //#pre[14] (void reindexBlogEntries()): this.messages != null
    //#pre[25] (void reindexBlogEntries()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[26] (void reindexBlogEntries()): this.authorIndex != null
    //#pre[27] (void reindexBlogEntries()): this.authorIndex.__Tag == net/sourceforge/pebble/index/AuthorIndex
    //#pre[29] (void reindexBlogEntries()): this.blogEntryIndex != null
    //#pre[30] (void reindexBlogEntries()): this.blogEntryIndex.__Tag == net/sourceforge/pebble/index/BlogEntryIndex
    //#pre[32] (void reindexBlogEntries()): this.categoryIndex != null
    //#pre[33] (void reindexBlogEntries()): this.categoryIndex.__Tag == net/sourceforge/pebble/index/CategoryIndex
    //#pre[34] (void reindexBlogEntries()): this.categoryIndex.blog != null
    //#pre[35] (void reindexBlogEntries()): this.responseIndex != null
    //#pre[36] (void reindexBlogEntries()): this.responseIndex.__Tag == net/sourceforge/pebble/index/ResponseIndex
    //#pre[38] (void reindexBlogEntries()): this.searchIndex != null
    //#pre[39] (void reindexBlogEntries()): this.searchIndex.__Tag == net/sourceforge/pebble/index/SearchIndex
    //#pre[40] (void reindexBlogEntries()): this.searchIndex.blog != null
    //#pre[41] (void reindexBlogEntries()): this.tagIndex != null
    //#pre[42] (void reindexBlogEntries()): this.tagIndex.__Tag == net/sourceforge/pebble/index/TagIndex
    //#pre[1] (void reindexBlogEntries()): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).name != null
    //#pre[2] (void reindexBlogEntries()): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#2).name != null
    //#pre[3] (void reindexBlogEntries()): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#3).name != null
    //#pre[5] (void reindexBlogEntries()): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name != null
    //#pre[6] (void reindexBlogEntries()): (soft) net/sourceforge/pebble/dao/DAOFactory.configuredFactory != null
    //#pre[7] (void reindexBlogEntries()): (soft) net/sourceforge/pebble/dao/DAOFactory.configuredFactory.__Tag in {net/sourceforge/pebble/dao/DAOFactory, net/sourceforge/pebble/dao/file/FileDAOFactory}
    //#pre[8] (void reindexBlogEntries()): (soft) net/sourceforge/pebble/dao/DAOFactory.configuredFactory.blogEntryDAO != null
    //#pre[9] (void reindexBlogEntries()): (soft) net/sourceforge/pebble/dao/file/FileBlogEntryDAO.log != null
    //#pre[11] (void reindexBlogEntries()): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[12] (void reindexBlogEntries()): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[13] (void reindexBlogEntries()): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[15] (void reindexBlogEntries()): (soft) this.responseIndex.pendingResponses != null
    //#pre[16] (void reindexBlogEntries()): (soft) this.responseIndex.rejectedResponses != null
    //#pre[19] (void reindexBlogEntries()): (soft) this...__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[20] (void reindexBlogEntries()): (soft) this...properties != null
    //#pre[21] (void reindexBlogEntries()): (soft) init'ed(this...rootCategory)
    //#pre[24] (void reindexBlogEntries()): (soft) this...years != null
    //#pre[28] (void reindexBlogEntries()): (soft) this.authorIndex.blog != null
    //#pre[31] (void reindexBlogEntries()): (soft) this.blogEntryIndex.blog != null
    //#pre[37] (void reindexBlogEntries()): (soft) this.responseIndex.blog != null
    //#pre[43] (void reindexBlogEntries()): (soft) this.tagIndex.blog != null
    //#presumption(void reindexBlogEntries()): getBlogEntryDAO(...).__Tag@1754 in {net/sourceforge/pebble/dao/BlogEntryDAO, net/sourceforge/pebble/dao/file/FileBlogEntryDAO}
    //#presumption(void reindexBlogEntries()): java.lang.Object:getClass(...)@1763 != null
    //#presumption(void reindexBlogEntries()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#post(void reindexBlogEntries()): this.authorIndex.authors == &new HashMap(clear#1)
    //#post(void reindexBlogEntries()): this.blogEntryIndex.indexEntries == &new ArrayList(clear#1)
    //#post(void reindexBlogEntries()): this.blogEntryIndex.publishedIndexEntries == &new ArrayList(clear#2)
    //#post(void reindexBlogEntries()): this.blogEntryIndex.unpublishedIndexEntries == &new ArrayList(clear#3)
    //#post(void reindexBlogEntries()): init'ed(this.messages)
    //#post(void reindexBlogEntries()): this.responseIndex.approvedResponses == &new ArrayList(clear#1)
    //#post(void reindexBlogEntries()): this.responseIndex.pendingResponses == &new ArrayList(clear#2)
    //#post(void reindexBlogEntries()): this.responseIndex.rejectedResponses == &new ArrayList(clear#3)
    //#post(void reindexBlogEntries()): this.tagIndex.orderedTags == One-of{old this.tagIndex.orderedTags, &new ArrayList(recalculateTagRankings#2)}
    //#post(void reindexBlogEntries()): this.tagIndex.tags == &new HashMap(clear#1)
    //#post(void reindexBlogEntries()): init'ed(new ArrayList(Category#1) num objects)
    //#post(void reindexBlogEntries()): init'ed(new ArrayList(Category#2) num objects)
    //#post(void reindexBlogEntries()): init'ed(new ArrayList(Category#3) num objects)
    //#post(void reindexBlogEntries()): new ArrayList(clear#1) num objects == 1
    //#post(void reindexBlogEntries()): new ArrayList(clear#2) num objects == 1
    //#post(void reindexBlogEntries()): new ArrayList(clear#3) num objects == 1
    //#post(void reindexBlogEntries()): new HashMap(clear#1) num objects == 1
    //#post(void reindexBlogEntries()): new ArrayList(recalculateTagRankings#2) num objects <= 1
    //#post(void reindexBlogEntries()): init'ed(new ArrayList(removeAllBlogEntries#1) num objects)
    //#post(void reindexBlogEntries()): init'ed(new Category(getCategory#2) num objects)
    //#post(void reindexBlogEntries()): init'ed(new Category(getCategory#2).__Tag)
    //#post(void reindexBlogEntries()): possibly_updated(new Category(getCategory#2).blog)
    //#post(void reindexBlogEntries()): init'ed(new Category(getCategory#2).blogEntries)
    //#post(void reindexBlogEntries()): possibly_updated(new Category(getCategory#2).id)
    //#post(void reindexBlogEntries()): init'ed(new Category(getCategory#2).name)
    //#post(void reindexBlogEntries()): possibly_updated(new Category(getCategory#2).parent)
    //#post(void reindexBlogEntries()): possibly_updated(new Category(getCategory#2).subCategories)
    //#post(void reindexBlogEntries()): init'ed(new Category(getCategory#2).tags)
    //#post(void reindexBlogEntries()): init'ed(new Category(getCategory#2).tagsAsList)
    //#post(void reindexBlogEntries()): init'ed(new Category(getCategory#3) num objects)
    //#post(void reindexBlogEntries()): init'ed(new Category(getCategory#3).__Tag)
    //#post(void reindexBlogEntries()): possibly_updated(new Category(getCategory#3).blog)
    //#post(void reindexBlogEntries()): init'ed(new Category(getCategory#3).blogEntries)
    //#post(void reindexBlogEntries()): possibly_updated(new Category(getCategory#3).id)
    //#post(void reindexBlogEntries()): init'ed(new Category(getCategory#3).name)
    //#post(void reindexBlogEntries()): possibly_updated(new Category(getCategory#3).parent)
    //#post(void reindexBlogEntries()): possibly_updated(new Category(getCategory#3).subCategories)
    //#post(void reindexBlogEntries()): init'ed(new Category(getCategory#3).tags)
    //#post(void reindexBlogEntries()): init'ed(new Category(getCategory#3).tagsAsList)
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.String:toLowerCase
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.String:replaceAll
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:encode
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getSubCategories
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getCategory
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getLocale
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.util.I18n:getMessage
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.Category
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:addCategory
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getId
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.String:lastIndexOf
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:setBlog
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:isRootCategory
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:addSubCategory
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getBlog
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.api.event.PebbleEvent
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getBlogEntries
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:isPublished
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getTimeZone
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getLocale
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Locale
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.TimeZone:getTimeZone
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Calendar:get
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getBlogForMonth
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getBlogForDay
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.List:subList
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.util.SecurityUtils:getUsername
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Date
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getIndexesDirectory
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.io.File
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:addPublishedBlogEntry
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:addUnpublishedBlogEntry
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.index.IndexedTag
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Map:values
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Collection:iterator
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:addBlogEntry
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Map:size
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getNumberOfBlogEntries
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.Math:round
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:calculateRank
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.LinkedList
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:setDate
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getCategories
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getName
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.io.FileWriter
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.io.BufferedWriter
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.io.BufferedWriter:write
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.io.BufferedWriter:newLine
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.io.BufferedWriter:flush
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.io.BufferedWriter:close
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:writeIndex
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:removeAllBlogEntries
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Map:keySet
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.Exception:getMessage
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getAnalyzer
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:org.apache.lucene.index.IndexWriter:close
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getLuceneAnalyzer
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.Class:forName
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.Class:newInstance
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.io.File:exists
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.io.File:mkdirs
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:org.apache.lucene.index.IndexWriter
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.io.File:getAbsolutePath
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.beans.PropertyChangeSupport:firePropertyChange
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.HashSet
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:setState
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.beans.PropertyChangeSupport
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.beans.PropertyChangeSupport:addPropertyChangeListener
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:org.xml.sax.helpers.DefaultHandler
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.text.SimpleDateFormat
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getTimeZone
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.text.SimpleDateFormat:setTimeZone
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:javax.xml.parsers.SAXParserFactory:newInstance
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:javax.xml.parsers.SAXParserFactory:setValidating
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:javax.xml.parsers.SAXParserFactory:setNamespaceAware
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:javax.xml.parsers.SAXParserFactory:newSAXParser
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:javax.xml.parsers.SAXParser:parse
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.Exception:printStackTrace
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.Exception
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getRoot
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.io.File:listFiles
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getDate
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:isApproved
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getGuid
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:isPending
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:isRejected
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getResponses
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getAllTags
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getAuthor
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getTitle
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:org.apache.lucene.document.Document
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:org.apache.lucene.document.Field:Keyword
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:org.apache.lucene.document.Document:add
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:org.apache.lucene.document.Field:Text
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getPermalink
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:org.apache.lucene.document.DateField:dateToString
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:org.apache.lucene.document.Field:UnIndexed
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getBody
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:org.apache.lucene.document.Field:UnStored
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getTruncatedContent
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getComments
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getTrackBacks
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getExcerpt
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:org.apache.lucene.index.IndexWriter:addDocument
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:org.apache.commons.logging.Log:info
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Collections:unmodifiableList
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.EventObject
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.List:remove
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getMonth
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getYear
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getState
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.domain.BlogEntry:getId
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Set:size
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:java.util.Collections:reverse
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getRootCategory
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getLocalPermalink
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getUrl
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getContent
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:truncate
    //#unanalyzed(void reindexBlogEntries()): Effects-of-calling:getPermalinkProvider
    responseIndex.clear();
    tagIndex.clear();
    categoryIndex.clear();
    authorIndex.clear();
    searchIndex.clear();

    try {
      // to reindex all blog entries, we need to load them via the DAO
      Collection<BlogEntry> blogEntries = DAOFactory.getConfiguredFactory().getBlogEntryDAO().loadBlogEntries(this);
    //#blog.java:1754: Warning: method not available
    //#    -- call on BlogEntryDAO getBlogEntryDAO()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void reindexBlogEntries()
    //#    unanalyzed callee: BlogEntryDAO getBlogEntryDAO()
    //#blog.java:1754: Warning: method not available
    //#    -- call on Collection loadBlogEntries(Blog)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void reindexBlogEntries()
    //#    unanalyzed callee: Collection loadBlogEntries(Blog)
      blogEntryIndex.index(blogEntries);
      responseIndex.index(blogEntries);
      tagIndex.index(blogEntries);
      categoryIndex.index(blogEntries);
      authorIndex.index(blogEntries);
      searchIndex.indexBlogEntries(blogEntries);
      info("Blog entries reindexed.");
    } catch (Exception e) {
      error(e.getClass().getName() + " reindexing blog entries - " + StringUtils.transformHTML(e.getMessage()));
    //#blog.java:1763: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.util.StringUtils:transformHTML(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void reindexBlogEntries()
    //#    unanalyzed callee: String net.sourceforge.pebble.util.StringUtils:transformHTML(String)
      log.error("Error reindexing blog entries", e);
    //#blog.java:1764: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void reindexBlogEntries()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
    }
  }
    //#blog.java:1766: end of method: void net.sourceforge.pebble.domain.Blog.reindexBlogEntries()

  public void reindexStaticPages() {
    try {
      // to reindex all static pages, we need to load them via the DAO
      Collection<StaticPage> staticPages = DAOFactory.getConfiguredFactory().getStaticPageDAO().loadStaticPages(this);
    //#blog.java:1771: method: void net.sourceforge.pebble.domain.Blog.reindexStaticPages()
    //#blog.java:1771: Warning: method not available
    //#    -- call on StaticPageDAO getStaticPageDAO()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void reindexStaticPages()
    //#    unanalyzed callee: StaticPageDAO getStaticPageDAO()
    //#blog.java:1771: Warning: method not available
    //#    -- call on Collection loadStaticPages(Blog)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void reindexStaticPages()
    //#    unanalyzed callee: Collection loadStaticPages(Blog)
    //#blog.java:1771: Warning: suspicious precondition
    //#    the precondition for net/sourceforge/pebble/dao/DAOFactory.configuredFactory.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void reindexStaticPages()
    //#    suspicious precondition index: [2]
    //#    Attribs:  Soft
    //#input(void reindexStaticPages()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void reindexStaticPages()): __Descendant_Table[others]
    //#input(void reindexStaticPages()): __Dispatch_Table.error(Ljava/lang/String;)V
    //#input(void reindexStaticPages()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(void reindexStaticPages()): __Dispatch_Table.getLuceneAnalyzer()Ljava/lang/String;
    //#input(void reindexStaticPages()): __Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#input(void reindexStaticPages()): __Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void reindexStaticPages()): __Dispatch_Table.info(Ljava/lang/String;)V
    //#input(void reindexStaticPages()): log
    //#input(void reindexStaticPages()): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(void reindexStaticPages()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.getPermalink(Lnet/sourceforge/pebble/domain/BlogEntry;)Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[net/sourceforge/pebble/dao/DAOFactory]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[net/sourceforge/pebble/dao/file/FileDAOFactory]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/DAOFactory.__Descendant_Table[others]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/DAOFactory.__Dispatch_Table.getStaticPageDAO()Lnet/sourceforge/pebble/dao/StaticPageDAO;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory.__Tag
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/DAOFactory.configuredFactory.staticPageDAO
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/StaticPageDAO.__Descendant_Table[net/sourceforge/pebble/dao/StaticPageDAO]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/StaticPageDAO.__Descendant_Table[net/sourceforge/pebble/dao/file/FileStaticPageDAO]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/StaticPageDAO.__Descendant_Table[others]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/StaticPageDAO.__Dispatch_Table.loadStaticPages(Lnet/sourceforge/pebble/domain/Blog;)Ljava/util/Collection;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/file/FileDAOFactory.__Dispatch_Table.getStaticPageDAO()Lnet/sourceforge/pebble/dao/StaticPageDAO;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/file/FileStaticPageDAO.__Descendant_Table[net/sourceforge/pebble/dao/file/FileStaticPageDAO]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/file/FileStaticPageDAO.__Descendant_Table[others]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/file/FileStaticPageDAO.__Dispatch_Table.loadStaticPage(Lnet/sourceforge/pebble/domain/Blog;Ljava/lang/String;)Lnet/sourceforge/pebble/domain/StaticPage;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/dao/file/FileStaticPageDAO.__Dispatch_Table.loadStaticPages(Lnet/sourceforge/pebble/domain/Blog;)Ljava/util/Collection;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/AbstractBlog.log
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isAggregated()Z
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Content]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Content.__Descendant_Table[others]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Content.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Message.__Descendant_Table[net/sourceforge/pebble/domain/Message]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Message.__Dispatch_Table.getText()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/MessageType.ERROR
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/MessageType.INFO
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.isAggregated()Z
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[others]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getAuthor()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getPermalink()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getTitle()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getTruncatedContent()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.isAggregated()Z
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#input(void reindexStaticPages()): net/sourceforge/pebble/index/SearchIndex.__Descendant_Table[net/sourceforge/pebble/index/SearchIndex]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/index/SearchIndex.__Descendant_Table[others]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/index/SearchIndex.__Dispatch_Table.indexStaticPages(Ljava/util/Collection;)V
    //#input(void reindexStaticPages()): net/sourceforge/pebble/index/SearchIndex.log
    //#input(void reindexStaticPages()): net/sourceforge/pebble/index/StaticPageIndex.__Descendant_Table[net/sourceforge/pebble/index/StaticPageIndex]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/index/StaticPageIndex.__Descendant_Table[others]
    //#input(void reindexStaticPages()): net/sourceforge/pebble/index/StaticPageIndex.__Dispatch_Table.reindex(Ljava/util/Collection;)V
    //#input(void reindexStaticPages()): net/sourceforge/pebble/index/StaticPageIndex.log
    //#input(void reindexStaticPages()): this
    //#input(void reindexStaticPages()): this...__Tag
    //#input(void reindexStaticPages()): this...properties
    //#input(void reindexStaticPages()): this.__Tag
    //#input(void reindexStaticPages()): this.messages
    //#input(void reindexStaticPages()): this.searchIndex
    //#input(void reindexStaticPages()): this.searchIndex.__Tag
    //#input(void reindexStaticPages()): this.searchIndex.blog
    //#input(void reindexStaticPages()): this.staticPageIndex
    //#input(void reindexStaticPages()): this.staticPageIndex.__Tag
    //#input(void reindexStaticPages()): this.staticPageIndex.blog
    //#input(void reindexStaticPages()): this.staticPageIndex.lockAttempts
    //#output(void reindexStaticPages()): new HashMap(reindex#1) num objects
    //#output(void reindexStaticPages()): this.messages
    //#output(void reindexStaticPages()): this.staticPageIndex.index
    //#output(void reindexStaticPages()): this.staticPageIndex.lockAttempts
    //#new obj(void reindexStaticPages()): new HashMap(reindex#1)
    //#pre[4] (void reindexStaticPages()): net/sourceforge/pebble/domain/AbstractBlog.log != null
    //#pre[8] (void reindexStaticPages()): this.messages != null
    //#pre[14] (void reindexStaticPages()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[1] (void reindexStaticPages()): (soft) net/sourceforge/pebble/dao/DAOFactory.configuredFactory != null
    //#pre[2] (void reindexStaticPages()): (soft) net/sourceforge/pebble/dao/DAOFactory.configuredFactory.__Tag in {net/sourceforge/pebble/dao/DAOFactory, net/sourceforge/pebble/dao/file/FileDAOFactory}
    //#pre[3] (void reindexStaticPages()): (soft) net/sourceforge/pebble/dao/DAOFactory.configuredFactory.staticPageDAO != null
    //#pre[5] (void reindexStaticPages()): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[6] (void reindexStaticPages()): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[7] (void reindexStaticPages()): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[10] (void reindexStaticPages()): (soft) this.staticPageIndex.lockAttempts <= 4_294_967_294
    //#pre[12] (void reindexStaticPages()): (soft) this...__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[13] (void reindexStaticPages()): (soft) this...properties != null
    //#pre[15] (void reindexStaticPages()): (soft) this.searchIndex != null
    //#pre[16] (void reindexStaticPages()): (soft) this.searchIndex.__Tag == net/sourceforge/pebble/index/SearchIndex
    //#pre[17] (void reindexStaticPages()): (soft) this.searchIndex.blog != null
    //#pre[18] (void reindexStaticPages()): (soft) this.staticPageIndex != null
    //#pre[19] (void reindexStaticPages()): (soft) this.staticPageIndex.__Tag == net/sourceforge/pebble/index/StaticPageIndex
    //#pre[20] (void reindexStaticPages()): (soft) this.staticPageIndex.blog != null
    //#presumption(void reindexStaticPages()): getStaticPageDAO(...).__Tag@1771 == net/sourceforge/pebble/dao/file/FileStaticPageDAO
    //#presumption(void reindexStaticPages()): java.lang.Object:getClass(...)@1776 != null
    //#presumption(void reindexStaticPages()): org.apache.commons.logging.LogFactory:getLog(...)@105 != null
    //#post(void reindexStaticPages()): init'ed(this.messages)
    //#post(void reindexStaticPages()): this.staticPageIndex.index == One-of{old this.staticPageIndex.index, &new HashMap(reindex#1)}
    //#post(void reindexStaticPages()): this.staticPageIndex.lockAttempts == One-of{old this.staticPageIndex.lockAttempts, old this.staticPageIndex.lockAttempts + 1, 0}
    //#post(void reindexStaticPages()): init'ed(this.staticPageIndex.lockAttempts)
    //#post(void reindexStaticPages()): new HashMap(reindex#1) num objects <= 1
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getBlog
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getId
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.util.List:subList
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:net.sourceforge.pebble.util.SecurityUtils:getUsername
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.util.Date
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getIndexesDirectory
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.io.File
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.lang.Exception:getMessage
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getAnalyzer
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:org.apache.lucene.index.IndexWriter:close
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getLuceneAnalyzer
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.lang.Class:forName
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.lang.Class:newInstance
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getDate
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getAuthor
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getTitle
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:org.apache.lucene.index.IndexWriter
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.util.Collection:iterator
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:org.apache.lucene.document.Document
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:org.apache.lucene.document.Field:Keyword
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:org.apache.lucene.document.Document:add
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:org.apache.lucene.document.Field:Text
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getPermalink
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:org.apache.lucene.document.DateField:dateToString
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:org.apache.lucene.document.Field:UnIndexed
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getBody
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:org.apache.lucene.document.Field:UnStored
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getTruncatedContent
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:org.apache.lucene.index.IndexWriter:addDocument
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:org.apache.commons.logging.Log:info
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getRoot
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:loadStaticPage
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.io.File:getName
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.io.File:listFiles
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.io.File:createNewFile
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.io.FileWriter
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.io.BufferedWriter
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.util.Map:keySet
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.io.BufferedWriter:write
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.io.BufferedWriter:newLine
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.io.BufferedWriter:flush
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.io.BufferedWriter:close
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:java.io.File:delete
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getName
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:net.sourceforge.pebble.domain.StaticPage:getId
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:index
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getLocalPermalink
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getUrl
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getContent
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:truncate
    //#unanalyzed(void reindexStaticPages()): Effects-of-calling:getPermalinkProvider
      staticPageIndex.reindex(staticPages);
      searchIndex.indexStaticPages(staticPages);
      info("Static pages reindexed.");
    } catch (Exception e) {
      error(e.getClass().getName() + " reindexing static pages - " + StringUtils.transformHTML(e.getMessage()));
    //#blog.java:1776: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.util.StringUtils:transformHTML(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void reindexStaticPages()
    //#    unanalyzed callee: String net.sourceforge.pebble.util.StringUtils:transformHTML(String)
      log.error("Error reindexing static pages", e);
    //#blog.java:1777: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Blog
    //#    method: void reindexStaticPages()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
    }
  }
    //#blog.java:1779: end of method: void net.sourceforge.pebble.domain.Blog.reindexStaticPages()

  /**
   * 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) {
    //#blog.java:1791: method: bool net.sourceforge.pebble.domain.Blog.equals(Object)
    //#input(bool equals(Object)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(bool equals(Object)): __Descendant_Table[others]
    //#input(bool equals(Object)): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(bool equals(Object)): o
    //#input(bool equals(Object)): o.__Tag
    //#input(bool equals(Object)): o.id
    //#input(bool equals(Object)): this
    //#input(bool equals(Object)): this.__Tag
    //#input(bool equals(Object)): this.id
    //#output(bool equals(Object)): return_value
    //#pre[5] (bool equals(Object)): (soft) init'ed(o.id)
    //#pre[8] (bool equals(Object)): (soft) this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[9] (bool equals(Object)): (soft) this.id != null
    //#post(bool equals(Object)): init'ed(return_value)
    //#test_vector(bool equals(Object)): this == o: {0}, {1}
      return true;
    }

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

    Blog blog = (Blog)o;
    return getId().equals(blog.getId());
    //#blog.java:1800: end of method: bool net.sourceforge.pebble.domain.Blog.equals(Object)
  }


  public String getCommentConfirmationStrategyName() {
    return getProperty(COMMENT_CONFIRMATION_STRATEGY_KEY);
    //#blog.java:1805: method: String net.sourceforge.pebble.domain.Blog.getCommentConfirmationStrategyName()
    //#input(String getCommentConfirmationStrategyName()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getCommentConfirmationStrategyName()): __Descendant_Table[others]
    //#input(String getCommentConfirmationStrategyName()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(String getCommentConfirmationStrategyName()): this
    //#input(String getCommentConfirmationStrategyName()): this.__Tag
    //#input(String getCommentConfirmationStrategyName()): this.properties
    //#output(String getCommentConfirmationStrategyName()): return_value
    //#pre[2] (String getCommentConfirmationStrategyName()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (String getCommentConfirmationStrategyName()): this.properties != null
    //#post(String getCommentConfirmationStrategyName()): init'ed(return_value)
    //#unanalyzed(String getCommentConfirmationStrategyName()): Effects-of-calling:java.util.Properties:getProperty
    //#blog.java:1805: end of method: String net.sourceforge.pebble.domain.Blog.getCommentConfirmationStrategyName()
  }

  public CommentConfirmationStrategy getCommentConfirmationStrategy() {
    return commentConfirmationStrategy;
    //#blog.java:1809: method: CommentConfirmationStrategy net.sourceforge.pebble.domain.Blog.getCommentConfirmationStrategy()
    //#input(CommentConfirmationStrategy getCommentConfirmationStrategy()): this
    //#input(CommentConfirmationStrategy getCommentConfirmationStrategy()): this.commentConfirmationStrategy
    //#output(CommentConfirmationStrategy getCommentConfirmationStrategy()): return_value
    //#pre[2] (CommentConfirmationStrategy getCommentConfirmationStrategy()): init'ed(this.commentConfirmationStrategy)
    //#post(CommentConfirmationStrategy getCommentConfirmationStrategy()): return_value == this.commentConfirmationStrategy
    //#post(CommentConfirmationStrategy getCommentConfirmationStrategy()): init'ed(return_value)
    //#blog.java:1809: end of method: CommentConfirmationStrategy net.sourceforge.pebble.domain.Blog.getCommentConfirmationStrategy()
  }

  public String getTrackBackConfirmationStrategyName() {
    return getProperty(TRACKBACK_CONFIRMATION_STRATEGY_KEY);
    //#blog.java:1813: method: String net.sourceforge.pebble.domain.Blog.getTrackBackConfirmationStrategyName()
    //#input(String getTrackBackConfirmationStrategyName()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getTrackBackConfirmationStrategyName()): __Descendant_Table[others]
    //#input(String getTrackBackConfirmationStrategyName()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(String getTrackBackConfirmationStrategyName()): this
    //#input(String getTrackBackConfirmationStrategyName()): this.__Tag
    //#input(String getTrackBackConfirmationStrategyName()): this.properties
    //#output(String getTrackBackConfirmationStrategyName()): return_value
    //#pre[2] (String getTrackBackConfirmationStrategyName()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (String getTrackBackConfirmationStrategyName()): this.properties != null
    //#post(String getTrackBackConfirmationStrategyName()): init'ed(return_value)
    //#unanalyzed(String getTrackBackConfirmationStrategyName()): Effects-of-calling:java.util.Properties:getProperty
    //#blog.java:1813: end of method: String net.sourceforge.pebble.domain.Blog.getTrackBackConfirmationStrategyName()
  }

  public TrackBackConfirmationStrategy getTrackBackConfirmationStrategy() {
    return trackBackConfirmationStrategy;
    //#blog.java:1817: method: TrackBackConfirmationStrategy net.sourceforge.pebble.domain.Blog.getTrackBackConfirmationStrategy()
    //#input(TrackBackConfirmationStrategy getTrackBackConfirmationStrategy()): this
    //#input(TrackBackConfirmationStrategy getTrackBackConfirmationStrategy()): this.trackBackConfirmationStrategy
    //#output(TrackBackConfirmationStrategy getTrackBackConfirmationStrategy()): return_value
    //#pre[2] (TrackBackConfirmationStrategy getTrackBackConfirmationStrategy()): init'ed(this.trackBackConfirmationStrategy)
    //#post(TrackBackConfirmationStrategy getTrackBackConfirmationStrategy()): return_value == this.trackBackConfirmationStrategy
    //#post(TrackBackConfirmationStrategy getTrackBackConfirmationStrategy()): init'ed(return_value)
    //#blog.java:1817: end of method: TrackBackConfirmationStrategy net.sourceforge.pebble.domain.Blog.getTrackBackConfirmationStrategy()
  }

  public boolean isRichTextEditorForCommentsEnabled() {
    String s = getProperty(RICH_TEXT_EDITOR_FOR_COMMENTS_ENABLED_KEY);
    //#blog.java:1821: method: bool net.sourceforge.pebble.domain.Blog.isRichTextEditorForCommentsEnabled()
    //#input(bool isRichTextEditorForCommentsEnabled()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(bool isRichTextEditorForCommentsEnabled()): __Descendant_Table[others]
    //#input(bool isRichTextEditorForCommentsEnabled()): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(bool isRichTextEditorForCommentsEnabled()): this
    //#input(bool isRichTextEditorForCommentsEnabled()): this.__Tag
    //#input(bool isRichTextEditorForCommentsEnabled()): this.properties
    //#output(bool isRichTextEditorForCommentsEnabled()): return_value
    //#pre[2] (bool isRichTextEditorForCommentsEnabled()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (bool isRichTextEditorForCommentsEnabled()): this.properties != null
    //#post(bool isRichTextEditorForCommentsEnabled()): init'ed(return_value)
    //#unanalyzed(bool isRichTextEditorForCommentsEnabled()): Effects-of-calling:java.util.Properties:getProperty
    //#test_vector(bool isRichTextEditorForCommentsEnabled()): java.lang.String:equalsIgnoreCase(...)@1822: {0}, {1}
    //#test_vector(bool isRichTextEditorForCommentsEnabled()): java.util.Properties:getProperty(...)@175: Addr_Set{null}, Inverse{null}
    return s != null && s.equalsIgnoreCase("true");
    //#blog.java:1822: end of method: bool net.sourceforge.pebble.domain.Blog.isRichTextEditorForCommentsEnabled()
  }

  public EmailSubscriptionList getEmailSubscriptionList() {
    return emailSubscriptionList;
    //#blog.java:1826: method: EmailSubscriptionList net.sourceforge.pebble.domain.Blog.getEmailSubscriptionList()
    //#input(EmailSubscriptionList getEmailSubscriptionList()): this
    //#input(EmailSubscriptionList getEmailSubscriptionList()): this.emailSubscriptionList
    //#output(EmailSubscriptionList getEmailSubscriptionList()): return_value
    //#pre[2] (EmailSubscriptionList getEmailSubscriptionList()): init'ed(this.emailSubscriptionList)
    //#post(EmailSubscriptionList getEmailSubscriptionList()): return_value == this.emailSubscriptionList
    //#post(EmailSubscriptionList getEmailSubscriptionList()): init'ed(return_value)
    //#blog.java:1826: end of method: EmailSubscriptionList net.sourceforge.pebble.domain.Blog.getEmailSubscriptionList()
  }

  public List<NewsFeedEntry> getNewsFeedEntries() {
    return NewsFeedCache.getInstance().getNewsFeedEntries(this);
    //#blog.java:1830: method: List net.sourceforge.pebble.domain.Blog.getNewsFeedEntries()
    //#input(List getNewsFeedEntries()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getNewsFeedEntries()): __Descendant_Table[others]
    //#input(List getNewsFeedEntries()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(List getNewsFeedEntries()): net.sourceforge.pebble.aggregator.NewsFeedCache__static_init.new NewsFeedCache(NewsFeedCache__static_init#1).__Tag
    //#input(List getNewsFeedEntries()): net.sourceforge.pebble.aggregator.NewsFeedCache__static_init.new NewsFeedCache(NewsFeedCache__static_init#1).entries
    //#input(List getNewsFeedEntries()): net/sourceforge/pebble/aggregator/NewsFeedCache.__Descendant_Table[net/sourceforge/pebble/aggregator/NewsFeedCache]
    //#input(List getNewsFeedEntries()): net/sourceforge/pebble/aggregator/NewsFeedCache.__Dispatch_Table.getNewsFeedEntries(Lnet/sourceforge/pebble/domain/Blog;)Ljava/util/List;
    //#input(List getNewsFeedEntries()): net/sourceforge/pebble/aggregator/NewsFeedCache.instance
    //#input(List getNewsFeedEntries()): this
    //#input(List getNewsFeedEntries()): this.__Tag
    //#input(List getNewsFeedEntries()): this.id
    //#output(List getNewsFeedEntries()): new LinkedList(getNewsFeedEntries#1*) num objects
    //#output(List getNewsFeedEntries()): return_value
    //#new obj(List getNewsFeedEntries()): new LinkedList(getNewsFeedEntries#1*)
    //#pre[2] (List getNewsFeedEntries()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (List getNewsFeedEntries()): init'ed(this.id)
    //#post(List getNewsFeedEntries()): return_value != null
    //#post(List getNewsFeedEntries()): new LinkedList(getNewsFeedEntries#1*) num objects <= 1
    //#unanalyzed(List getNewsFeedEntries()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(List getNewsFeedEntries()): Effects-of-calling:java.util.LinkedList
    //#blog.java:1830: end of method: List net.sourceforge.pebble.domain.Blog.getNewsFeedEntries()
  }

  public List<NewsFeedEntry> getRecentNewsFeedEntries() {
    List<NewsFeedEntry> entries = getNewsFeedEntries();
    //#blog.java:1834: method: List net.sourceforge.pebble.domain.Blog.getRecentNewsFeedEntries()
    //#input(List getRecentNewsFeedEntries()): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getRecentNewsFeedEntries()): __Descendant_Table[others]
    //#input(List getRecentNewsFeedEntries()): __Dispatch_Table.getId()Ljava/lang/String;
    //#input(List getRecentNewsFeedEntries()): __Dispatch_Table.getNewsFeedEntries()Ljava/util/List;
    //#input(List getRecentNewsFeedEntries()): __Dispatch_Table.getRecentBlogEntriesOnHomePage()I
    //#input(List getRecentNewsFeedEntries()): net.sourceforge.pebble.aggregator.NewsFeedCache__static_init.new NewsFeedCache(NewsFeedCache__static_init#1).__Tag
    //#input(List getRecentNewsFeedEntries()): net.sourceforge.pebble.aggregator.NewsFeedCache__static_init.new NewsFeedCache(NewsFeedCache__static_init#1).entries
    //#input(List getRecentNewsFeedEntries()): net/sourceforge/pebble/aggregator/NewsFeedCache.__Descendant_Table[net/sourceforge/pebble/aggregator/NewsFeedCache]
    //#input(List getRecentNewsFeedEntries()): net/sourceforge/pebble/aggregator/NewsFeedCache.__Dispatch_Table.getNewsFeedEntries(Lnet/sourceforge/pebble/domain/Blog;)Ljava/util/List;
    //#input(List getRecentNewsFeedEntries()): net/sourceforge/pebble/aggregator/NewsFeedCache.instance
    //#input(List getRecentNewsFeedEntries()): this
    //#input(List getRecentNewsFeedEntries()): this.__Tag
    //#input(List getRecentNewsFeedEntries()): this.id
    //#input(List getRecentNewsFeedEntries()): this.properties
    //#output(List getRecentNewsFeedEntries()): new LinkedList(getNewsFeedEntries#1*) num objects
    //#output(List getRecentNewsFeedEntries()): return_value
    //#new obj(List getRecentNewsFeedEntries()): new LinkedList(getNewsFeedEntries#1*)
    //#pre[2] (List getRecentNewsFeedEntries()): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[3] (List getRecentNewsFeedEntries()): init'ed(this.id)
    //#pre[4] (List getRecentNewsFeedEntries()): this.properties != null
    //#post(List getRecentNewsFeedEntries()): init'ed(return_value)
    //#post(List getRecentNewsFeedEntries()): new LinkedList(getNewsFeedEntries#1*) num objects <= 1
    //#unanalyzed(List getRecentNewsFeedEntries()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(List getRecentNewsFeedEntries()): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(List getRecentNewsFeedEntries()): Effects-of-calling:getInstance
    //#unanalyzed(List getRecentNewsFeedEntries()): Effects-of-calling:getNewsFeedEntries
    //#unanalyzed(List getRecentNewsFeedEntries()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(List getRecentNewsFeedEntries()): Effects-of-calling:java.util.LinkedList
    if (entries.size() > getRecentBlogEntriesOnHomePage()) {
      entries = entries.subList(0, getRecentBlogEntriesOnHomePage());
    }
    return entries;
    //#blog.java:1838: end of method: List net.sourceforge.pebble.domain.Blog.getRecentNewsFeedEntries()
  }

  private List<String> getStringsFromProperty(String key) {
    List<String> strings = new ArrayList<String>();
    //#blog.java:1842: method: List net.sourceforge.pebble.domain.Blog.getStringsFromProperty(String)
    //#input(List getStringsFromProperty(String)): __Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(List getStringsFromProperty(String)): __Descendant_Table[others]
    //#input(List getStringsFromProperty(String)): __Dispatch_Table.getProperty(Ljava/lang/String;)Ljava/lang/String;
    //#input(List getStringsFromProperty(String)): key
    //#input(List getStringsFromProperty(String)): this
    //#input(List getStringsFromProperty(String)): this.__Tag
    //#input(List getStringsFromProperty(String)): this.properties
    //#output(List getStringsFromProperty(String)): new ArrayList(getStringsFromProperty#1) num objects
    //#output(List getStringsFromProperty(String)): return_value
    //#new obj(List getStringsFromProperty(String)): new ArrayList(getStringsFromProperty#1)
    //#pre[3] (List getStringsFromProperty(String)): this.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[4] (List getStringsFromProperty(String)): this.properties != null
    //#presumption(List getStringsFromProperty(String)): values.length@1845 <= 4_294_967_295
    //#presumption(List getStringsFromProperty(String)): values[i]@1845 != null
    //#post(List getStringsFromProperty(String)): return_value == &new ArrayList(getStringsFromProperty#1)
    //#post(List getStringsFromProperty(String)): new ArrayList(getStringsFromProperty#1) num objects == 1
    //#unanalyzed(List getStringsFromProperty(String)): Effects-of-calling:java.util.Properties:getProperty
    //#test_vector(List getStringsFromProperty(String)): java.lang.String:length(...)@1844: {0}, {1..4_294_967_295}
    //#test_vector(List getStringsFromProperty(String)): java.lang.String:startsWith(...)@1847: {1}, {0}
    //#test_vector(List getStringsFromProperty(String)): java.util.Properties:getProperty(...)@175: Addr_Set{null}, Inverse{null}
    String value = getProperty(key);
    if (value != null && value.length() > 0) {
      String values[] = value.split("\\s+");
      for (int i = 0; i < values.length; i++) {
        if (!values[i].startsWith("#")) {
          strings.add(values[i].trim());
        }
      }
    }
    return strings;
    //#blog.java:1852: end of method: List net.sourceforge.pebble.domain.Blog.getStringsFromProperty(String)
  }
}
    //#blog.java:: end of class: net.sourceforge.pebble.domain.Blog
