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

import net.sourceforge.pebble.comparator.ReverseBlogEntryIdComparator;

import java.util.*;

/**
 * Represents a blog at a daily level. This manages a collection of BlogEntry instances.
 *
 * @author    Simon Brown
 */
public class Day extends TimePeriod implements Permalinkable {

  /** the parent, Month instance */
  private Month month;

  /** an integer representing the day that this Day is for */
  private int day;

  /** the collection of blog entry keys */
  private List<String> blogEntries = new ArrayList<String>();
  private List<String> publishedBlogEntries = new ArrayList<String>();
  private List<String> unpublishedBlogEntries = new ArrayList<String>();

  /**
   * Creates a new Day for the specified month and day.
   *
   * @param month   a Month instance representing the month
   * @param day     an int representing the day
   */
  Day(Month month, int day) {
    super(month.getBlog());
    //#day.java:63: method: void net.sourceforge.pebble.domain.Day.net.sourceforge.pebble.domain.Day(Month, int)
    //#day.java:63: Warning: method not available
    //#    -- call on Blog net.sourceforge.pebble.domain.Month:getBlog()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Day
    //#    method: void net.sourceforge.pebble.domain.Day(Month, int)
    //#    unanalyzed callee: Blog net.sourceforge.pebble.domain.Month:getBlog()
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): __Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): __Descendant_Table[others]
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): __Dispatch_Table.getDay()I
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): __Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): __Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): day
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): month
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): month.__Tag
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): month.month
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): month.year
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): month.year.__Tag
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): month.year.year
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): this
    //#input(void net.sourceforge.pebble.domain.Day(Month, int)): this.__Tag
    //#output(void net.sourceforge.pebble.domain.Day(Month, int)): new ArrayList(Day#1) num objects
    //#output(void net.sourceforge.pebble.domain.Day(Month, int)): new ArrayList(Day#2) num objects
    //#output(void net.sourceforge.pebble.domain.Day(Month, int)): new ArrayList(Day#3) num objects
    //#output(void net.sourceforge.pebble.domain.Day(Month, int)): this.__Tag
    //#output(void net.sourceforge.pebble.domain.Day(Month, int)): this.blog
    //#output(void net.sourceforge.pebble.domain.Day(Month, int)): this.blogEntries
    //#output(void net.sourceforge.pebble.domain.Day(Month, int)): this.date
    //#output(void net.sourceforge.pebble.domain.Day(Month, int)): this.day
    //#output(void net.sourceforge.pebble.domain.Day(Month, int)): this.month
    //#output(void net.sourceforge.pebble.domain.Day(Month, int)): this.publishedBlogEntries
    //#output(void net.sourceforge.pebble.domain.Day(Month, int)): this.unpublishedBlogEntries
    //#new obj(void net.sourceforge.pebble.domain.Day(Month, int)): new ArrayList(Day#1)
    //#new obj(void net.sourceforge.pebble.domain.Day(Month, int)): new ArrayList(Day#2)
    //#new obj(void net.sourceforge.pebble.domain.Day(Month, int)): new ArrayList(Day#3)
    //#pre[2] (void net.sourceforge.pebble.domain.Day(Month, int)): month != null
    //#pre[3] (void net.sourceforge.pebble.domain.Day(Month, int)): month.__Tag == net/sourceforge/pebble/domain/Month
    //#pre[4] (void net.sourceforge.pebble.domain.Day(Month, int)): month.month >= -2_147_483_647
    //#pre[5] (void net.sourceforge.pebble.domain.Day(Month, int)): month.year != null
    //#pre[6] (void net.sourceforge.pebble.domain.Day(Month, int)): month.year.__Tag == net/sourceforge/pebble/domain/Year
    //#pre[7] (void net.sourceforge.pebble.domain.Day(Month, int)): init'ed(month.year.year)
    //#pre[8] (void net.sourceforge.pebble.domain.Day(Month, int)): this.__Tag == net/sourceforge/pebble/domain/Day
    //#presumption(void net.sourceforge.pebble.domain.Day(Month, int)): net.sourceforge.pebble.domain.Month:getBlog(...)@63 != null
    //#post(void net.sourceforge.pebble.domain.Day(Month, int)): this.__Tag == net/sourceforge/pebble/domain/Day
    //#post(void net.sourceforge.pebble.domain.Day(Month, int)): (soft) this.blog != null
    //#post(void net.sourceforge.pebble.domain.Day(Month, int)): this.blogEntries == &new ArrayList(Day#1)
    //#post(void net.sourceforge.pebble.domain.Day(Month, int)): init'ed(this.date)
    //#post(void net.sourceforge.pebble.domain.Day(Month, int)): this.day == day
    //#post(void net.sourceforge.pebble.domain.Day(Month, int)): init'ed(this.day)
    //#post(void net.sourceforge.pebble.domain.Day(Month, int)): this.month == month
    //#post(void net.sourceforge.pebble.domain.Day(Month, int)): this.month != null
    //#post(void net.sourceforge.pebble.domain.Day(Month, int)): this.publishedBlogEntries == &new ArrayList(Day#2)
    //#post(void net.sourceforge.pebble.domain.Day(Month, int)): this.unpublishedBlogEntries == &new ArrayList(Day#3)
    //#post(void net.sourceforge.pebble.domain.Day(Month, int)): new ArrayList(Day#1) num objects == 1
    //#post(void net.sourceforge.pebble.domain.Day(Month, int)): new ArrayList(Day#2) num objects == 1
    //#post(void net.sourceforge.pebble.domain.Day(Month, int)): new ArrayList(Day#3) num objects == 1
    //#unanalyzed(void net.sourceforge.pebble.domain.Day(Month, int)): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(void net.sourceforge.pebble.domain.Day(Month, int)): Effects-of-calling:getBlog
    //#unanalyzed(void net.sourceforge.pebble.domain.Day(Month, int)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(void net.sourceforge.pebble.domain.Day(Month, int)): Effects-of-calling:getYear
    //#unanalyzed(void net.sourceforge.pebble.domain.Day(Month, int)): Effects-of-calling:getMonth

    this.month = month;
    this.day = day;
    setDate(getCalendar().getTime());

//    if (getBlog() instanceof Blog) {
//      try {
//        Blog blog = getBlog();
//
//        DAOFactory factory = DAOFactory.getConfiguredFactory();
//        BlogEntryDAO dao = factory.getBlogEntryDAO();
//        entries = dao.getBlogEntries(this);
//        Collections.sort(entries, new BlogEntryComparator());
//
//        Iterator it = entries.iterator();
//        while (it.hasNext()) {
//          BlogEntry blogEntry = (BlogEntry)it.next();
//
//          if (blogEntry.isApproved()) {
//            Iterator categories = blogEntry.getCategories().iterator();
//            while (categories.hasNext()) {
//              Category category = (Category)categories.next();
//              category.addBlogEntry(blogEntry);
//            }
//            blog.getRootCategory().addBlogEntry(blogEntry);
//
//            // and the blog entry specific tags
//            Iterator tags = blogEntry.getTagsAsList().iterator();
//            while (tags.hasNext()) {
//              Tag tag = (Tag)tags.next();
//              tag.addBlogEntry(blogEntry);
//            }
//          }
//
//          // tell the owning blog that we might have some more recent
//          // comments and TrackBacks
//          Iterator comments = blogEntry.getComments().iterator();
//          while (comments.hasNext()) {
//            blog.getResponseManager().addRecentComment((Comment)comments.next());
//          }
//          Iterator trackBacks = blogEntry.getTrackBacks().iterator();
//          while (trackBacks.hasNext()) {
//            blog.getResponseManager().addRecentTrackBack((TrackBack)trackBacks.next());
//          }
//
//          // now that the entries have been loaded, enable events
//          // so that listeners get notified when they change
//          blogEntry.setEventsEnabled(true);
//        }
//      } catch (PersistenceException e) {
//        e.printStackTrace();
//      }
//    }
  }
    //#day.java:117: end of method: void net.sourceforge.pebble.domain.Day.net.sourceforge.pebble.domain.Day(Month, int)

  /**
   * Gets a Calendar object representing today.
   *
   * @return    a Calendar instance
   */
  private Calendar getCalendar() {

    // and set the actual date for this day
    Calendar cal = getBlog().getCalendar();
    //#day.java:127: method: Calendar net.sourceforge.pebble.domain.Day.getCalendar()
    //#day.java:127: Warning: method not available
    //#    -- call on Calendar net.sourceforge.pebble.domain.Blog:getCalendar()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Day
    //#    method: Calendar getCalendar()
    //#    unanalyzed callee: Calendar net.sourceforge.pebble.domain.Blog:getCalendar()
    //#input(Calendar getCalendar()): __Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Calendar getCalendar()): __Descendant_Table[others]
    //#input(Calendar getCalendar()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Calendar getCalendar()): __Dispatch_Table.getDay()I
    //#input(Calendar getCalendar()): __Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Calendar getCalendar()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Calendar getCalendar()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Calendar getCalendar()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Calendar getCalendar()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Calendar getCalendar()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Calendar getCalendar()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Calendar getCalendar()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Calendar getCalendar()): this
    //#input(Calendar getCalendar()): this.__Tag
    //#input(Calendar getCalendar()): this.blog
    //#input(Calendar getCalendar()): this.day
    //#input(Calendar getCalendar()): this.month
    //#input(Calendar getCalendar()): this.month.__Tag
    //#input(Calendar getCalendar()): this.month.month
    //#input(Calendar getCalendar()): this.month.year
    //#input(Calendar getCalendar()): this.month.year.__Tag
    //#input(Calendar getCalendar()): this.month.year.year
    //#output(Calendar getCalendar()): return_value
    //#pre[2] (Calendar getCalendar()): this.__Tag == net/sourceforge/pebble/domain/Day
    //#pre[3] (Calendar getCalendar()): this.blog != null
    //#pre[4] (Calendar getCalendar()): init'ed(this.day)
    //#pre[5] (Calendar getCalendar()): this.month != null
    //#pre[6] (Calendar getCalendar()): this.month.__Tag == net/sourceforge/pebble/domain/Month
    //#pre[7] (Calendar getCalendar()): this.month.month >= -2_147_483_647
    //#pre[8] (Calendar getCalendar()): this.month.year != null
    //#pre[9] (Calendar getCalendar()): this.month.year.__Tag == net/sourceforge/pebble/domain/Year
    //#pre[10] (Calendar getCalendar()): init'ed(this.month.year.year)
    //#presumption(Calendar getCalendar()): net.sourceforge.pebble.domain.Blog:getCalendar(...)@127 != null
    //#post(Calendar getCalendar()): (soft) return_value != null
    cal.set(Calendar.YEAR, getMonth().getYear().getYear());
    cal.set(Calendar.MONTH, getMonth().getMonth() - 1);
    cal.set(Calendar.DAY_OF_MONTH, getDay());
    cal.set(Calendar.HOUR_OF_DAY, 12);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);

    return cal;
    //#day.java:136: end of method: Calendar net.sourceforge.pebble.domain.Day.getCalendar()
  }

  /**
   * Gets a reference to the parent Month instance.
   *
   * @return  a Month instance
   */
  public Month getMonth() {
    return month;
    //#day.java:145: method: Month net.sourceforge.pebble.domain.Day.getMonth()
    //#input(Month getMonth()): this
    //#input(Month getMonth()): this.month
    //#output(Month getMonth()): return_value
    //#pre[2] (Month getMonth()): init'ed(this.month)
    //#post(Month getMonth()): return_value == this.month
    //#post(Month getMonth()): init'ed(return_value)
    //#day.java:145: end of method: Month net.sourceforge.pebble.domain.Day.getMonth()
  }

  /**
   * Gets the day that this Day is for.
   *
   * @return    an int representing the day in the month
   */
  public int getDay() {
    return day;
    //#day.java:154: method: int net.sourceforge.pebble.domain.Day.getDay()
    //#input(int getDay()): this
    //#input(int getDay()): this.day
    //#output(int getDay()): return_value
    //#pre[2] (int getDay()): init'ed(this.day)
    //#post(int getDay()): return_value == this.day
    //#post(int getDay()): init'ed(return_value)
    //#day.java:154: end of method: int net.sourceforge.pebble.domain.Day.getDay()
  }

  /**
   * Gets the permalink to display all entries for this Day.
   *
   * @return  an absolute URL
   */
  public String getPermalink() {
    String s = getBlog().getPermalinkProvider().getPermalink(this);
    //#day.java:163: method: String net.sourceforge.pebble.domain.Day.getPermalink()
    //#day.java:163: Warning: method not available
    //#    -- call on String getPermalink(Day)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Day
    //#    method: String getPermalink()
    //#    unanalyzed callee: String getPermalink(Day)
    //#input(String getPermalink()): __Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(String getPermalink()): __Descendant_Table[others]
    //#input(String getPermalink()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(String getPermalink()): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(String getPermalink()): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(String getPermalink()): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(String getPermalink()): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(String getPermalink()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(String getPermalink()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(String getPermalink()): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.getPermalink(Lnet/sourceforge/pebble/domain/Day;)Ljava/lang/String;
    //#input(String getPermalink()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(String getPermalink()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(String getPermalink()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(String getPermalink()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#input(String getPermalink()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(String getPermalink()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(String getPermalink()): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(String getPermalink()): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(String getPermalink()): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(String getPermalink()): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(String getPermalink()): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(String getPermalink()): this
    //#input(String getPermalink()): this.__Tag
    //#input(String getPermalink()): this.blog
    //#input(String getPermalink()): this.blog.__Tag
    //#input(String getPermalink()): this.blog.id
    //#input(String getPermalink()): this.blog.permalinkProvider
    //#input(String getPermalink()): this.blog.permalinkProvider.__Tag
    //#output(String getPermalink()): return_value
    //#pre[5] (String getPermalink()): this.__Tag == net/sourceforge/pebble/domain/Day
    //#pre[6] (String getPermalink()): this.blog != null
    //#pre[7] (String getPermalink()): this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[9] (String getPermalink()): this.blog.permalinkProvider != null
    //#pre[10] (String getPermalink()): this.blog.permalinkProvider.__Tag == net/sourceforge/pebble/api/permalink/PermalinkProvider
    //#pre[1] (String getPermalink()): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[2] (String getPermalink()): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[3] (String getPermalink()): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[8] (String getPermalink()): (soft) init'ed(this.blog.id)
    //#post(String getPermalink()): return_value != null
    //#unanalyzed(String getPermalink()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getPermalink()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getPermalink()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getPermalink()): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(String getPermalink()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(String getPermalink()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(String getPermalink()): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(String getPermalink()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String getPermalink()): Effects-of-calling:java.lang.String:substring
    //#test_vector(String getPermalink()): getPermalink(...)@163: Addr_Set{null}, Inverse{null}
    //#test_vector(String getPermalink()): java.lang.String:length(...)@164: {0}, {1..4_294_967_295}
    if (s != null && s.length() > 0) {
      return getBlog().getUrl() + s.substring(1);
    } else {
      return "";
    //#day.java:167: end of method: String net.sourceforge.pebble.domain.Day.getPermalink()
    }
  }

  /**
   * Gets a Collection containing all the blog entries for this day.
   *
   * @return    an ordered List of BlogEntry instances
   */
  public List<String> getBlogEntries() {
    return new ArrayList<String>(blogEntries);
    //#day.java:177: method: List net.sourceforge.pebble.domain.Day.getBlogEntries()
    //#input(List getBlogEntries()): this
    //#input(List getBlogEntries()): this.blogEntries
    //#output(List getBlogEntries()): new ArrayList(getBlogEntries#1) num objects
    //#output(List getBlogEntries()): return_value
    //#new obj(List getBlogEntries()): new ArrayList(getBlogEntries#1)
    //#pre[2] (List getBlogEntries()): init'ed(this.blogEntries)
    //#post(List getBlogEntries()): return_value == &new ArrayList(getBlogEntries#1)
    //#post(List getBlogEntries()): new ArrayList(getBlogEntries#1) num objects == 1
    //#day.java:177: end of method: List net.sourceforge.pebble.domain.Day.getBlogEntries()
  }

  public int getNumberOfBlogEntries() {
    return publishedBlogEntries.size();
    //#day.java:181: method: int net.sourceforge.pebble.domain.Day.getNumberOfBlogEntries()
    //#input(int getNumberOfBlogEntries()): this
    //#input(int getNumberOfBlogEntries()): this.publishedBlogEntries
    //#output(int getNumberOfBlogEntries()): return_value
    //#pre[2] (int getNumberOfBlogEntries()): this.publishedBlogEntries != null
    //#post(int getNumberOfBlogEntries()): init'ed(return_value)
    //#day.java:181: end of method: int net.sourceforge.pebble.domain.Day.getNumberOfBlogEntries()
  }

  public synchronized void addPublishedBlogEntry(String blogEntryId) {
    if (!publishedBlogEntries.contains(blogEntryId)) {
    //#day.java:185: method: void net.sourceforge.pebble.domain.Day.addPublishedBlogEntry(String)
    //#input(void addPublishedBlogEntry(String)): blogEntryId
    //#input(void addPublishedBlogEntry(String)): this
    //#input(void addPublishedBlogEntry(String)): this.blogEntries
    //#input(void addPublishedBlogEntry(String)): this.publishedBlogEntries
    //#input(void addPublishedBlogEntry(String)): this.unpublishedBlogEntries
    //#pre[3] (void addPublishedBlogEntry(String)): this.blogEntries != null
    //#pre[4] (void addPublishedBlogEntry(String)): this.publishedBlogEntries != null
    //#pre[5] (void addPublishedBlogEntry(String)): this.unpublishedBlogEntries != null
    //#test_vector(void addPublishedBlogEntry(String)): java.util.List:contains(...)@185: {1}, {0}
    //#test_vector(void addPublishedBlogEntry(String)): java.util.List:contains(...)@191: {1}, {0}
      publishedBlogEntries.add(blogEntryId);
      Collections.sort(publishedBlogEntries, new ReverseBlogEntryIdComparator());
    }
    unpublishedBlogEntries.remove(blogEntryId);

    if (!blogEntries.contains(blogEntryId)) {
      // and add to the aggregated view
      blogEntries.add(blogEntryId);
      Collections.sort(blogEntries, new ReverseBlogEntryIdComparator());
    }
  }
    //#day.java:196: end of method: void net.sourceforge.pebble.domain.Day.addPublishedBlogEntry(String)

  public synchronized void addUnpublishedBlogEntry(String blogEntryId) {
    if (!unpublishedBlogEntries.contains(blogEntryId)) {
    //#day.java:199: method: void net.sourceforge.pebble.domain.Day.addUnpublishedBlogEntry(String)
    //#input(void addUnpublishedBlogEntry(String)): blogEntryId
    //#input(void addUnpublishedBlogEntry(String)): this
    //#input(void addUnpublishedBlogEntry(String)): this.blogEntries
    //#input(void addUnpublishedBlogEntry(String)): this.publishedBlogEntries
    //#input(void addUnpublishedBlogEntry(String)): this.unpublishedBlogEntries
    //#pre[3] (void addUnpublishedBlogEntry(String)): this.blogEntries != null
    //#pre[4] (void addUnpublishedBlogEntry(String)): this.publishedBlogEntries != null
    //#pre[5] (void addUnpublishedBlogEntry(String)): this.unpublishedBlogEntries != null
    //#test_vector(void addUnpublishedBlogEntry(String)): java.util.List:contains(...)@199: {1}, {0}
    //#test_vector(void addUnpublishedBlogEntry(String)): java.util.List:contains(...)@205: {1}, {0}
      unpublishedBlogEntries.add(blogEntryId);
      Collections.sort(unpublishedBlogEntries, new ReverseBlogEntryIdComparator());
    }
    publishedBlogEntries.remove(blogEntryId);

    if (!blogEntries.contains(blogEntryId)) {
      // and add to the aggregated view
      blogEntries.add(blogEntryId);
      Collections.sort(blogEntries, new ReverseBlogEntryIdComparator());
    }
  }
    //#day.java:210: end of method: void net.sourceforge.pebble.domain.Day.addUnpublishedBlogEntry(String)

  public synchronized void removeBlogEntry(BlogEntry blogEntry) {
    publishedBlogEntries.remove(blogEntry.getId());
    //#day.java:213: method: void net.sourceforge.pebble.domain.Day.removeBlogEntry(BlogEntry)
    //#day.java:213: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.domain.BlogEntry:getId()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Day
    //#    method: void removeBlogEntry(BlogEntry)
    //#    unanalyzed callee: String net.sourceforge.pebble.domain.BlogEntry:getId()
    //#input(void removeBlogEntry(BlogEntry)): blogEntry
    //#input(void removeBlogEntry(BlogEntry)): this
    //#input(void removeBlogEntry(BlogEntry)): this.blogEntries
    //#input(void removeBlogEntry(BlogEntry)): this.publishedBlogEntries
    //#input(void removeBlogEntry(BlogEntry)): this.unpublishedBlogEntries
    //#pre[1] (void removeBlogEntry(BlogEntry)): blogEntry != null
    //#pre[3] (void removeBlogEntry(BlogEntry)): this.blogEntries != null
    //#pre[4] (void removeBlogEntry(BlogEntry)): this.publishedBlogEntries != null
    //#pre[5] (void removeBlogEntry(BlogEntry)): this.unpublishedBlogEntries != null
    unpublishedBlogEntries.remove(blogEntry.getId());
    //#day.java:214: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.domain.BlogEntry:getId()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Day
    //#    method: void removeBlogEntry(BlogEntry)
    //#    unanalyzed callee: String net.sourceforge.pebble.domain.BlogEntry:getId()
    blogEntries.remove(blogEntry.getId());
    //#day.java:215: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.domain.BlogEntry:getId()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.domain.Day
    //#    method: void removeBlogEntry(BlogEntry)
    //#    unanalyzed callee: String net.sourceforge.pebble.domain.BlogEntry:getId()
  }
    //#day.java:216: end of method: void net.sourceforge.pebble.domain.Day.removeBlogEntry(BlogEntry)

//  /**
//   * Gets a Collection containing all the blog entries for this day and the
//   * specified category.
//   *
//   * @param   category    a Category instance, or null
//   * @return    an ordered List of BlogEntry instances
//   */
//  public List getEntries(Category category) {
//    if (category == null) {
//      return this.getEntries();
//    } else {
//      List blogEntries = new ArrayList();
//      Iterator it = getEntries().iterator();
//      while (it.hasNext()) {
//        BlogEntry blogEntry = (BlogEntry)it.next();
//        if (blogEntry.inCategory(category)) {
//          blogEntries.add(blogEntry);
//        }
//      }
//      return blogEntries;
//    }
//  }

//  /**
//   * Gets a Collection containing all the blog entries for this day and the
//   * specified tag.
//   *
//   * @param     tag    a Strng
//   * @return    an ordered List of BlogEntry instances
//   */
//  public List getEntries(String tag) {
//    if (tag == null) {
//      return this.getEntries();
//    } else {
//      List blogEntries = new ArrayList();
//      Iterator it = getEntries().iterator();
//      while (it.hasNext()) {
//        BlogEntry blogEntry = (BlogEntry)it.next();
//        if (blogEntry.hasTag(tag)) {
//          blogEntries.add(blogEntry);
//        }
//      }
//      return blogEntries;
//    }
//  }

//  /**
//   * Gets a specific blog entry.
//   *
//   * @param entryId   the blog entry id
//   * @return  the corresponding BlogEntry instance, or null if a BlogEntry
//   *          with the specified id doesn't exist
//   */
//  public BlogEntry getEntry(String entryId) {
//    Iterator it = entries.iterator();
//    BlogEntry blogEntry;
//    while (it.hasNext()) {
//      blogEntry = (BlogEntry)it.next();
//      if (blogEntry.getId().equals(entryId)) {
//        return blogEntry;
//      }
//    }
//    return null;
//  }

//  /**
//   * Adds a given blog entry.
//   *
//   * @param entry   the BlogEntry instance to add
//   */
//  public synchronized void addEntry(BlogEntry entry) {
//    if (entry == null) {
//      return;
//    }
//
//    BlogEntry existing = getEntry(entry.getId());
//    if (existing != null && existing != entry) {
//      // there is already an entry with the same ID, so increment and try again
//      entry.setDate(new Date(entry.getDate().getTime() + 1));
//      addEntry(entry);
//    } else if (!entries.contains(entry)) {
//      entries.add(entry);
//      Collections.sort(entries, new BlogEntryComparator());
//      entry.setDay(this);
//      entry.setType(BlogEntry.PUBLISHED);
//
//      // now that the entries have been loaded, enable events
//      // so that listeners get notified when they change
//      entry.setEventsEnabled(true);
//
//      // and notify listeners
//      ((Blog)getBlog()).getEventDispatcher().fireBlogEntryEvent(new BlogEntryEvent(entry, BlogEntryEvent.BLOG_ENTRY_ADDED));
//    }
//  }

//  /**
//   * Removes a given blog entry.
//   *
//   * @param entry   the BlogEntry instance to remove
//   */
//  public synchronized void removeEntry(BlogEntry entry) {
//    if (entry != null) {
//      getBlog().getEventDispatcher().fireBlogEntryEvent(new BlogEntryEvent(entry, BlogEntryEvent.BLOG_ENTRY_REMOVED));
//      entries.remove(entry);
//      entry.setDay(null);
//    }
//  }

  /**
   * Determines whether this day has entries.
   *
   * @return    true if this blog contains entries, false otherwise
   */
  public boolean hasBlogEntries() {
    return !publishedBlogEntries.isEmpty();
    //#day.java:332: method: bool net.sourceforge.pebble.domain.Day.hasBlogEntries()
    //#input(bool hasBlogEntries()): this
    //#input(bool hasBlogEntries()): this.publishedBlogEntries
    //#output(bool hasBlogEntries()): return_value
    //#pre[2] (bool hasBlogEntries()): this.publishedBlogEntries != null
    //#post(bool hasBlogEntries()): init'ed(return_value)
    //#day.java:332: end of method: bool net.sourceforge.pebble.domain.Day.hasBlogEntries()
  }

  /**
   * Gets the Day instance for the previous day.
   *
   * @return    a Day instance
   */
  public Day getPreviousDay() {
    return month.getBlogForPreviousDay(this);
    //#day.java:341: method: Day net.sourceforge.pebble.domain.Day.getPreviousDay()
    //#input(Day getPreviousDay()): __Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Day getPreviousDay()): __Descendant_Table[others]
    //#input(Day getPreviousDay()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getPreviousDay()): __Dispatch_Table.getDay()I
    //#input(Day getPreviousDay()): __Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getPreviousDay()): __Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForPreviousYear(Lnet/sourceforge/pebble/domain/Year;)Lnet/sourceforge/pebble/domain/Year;
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForDay(I)Lnet/sourceforge/pebble/domain/Day;
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForLastDay()Lnet/sourceforge/pebble/domain/Day;
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForPreviousDay(Lnet/sourceforge/pebble/domain/Day;)Lnet/sourceforge/pebble/domain/Day;
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForPreviousMonth(Lnet/sourceforge/pebble/domain/Month;)Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Day getPreviousDay()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getPreviousDay()): this
    //#input(Day getPreviousDay()): this.__Tag
    //#input(Day getPreviousDay()): this.day
    //#input(Day getPreviousDay()): this.month
    //#input(Day getPreviousDay()): this.month...__Tag
    //#input(Day getPreviousDay()): this.month...dailyBlogs.length
    //#input(Day getPreviousDay()): this.month.__Tag
    //#input(Day getPreviousDay()): this.month.dailyBlogs
    //#input(Day getPreviousDay()): this.month.dailyBlogs.length
    //#input(Day getPreviousDay()): this.month.dailyBlogs[0..4_294_967_294]
    //#input(Day getPreviousDay()): this.month.lastDayInMonth
    //#input(Day getPreviousDay()): this.month.month
    //#input(Day getPreviousDay()): this.month.year
    //#input(Day getPreviousDay()): this.month.year.__Tag
    //#input(Day getPreviousDay()): this.month.year.blog
    //#input(Day getPreviousDay()): this.month.year.blog.__Tag
    //#input(Day getPreviousDay()): this.month.year.blog.years
    //#input(Day getPreviousDay()): this.month.year.months
    //#input(Day getPreviousDay()): this.month.year.months.length
    //#input(Day getPreviousDay()): this.month.year.months[0..4_294_967_294]
    //#input(Day getPreviousDay()): this.month.year.year
    //#output(Day getPreviousDay()): new ArrayList(Day#1) num objects
    //#output(Day getPreviousDay()): new ArrayList(Day#2) num objects
    //#output(Day getPreviousDay()): new ArrayList(Day#3) num objects
    //#output(Day getPreviousDay()): new Day(Month#2) num objects
    //#output(Day getPreviousDay()): new Day(Month#2).__Tag
    //#output(Day getPreviousDay()): new Day(Month#2).blog
    //#output(Day getPreviousDay()): new Day(Month#2).blogEntries
    //#output(Day getPreviousDay()): new Day(Month#2).date
    //#output(Day getPreviousDay()): new Day(Month#2).day
    //#output(Day getPreviousDay()): new Day(Month#2).month
    //#output(Day getPreviousDay()): new Day(Month#2).publishedBlogEntries
    //#output(Day getPreviousDay()): new Day(Month#2).unpublishedBlogEntries
    //#output(Day getPreviousDay()): return_value
    //#new obj(Day getPreviousDay()): new ArrayList(Day#1)
    //#new obj(Day getPreviousDay()): new ArrayList(Day#2)
    //#new obj(Day getPreviousDay()): new ArrayList(Day#3)
    //#new obj(Day getPreviousDay()): new Day(Month#2)
    //#pre[2] (Day getPreviousDay()): this.__Tag == net/sourceforge/pebble/domain/Day
    //#pre[3] (Day getPreviousDay()): init'ed(this.day)
    //#pre[4] (Day getPreviousDay()): this.month != null
    //#pre[10] (Day getPreviousDay()): this.month.__Tag == net/sourceforge/pebble/domain/Month
    //#pre[11] (Day getPreviousDay()): (soft) this.month.dailyBlogs != null
    //#pre[12] (Day getPreviousDay()): (soft) this.month.dailyBlogs.length >= 1
    //#pre[13] (Day getPreviousDay()): (soft) this.day <= this.month.dailyBlogs.length + 1
    //#pre[14] (Day getPreviousDay()): (soft) init'ed(this.month.dailyBlogs[0..4_294_967_294])
    //#pre[15] (Day getPreviousDay()): (soft) init'ed(this.month.lastDayInMonth)
    //#pre[16] (Day getPreviousDay()): (soft) this.month.month <= 13
    //#pre[17] (Day getPreviousDay()): (soft) this.month.month <= this.month.year.months.length + 1
    //#pre[18] (Day getPreviousDay()): (soft) this.month.year != null
    //#pre[19] (Day getPreviousDay()): (soft) this.month.year.__Tag == net/sourceforge/pebble/domain/Year
    //#pre[20] (Day getPreviousDay()): (soft) this.month.year.blog != null
    //#pre[21] (Day getPreviousDay()): (soft) this.month.year.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[22] (Day getPreviousDay()): (soft) this.month.year.blog.years != null
    //#pre[23] (Day getPreviousDay()): (soft) this.month.year.months != null
    //#pre[25] (Day getPreviousDay()): (soft) init'ed(this.month.year.months[0..4_294_967_294])
    //#pre[26] (Day getPreviousDay()): (soft) this.month.year.year >= -2_147_483_647
    //#post(Day getPreviousDay()): init'ed(return_value)
    //#post(Day getPreviousDay()): init'ed(new ArrayList(Day#1) num objects)
    //#post(Day getPreviousDay()): init'ed(new ArrayList(Day#2) num objects)
    //#post(Day getPreviousDay()): init'ed(new ArrayList(Day#3) num objects)
    //#post(Day getPreviousDay()): init'ed(new Day(Month#2) num objects)
    //#post(Day getPreviousDay()): init'ed(new Day(Month#2).__Tag)
    //#post(Day getPreviousDay()): init'ed(new Day(Month#2).blog)
    //#post(Day getPreviousDay()): init'ed(new Day(Month#2).blogEntries)
    //#post(Day getPreviousDay()): init'ed(new Day(Month#2).date)
    //#post(Day getPreviousDay()): init'ed(new Day(Month#2).day)
    //#post(Day getPreviousDay()): init'ed(new Day(Month#2).month)
    //#post(Day getPreviousDay()): init'ed(new Day(Month#2).publishedBlogEntries)
    //#post(Day getPreviousDay()): init'ed(new Day(Month#2).unpublishedBlogEntries)
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:getBlog
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:getYear
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:getMonth
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:setDate
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:getBlogForPreviousYear
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:java.util.List:add
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Day getPreviousDay()): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#day.java:341: end of method: Day net.sourceforge.pebble.domain.Day.getPreviousDay()
  }

  /**
   * Gets the Day instance for the next day.
   *
   * @return    a Day instance
   */
  public Day getNextDay() {
    return month.getBlogForNextDay(this);
    //#day.java:350: method: Day net.sourceforge.pebble.domain.Day.getNextDay()
    //#day.java:350: Warning: suspicious precondition
    //#    the precondition for this.month.month - this.month.year.months.length is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: net.sourceforge.pebble.domain.Day
    //#    method: Day getNextDay()
    //#    suspicious precondition index: [18]
    //#    Attribs:  Soft
    //#input(Day getNextDay()): __Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Day getNextDay()): __Descendant_Table[others]
    //#input(Day getNextDay()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getNextDay()): __Dispatch_Table.getDay()I
    //#input(Day getNextDay()): __Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getNextDay()): __Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForNextYear(Lnet/sourceforge/pebble/domain/Year;)Lnet/sourceforge/pebble/domain/Year;
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getBlogForYear(I)Lnet/sourceforge/pebble/domain/Year;
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForDay(I)Lnet/sourceforge/pebble/domain/Day;
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForFirstDay()Lnet/sourceforge/pebble/domain/Day;
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getBlogForNextDay(Lnet/sourceforge/pebble/domain/Day;)Lnet/sourceforge/pebble/domain/Day;
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForMonth(I)Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getBlogForNextMonth(Lnet/sourceforge/pebble/domain/Month;)Lnet/sourceforge/pebble/domain/Month;
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Day getNextDay()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.setDate(Ljava/util/Date;)V
    //#input(Day getNextDay()): this
    //#input(Day getNextDay()): this.__Tag
    //#input(Day getNextDay()): this.day
    //#input(Day getNextDay()): this.month
    //#input(Day getNextDay()): this.month...__Tag
    //#input(Day getNextDay()): this.month...dailyBlogs.length
    //#input(Day getNextDay()): this.month.__Tag
    //#input(Day getNextDay()): this.month.dailyBlogs
    //#input(Day getNextDay()): this.month.dailyBlogs.length
    //#input(Day getNextDay()): this.month.dailyBlogs[0..4_294_967_294]
    //#input(Day getNextDay()): this.month.lastDayInMonth
    //#input(Day getNextDay()): this.month.month
    //#input(Day getNextDay()): this.month.year
    //#input(Day getNextDay()): this.month.year.__Tag
    //#input(Day getNextDay()): this.month.year.blog
    //#input(Day getNextDay()): this.month.year.blog.__Tag
    //#input(Day getNextDay()): this.month.year.blog.years
    //#input(Day getNextDay()): this.month.year.months
    //#input(Day getNextDay()): this.month.year.months.length
    //#input(Day getNextDay()): this.month.year.months[0..4_294_967_294]
    //#input(Day getNextDay()): this.month.year.year
    //#output(Day getNextDay()): new ArrayList(Day#1) num objects
    //#output(Day getNextDay()): new ArrayList(Day#2) num objects
    //#output(Day getNextDay()): new ArrayList(Day#3) num objects
    //#output(Day getNextDay()): new Day(Month#2) num objects
    //#output(Day getNextDay()): new Day(Month#2).__Tag
    //#output(Day getNextDay()): new Day(Month#2).blog
    //#output(Day getNextDay()): new Day(Month#2).blogEntries
    //#output(Day getNextDay()): new Day(Month#2).date
    //#output(Day getNextDay()): new Day(Month#2).day
    //#output(Day getNextDay()): new Day(Month#2).month
    //#output(Day getNextDay()): new Day(Month#2).publishedBlogEntries
    //#output(Day getNextDay()): new Day(Month#2).unpublishedBlogEntries
    //#output(Day getNextDay()): return_value
    //#new obj(Day getNextDay()): new ArrayList(Day#1)
    //#new obj(Day getNextDay()): new ArrayList(Day#2)
    //#new obj(Day getNextDay()): new ArrayList(Day#3)
    //#new obj(Day getNextDay()): new Day(Month#2)
    //#pre[2] (Day getNextDay()): this.__Tag == net/sourceforge/pebble/domain/Day
    //#pre[3] (Day getNextDay()): init'ed(this.day)
    //#pre[4] (Day getNextDay()): this.day - this.month.lastDayInMonth in -4_294_967_295..6_442_450_943
    //#pre[5] (Day getNextDay()): this.month != null
    //#pre[11] (Day getNextDay()): this.month.__Tag == net/sourceforge/pebble/domain/Month
    //#pre[16] (Day getNextDay()): init'ed(this.month.lastDayInMonth)
    //#pre[12] (Day getNextDay()): (soft) this.month.dailyBlogs != null
    //#pre[13] (Day getNextDay()): (soft) this.month.dailyBlogs.length >= 1
    //#pre[14] (Day getNextDay()): (soft) this.day < this.month.dailyBlogs.length
    //#pre[15] (Day getNextDay()): (soft) init'ed(this.month.dailyBlogs[0..4_294_967_294])
    //#pre[17] (Day getNextDay()): (soft) this.month.month >= 0
    //#pre[18] (Day getNextDay()): (soft) this.month.month - this.month.year.months.length in {-Inf..-1, 12..4_294_967_295}
    //#pre[19] (Day getNextDay()): (soft) this.month.year != null
    //#pre[20] (Day getNextDay()): (soft) this.month.year.__Tag == net/sourceforge/pebble/domain/Year
    //#pre[21] (Day getNextDay()): (soft) this.month.year.blog != null
    //#pre[22] (Day getNextDay()): (soft) this.month.year.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[23] (Day getNextDay()): (soft) this.month.year.blog.years != null
    //#pre[24] (Day getNextDay()): (soft) this.month.year.months != null
    //#pre[26] (Day getNextDay()): (soft) init'ed(this.month.year.months[0..4_294_967_294])
    //#pre[27] (Day getNextDay()): (soft) this.month.year.year <= 4_294_967_294
    //#post(Day getNextDay()): init'ed(return_value)
    //#post(Day getNextDay()): init'ed(new ArrayList(Day#1) num objects)
    //#post(Day getNextDay()): init'ed(new ArrayList(Day#2) num objects)
    //#post(Day getNextDay()): init'ed(new ArrayList(Day#3) num objects)
    //#post(Day getNextDay()): init'ed(new Day(Month#2) num objects)
    //#post(Day getNextDay()): init'ed(new Day(Month#2).__Tag)
    //#post(Day getNextDay()): init'ed(new Day(Month#2).blog)
    //#post(Day getNextDay()): init'ed(new Day(Month#2).blogEntries)
    //#post(Day getNextDay()): init'ed(new Day(Month#2).date)
    //#post(Day getNextDay()): init'ed(new Day(Month#2).day)
    //#post(Day getNextDay()): init'ed(new Day(Month#2).month)
    //#post(Day getNextDay()): init'ed(new Day(Month#2).publishedBlogEntries)
    //#post(Day getNextDay()): init'ed(new Day(Month#2).unpublishedBlogEntries)
    //#unanalyzed(Day getNextDay()): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(Day getNextDay()): Effects-of-calling:java.util.Calendar:getTime
    //#unanalyzed(Day getNextDay()): Effects-of-calling:getBlog
    //#unanalyzed(Day getNextDay()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Day getNextDay()): Effects-of-calling:getYear
    //#unanalyzed(Day getNextDay()): Effects-of-calling:getMonth
    //#unanalyzed(Day getNextDay()): Effects-of-calling:net.sourceforge.pebble.domain.Month:getBlog
    //#unanalyzed(Day getNextDay()): Effects-of-calling:net.sourceforge.pebble.domain.TimePeriod
    //#unanalyzed(Day getNextDay()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Day getNextDay()): Effects-of-calling:setDate
    //#unanalyzed(Day getNextDay()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Day getNextDay()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Day getNextDay()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Day getNextDay()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(Day getNextDay()): Effects-of-calling:getBlogForNextYear
    //#unanalyzed(Day getNextDay()): Effects-of-calling:getBlogForFirstDay
    //#unanalyzed(Day getNextDay()): Effects-of-calling:net.sourceforge.pebble.domain.Month
    //#unanalyzed(Day getNextDay()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Day getNextDay()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Day getNextDay()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Day getNextDay()): Effects-of-calling:java.util.List:add
    //#unanalyzed(Day getNextDay()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(Day getNextDay()): Effects-of-calling:java.util.Calendar:setTime
    //#unanalyzed(Day getNextDay()): Effects-of-calling:java.util.Calendar:getActualMaximum
    //#day.java:350: end of method: Day net.sourceforge.pebble.domain.Day.getNextDay()
  }

  /**
   * Gets the blog entry posted previous (before) to the one specified.
   *
   * @param   blogEntry   a BlogEntry
   * @return  the previous BlogEntry, or null if one doesn't exist
   */
  public String getPreviousBlogEntry(String blogEntry) {
    int index = publishedBlogEntries.indexOf(blogEntry);
    //#day.java:360: method: String net.sourceforge.pebble.domain.Day.getPreviousBlogEntry(String)
    //#input(String getPreviousBlogEntry(String)): blogEntry
    //#input(String getPreviousBlogEntry(String)): this
    //#input(String getPreviousBlogEntry(String)): this.publishedBlogEntries
    //#output(String getPreviousBlogEntry(String)): return_value
    //#pre[3] (String getPreviousBlogEntry(String)): this.publishedBlogEntries != null
    //#post(String getPreviousBlogEntry(String)): init'ed(return_value)
    //#test_vector(String getPreviousBlogEntry(String)): java.util.List:indexOf(...)@360: {-2_147_483_648..-1}, {0..4_294_967_293}
    if (index >= 0 && index < (publishedBlogEntries.size()-1)) {
      return publishedBlogEntries.get(index+1);
    } else {
      return null;
    //#day.java:364: end of method: String net.sourceforge.pebble.domain.Day.getPreviousBlogEntry(String)
    }
  }

  /**
   * Gets the first entry that was posted on this day.
   *
   * @return    a BlogEntry instance, or null is no entries have been posted
   */
  public String getFirstBlogEntry() {
    if (!publishedBlogEntries.isEmpty()) {
    //#day.java:374: method: String net.sourceforge.pebble.domain.Day.getFirstBlogEntry()
    //#input(String getFirstBlogEntry()): this
    //#input(String getFirstBlogEntry()): this.publishedBlogEntries
    //#output(String getFirstBlogEntry()): return_value
    //#pre[2] (String getFirstBlogEntry()): this.publishedBlogEntries != null
    //#presumption(String getFirstBlogEntry()): java.util.List:size(...)@375 >= -2_147_483_647
    //#post(String getFirstBlogEntry()): init'ed(return_value)
    //#test_vector(String getFirstBlogEntry()): java.util.List:isEmpty(...)@374: {1}, {0}
      return publishedBlogEntries.get(publishedBlogEntries.size()-1);
    } else {
      return null;
    //#day.java:377: end of method: String net.sourceforge.pebble.domain.Day.getFirstBlogEntry()
    }
  }

  /**
   * Gets the last entry that was posted on this day.
   *
   * @return    a BlogEntry instance, or null is no entries have been posted
   */
  public String getLastBlogEntry() {
    if (!publishedBlogEntries.isEmpty()) {
    //#day.java:387: method: String net.sourceforge.pebble.domain.Day.getLastBlogEntry()
    //#input(String getLastBlogEntry()): this
    //#input(String getLastBlogEntry()): this.publishedBlogEntries
    //#output(String getLastBlogEntry()): return_value
    //#pre[2] (String getLastBlogEntry()): this.publishedBlogEntries != null
    //#post(String getLastBlogEntry()): init'ed(return_value)
    //#test_vector(String getLastBlogEntry()): java.util.List:isEmpty(...)@387: {1}, {0}
      return publishedBlogEntries.get(0);
    } else {
      return null;
    //#day.java:390: end of method: String net.sourceforge.pebble.domain.Day.getLastBlogEntry()
    }
  }

  /**
   * Gets the blog entry posted next (afterwards) to the one specified.
   *
   * @param blogEntry   a BlogEntry
   * @return  the next BlogEntry, or null if one doesn't exist
   */
  public String getNextBlogEntry(String blogEntry) {
    int index = publishedBlogEntries.lastIndexOf(blogEntry);
    //#day.java:401: method: String net.sourceforge.pebble.domain.Day.getNextBlogEntry(String)
    //#input(String getNextBlogEntry(String)): blogEntry
    //#input(String getNextBlogEntry(String)): this
    //#input(String getNextBlogEntry(String)): this.publishedBlogEntries
    //#output(String getNextBlogEntry(String)): return_value
    //#pre[3] (String getNextBlogEntry(String)): this.publishedBlogEntries != null
    //#post(String getNextBlogEntry(String)): init'ed(return_value)
    //#test_vector(String getNextBlogEntry(String)): java.util.List:lastIndexOf(...)@401: {-2_147_483_648..0}, {1..4_294_967_295}
    if (index > 0 && index <= publishedBlogEntries.size()) {
      return publishedBlogEntries.get(index-1);
    } else {
      return null;
    //#day.java:405: end of method: String net.sourceforge.pebble.domain.Day.getNextBlogEntry(String)
    }
  }

  public Date getStartOfDay() {
    Calendar cal = getCalendar();
    //#day.java:410: method: Date net.sourceforge.pebble.domain.Day.getStartOfDay()
    //#input(Date getStartOfDay()): __Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Date getStartOfDay()): __Descendant_Table[others]
    //#input(Date getStartOfDay()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Date getStartOfDay()): __Dispatch_Table.getDay()I
    //#input(Date getStartOfDay()): __Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Date getStartOfDay()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Date getStartOfDay()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Date getStartOfDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Date getStartOfDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Date getStartOfDay()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Date getStartOfDay()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Date getStartOfDay()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Date getStartOfDay()): this
    //#input(Date getStartOfDay()): this.__Tag
    //#input(Date getStartOfDay()): this.blog
    //#input(Date getStartOfDay()): this.day
    //#input(Date getStartOfDay()): this.month
    //#input(Date getStartOfDay()): this.month.__Tag
    //#input(Date getStartOfDay()): this.month.month
    //#input(Date getStartOfDay()): this.month.year
    //#input(Date getStartOfDay()): this.month.year.__Tag
    //#input(Date getStartOfDay()): this.month.year.year
    //#output(Date getStartOfDay()): return_value
    //#pre[2] (Date getStartOfDay()): this.__Tag == net/sourceforge/pebble/domain/Day
    //#pre[3] (Date getStartOfDay()): this.blog != null
    //#pre[4] (Date getStartOfDay()): init'ed(this.day)
    //#pre[5] (Date getStartOfDay()): this.month != null
    //#pre[6] (Date getStartOfDay()): this.month.__Tag == net/sourceforge/pebble/domain/Month
    //#pre[7] (Date getStartOfDay()): this.month.month >= -2_147_483_647
    //#pre[8] (Date getStartOfDay()): this.month.year != null
    //#pre[9] (Date getStartOfDay()): this.month.year.__Tag == net/sourceforge/pebble/domain/Year
    //#pre[10] (Date getStartOfDay()): init'ed(this.month.year.year)
    //#post(Date getStartOfDay()): init'ed(return_value)
    //#unanalyzed(Date getStartOfDay()): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(Date getStartOfDay()): Effects-of-calling:getBlog
    //#unanalyzed(Date getStartOfDay()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Date getStartOfDay()): Effects-of-calling:getYear
    //#unanalyzed(Date getStartOfDay()): Effects-of-calling:getMonth
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 1);

    return cal.getTime();
    //#day.java:416: end of method: Date net.sourceforge.pebble.domain.Day.getStartOfDay()
  }

  public Date getEndOfDay() {
    Calendar cal = getCalendar();
    //#day.java:420: method: Date net.sourceforge.pebble.domain.Day.getEndOfDay()
    //#input(Date getEndOfDay()): __Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(Date getEndOfDay()): __Descendant_Table[others]
    //#input(Date getEndOfDay()): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(Date getEndOfDay()): __Dispatch_Table.getDay()I
    //#input(Date getEndOfDay()): __Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#input(Date getEndOfDay()): net/sourceforge/pebble/domain/Month.__Descendant_Table[net/sourceforge/pebble/domain/Month]
    //#input(Date getEndOfDay()): net/sourceforge/pebble/domain/Month.__Descendant_Table[others]
    //#input(Date getEndOfDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getMonth()I
    //#input(Date getEndOfDay()): net/sourceforge/pebble/domain/Month.__Dispatch_Table.getYear()Lnet/sourceforge/pebble/domain/Year;
    //#input(Date getEndOfDay()): net/sourceforge/pebble/domain/Year.__Descendant_Table[net/sourceforge/pebble/domain/Year]
    //#input(Date getEndOfDay()): net/sourceforge/pebble/domain/Year.__Descendant_Table[others]
    //#input(Date getEndOfDay()): net/sourceforge/pebble/domain/Year.__Dispatch_Table.getYear()I
    //#input(Date getEndOfDay()): this
    //#input(Date getEndOfDay()): this.__Tag
    //#input(Date getEndOfDay()): this.blog
    //#input(Date getEndOfDay()): this.day
    //#input(Date getEndOfDay()): this.month
    //#input(Date getEndOfDay()): this.month.__Tag
    //#input(Date getEndOfDay()): this.month.month
    //#input(Date getEndOfDay()): this.month.year
    //#input(Date getEndOfDay()): this.month.year.__Tag
    //#input(Date getEndOfDay()): this.month.year.year
    //#output(Date getEndOfDay()): return_value
    //#pre[2] (Date getEndOfDay()): this.__Tag == net/sourceforge/pebble/domain/Day
    //#pre[3] (Date getEndOfDay()): this.blog != null
    //#pre[4] (Date getEndOfDay()): init'ed(this.day)
    //#pre[5] (Date getEndOfDay()): this.month != null
    //#pre[6] (Date getEndOfDay()): this.month.__Tag == net/sourceforge/pebble/domain/Month
    //#pre[7] (Date getEndOfDay()): this.month.month >= -2_147_483_647
    //#pre[8] (Date getEndOfDay()): this.month.year != null
    //#pre[9] (Date getEndOfDay()): this.month.year.__Tag == net/sourceforge/pebble/domain/Year
    //#pre[10] (Date getEndOfDay()): init'ed(this.month.year.year)
    //#post(Date getEndOfDay()): init'ed(return_value)
    //#unanalyzed(Date getEndOfDay()): Effects-of-calling:java.util.Calendar:set
    //#unanalyzed(Date getEndOfDay()): Effects-of-calling:getBlog
    //#unanalyzed(Date getEndOfDay()): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getCalendar
    //#unanalyzed(Date getEndOfDay()): Effects-of-calling:getYear
    //#unanalyzed(Date getEndOfDay()): Effects-of-calling:getMonth
    cal.set(Calendar.HOUR_OF_DAY, 23);
    cal.set(Calendar.MINUTE, 59);
    cal.set(Calendar.SECOND, 59);
    cal.set(Calendar.MILLISECOND, 999);

    return cal.getTime();
    //#day.java:426: end of method: Date net.sourceforge.pebble.domain.Day.getEndOfDay()
  }

  /**
   * Determines if the this Day is before (in the calendar) the
   * specified Day.
   *
   * @return  true if this instance represents an earlier month than the
   *          specified Day instance, false otherwise
   */
  public boolean before(Day day) {
    return getDate().before(day.getDate());
    //#day.java:437: method: bool net.sourceforge.pebble.domain.Day.before(Day)
    //#input(bool before(Day)): __Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#input(bool before(Day)): __Descendant_Table[others]
    //#input(bool before(Day)): __Dispatch_Table.getDate()Ljava/util/Date;
    //#input(bool before(Day)): day
    //#input(bool before(Day)): day.__Tag
    //#input(bool before(Day)): day.date
    //#input(bool before(Day)): this
    //#input(bool before(Day)): this.__Tag
    //#input(bool before(Day)): this.date
    //#output(bool before(Day)): return_value
    //#pre[1] (bool before(Day)): day != null
    //#pre[2] (bool before(Day)): day.__Tag == net/sourceforge/pebble/domain/Day
    //#pre[3] (bool before(Day)): init'ed(day.date)
    //#pre[5] (bool before(Day)): this.__Tag == net/sourceforge/pebble/domain/Day
    //#pre[6] (bool before(Day)): this.date != null
    //#post(bool before(Day)): init'ed(return_value)
    //#day.java:437: end of method: bool net.sourceforge.pebble.domain.Day.before(Day)
  }

}    //#output(net.sourceforge.pebble.domain.Day__static_init): __Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.addPublishedBlogEntry(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.addUnpublishedBlogEntry(Ljava/lang/String;)V
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.before(Lnet/sourceforge/pebble/domain/Day;)Z
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getBlogEntries()Ljava/util/List;
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getDate()Ljava/util/Date;
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getDay()I
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getEndOfDay()Ljava/util/Date;
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getFirstBlogEntry()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getLastBlogEntry()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month;
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getNextBlogEntry(Ljava/lang/String;)Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getNextDay()Lnet/sourceforge/pebble/domain/Day;
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getNumberOfBlogEntries()I
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getPermalink()Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getPreviousBlogEntry(Ljava/lang/String;)Ljava/lang/String;
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getPreviousDay()Lnet/sourceforge/pebble/domain/Day;
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getStartOfDay()Ljava/util/Date;
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.hasBlogEntries()Z
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.removeBlogEntry(Lnet/sourceforge/pebble/domain/BlogEntry;)V
    //#output(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.setDate(Ljava/util/Date;)V
    //#output(net.sourceforge.pebble.domain.Day__static_init): net/sourceforge/pebble/domain/Permalinkable.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#output(net.sourceforge.pebble.domain.Day__static_init): net/sourceforge/pebble/domain/TimePeriod.__Descendant_Table[net/sourceforge/pebble/domain/Day]
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Descendant_Table[net/sourceforge/pebble/domain/Day] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.domain.Day__static_init): net/sourceforge/pebble/domain/Permalinkable.__Descendant_Table[net/sourceforge/pebble/domain/Day] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.domain.Day__static_init): net/sourceforge/pebble/domain/TimePeriod.__Descendant_Table[net/sourceforge/pebble/domain/Day] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.addPublishedBlogEntry(Ljava/lang/String;)V == &addPublishedBlogEntry
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.addUnpublishedBlogEntry(Ljava/lang/String;)V == &addUnpublishedBlogEntry
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.before(Lnet/sourceforge/pebble/domain/Day;)Z == &before
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog; == &net/sourceforge/pebble/domain/TimePeriod.getBlog
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getBlogEntries()Ljava/util/List; == &getBlogEntries
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getCalendar()Ljava/util/Calendar; == &getCalendar
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getDate()Ljava/util/Date; == &net/sourceforge/pebble/domain/TimePeriod.getDate
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getDay()I == &getDay
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getEndOfDay()Ljava/util/Date; == &getEndOfDay
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getFirstBlogEntry()Ljava/lang/String; == &getFirstBlogEntry
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getLastBlogEntry()Ljava/lang/String; == &getLastBlogEntry
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getMonth()Lnet/sourceforge/pebble/domain/Month; == &getMonth
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getNextBlogEntry(Ljava/lang/String;)Ljava/lang/String; == &getNextBlogEntry
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getNextDay()Lnet/sourceforge/pebble/domain/Day; == &getNextDay
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getNumberOfBlogEntries()I == &getNumberOfBlogEntries
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getPermalink()Ljava/lang/String; == &getPermalink
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getPreviousBlogEntry(Ljava/lang/String;)Ljava/lang/String; == &getPreviousBlogEntry
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getPreviousDay()Lnet/sourceforge/pebble/domain/Day; == &getPreviousDay
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.getStartOfDay()Ljava/util/Date; == &getStartOfDay
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.hasBlogEntries()Z == &hasBlogEntries
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.removeBlogEntry(Lnet/sourceforge/pebble/domain/BlogEntry;)V == &removeBlogEntry
    //#post(net.sourceforge.pebble.domain.Day__static_init): __Dispatch_Table.setDate(Ljava/util/Date;)V == &net/sourceforge/pebble/domain/TimePeriod.setDate
    //#day.java:: end of method: net.sourceforge.pebble.domain.Day.net.sourceforge.pebble.domain.Day__static_init
    //#day.java:: end of class: net.sourceforge.pebble.domain.Day
