//# 0 errors, 1,348 messages
//#
/*
    //#searchindex.java:1:1: class: net.sourceforge.pebble.index.SearchIndex
 * 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.index;

import net.sourceforge.pebble.domain.*;
import net.sourceforge.pebble.search.SearchException;
import net.sourceforge.pebble.search.SearchHit;
import net.sourceforge.pebble.search.SearchResults;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.DateField;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Searcher;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.Collection;

/**
 * Wraps up the functionality to index blog entries. This is really just
 * a convenient wrapper around Lucene.
 *
 * @author    Simon Brown
 */
public class SearchIndex {

  /** the log used by this class */
  private static final Log log = LogFactory.getLog(SearchIndex.class);
    //#searchindex.java:69: method: net.sourceforge.pebble.index.SearchIndex.net.sourceforge.pebble.index.SearchIndex__static_init
    //#searchindex.java:69: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: net.sourceforge.pebble.index.SearchIndex__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(net.sourceforge.pebble.index.SearchIndex__static_init): __Descendant_Table[net/sourceforge/pebble/index/SearchIndex]
    //#output(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.clear()V
    //#output(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.getAnalyzer()Lorg/apache/lucene/analysis/Analyzer;
    //#output(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.index(Lnet/sourceforge/pebble/domain/BlogEntry;)V
    //#output(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.index(Lnet/sourceforge/pebble/domain/BlogEntry;Lorg/apache/lucene/index/IndexWriter;)V
    //#output(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.index(Lnet/sourceforge/pebble/domain/StaticPage;)V
    //#output(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.index(Lnet/sourceforge/pebble/domain/StaticPage;Lorg/apache/lucene/index/IndexWriter;)V
    //#output(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.indexBlogEntries(Ljava/util/Collection;)V
    //#output(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.indexStaticPages(Ljava/util/Collection;)V
    //#output(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.search(Ljava/lang/String;)Lnet/sourceforge/pebble/search/SearchResults;
    //#output(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.unindex(Lnet/sourceforge/pebble/domain/BlogEntry;)V
    //#output(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.unindex(Lnet/sourceforge/pebble/domain/StaticPage;)V
    //#output(net.sourceforge.pebble.index.SearchIndex__static_init): log
    //#post(net.sourceforge.pebble.index.SearchIndex__static_init): __Descendant_Table[net/sourceforge/pebble/index/SearchIndex] == &__Dispatch_Table
    //#post(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.clear()V == &clear
    //#post(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.getAnalyzer()Lorg/apache/lucene/analysis/Analyzer; == &getAnalyzer
    //#post(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.index(Lnet/sourceforge/pebble/domain/BlogEntry;)V == &index
    //#post(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.index(Lnet/sourceforge/pebble/domain/BlogEntry;Lorg/apache/lucene/index/IndexWriter;)V == &index
    //#post(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.index(Lnet/sourceforge/pebble/domain/StaticPage;)V == &index
    //#post(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.index(Lnet/sourceforge/pebble/domain/StaticPage;Lorg/apache/lucene/index/IndexWriter;)V == &index
    //#post(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.indexBlogEntries(Ljava/util/Collection;)V == &indexBlogEntries
    //#post(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.indexStaticPages(Ljava/util/Collection;)V == &indexStaticPages
    //#post(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.search(Ljava/lang/String;)Lnet/sourceforge/pebble/search/SearchResults; == &search
    //#post(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.unindex(Lnet/sourceforge/pebble/domain/BlogEntry;)V == &unindex
    //#post(net.sourceforge.pebble.index.SearchIndex__static_init): __Dispatch_Table.unindex(Lnet/sourceforge/pebble/domain/StaticPage;)V == &unindex
    //#post(net.sourceforge.pebble.index.SearchIndex__static_init): init'ed(log)
    //#searchindex.java:69: end of method: net.sourceforge.pebble.index.SearchIndex.net.sourceforge.pebble.index.SearchIndex__static_init

  private final Blog blog;

  public SearchIndex(Blog blog) {
    //#searchindex.java:73: method: void net.sourceforge.pebble.index.SearchIndex.net.sourceforge.pebble.index.SearchIndex(Blog)
    //#input(void net.sourceforge.pebble.index.SearchIndex(Blog)): blog
    //#input(void net.sourceforge.pebble.index.SearchIndex(Blog)): this
    //#output(void net.sourceforge.pebble.index.SearchIndex(Blog)): this.blog
    //#post(void net.sourceforge.pebble.index.SearchIndex(Blog)): this.blog == blog
    //#post(void net.sourceforge.pebble.index.SearchIndex(Blog)): init'ed(this.blog)
    this.blog = blog;
  }
    //#searchindex.java:75: end of method: void net.sourceforge.pebble.index.SearchIndex.net.sourceforge.pebble.index.SearchIndex(Blog)

  /**
   * Clears the index.
   */
  public void clear() {
    File searchDirectory = new File(blog.getSearchIndexDirectory());
    //#searchindex.java:81: method: void net.sourceforge.pebble.index.SearchIndex.clear()
    //#searchindex.java:81: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void clear()
    //#    unanalyzed callee: String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#input(void clear()): log
    //#input(void clear()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void clear()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(void clear()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getLuceneAnalyzer()Ljava/lang/String;
    //#input(void clear()): this
    //#input(void clear()): this.blog
    //#input(void clear()): this.blog.__Tag
    //#input(void clear()): this.blog.properties
    //#pre[2] (void clear()): this.blog != null
    //#pre[3] (void clear()): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[4] (void clear()): (soft) this.blog.properties != null
    //#presumption(void clear()): org.apache.commons.logging.LogFactory:getLog(...)@69 != null
    //#unanalyzed(void clear()): Effects-of-calling:getLuceneAnalyzer
    //#unanalyzed(void clear()): Effects-of-calling:java.lang.Class:forName
    //#unanalyzed(void clear()): Effects-of-calling:java.lang.Class:newInstance
    //#unanalyzed(void clear()): Effects-of-calling:java.util.Properties:getProperty
    //#test_vector(void clear()): java.io.File:exists(...)@82: {1}, {0}
    if (!searchDirectory.exists()) {
      searchDirectory.mkdirs();
    }

    synchronized (blog) {
      try {
        Analyzer analyzer = getAnalyzer();
        IndexWriter writer = new IndexWriter(searchDirectory, analyzer, true);
    //#searchindex.java:89: Warning: method not available
    //#    -- call on void org.apache.lucene.index.IndexWriter(File, Analyzer, bool)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void clear()
    //#    unanalyzed callee: void org.apache.lucene.index.IndexWriter(File, Analyzer, bool)
        writer.close();
    //#searchindex.java:90: Warning: method not available
    //#    -- call on void org.apache.lucene.index.IndexWriter:close()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void clear()
    //#    unanalyzed callee: void org.apache.lucene.index.IndexWriter:close()
      } catch (Exception e) {
        log.error(e.getMessage(), e);
    //#searchindex.java:92: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void clear()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }
    }
  }
    //#searchindex.java:95: end of method: void net.sourceforge.pebble.index.SearchIndex.clear()

  /**
   * Allows a collection of blog entries to be indexed.
   */
  public void indexBlogEntries(Collection<BlogEntry> blogEntries) {
    synchronized (blog) {
    //#searchindex.java:101: method: void net.sourceforge.pebble.index.SearchIndex.indexBlogEntries(Collection)
    //#input(void indexBlogEntries(Collection)): blogEntries
    //#input(void indexBlogEntries(Collection)): log
    //#input(void indexBlogEntries(Collection)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).__Tag
    //#input(void indexBlogEntries(Collection)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).name
    //#input(void indexBlogEntries(Collection)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).__Tag
    //#input(void indexBlogEntries(Collection)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.getPermalink(Lnet/sourceforge/pebble/domain/BlogEntry;)Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getLuceneAnalyzer()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getAuthor()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getCategories()Ljava/util/Set;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getPermalink()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTitle()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTruncatedContent()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isAggregated()Z
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isPublished()Z
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Category.__Descendant_Table[net/sourceforge/pebble/domain/Category]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Category.__Descendant_Table[others]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getParent()Lnet/sourceforge/pebble/domain/Category;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isApproved()Z
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Content]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[others]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Content.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.isAggregated()Z
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Response.__Descendant_Table[others]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/State.APPROVED
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/State.PUBLISHED
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[others]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.isAggregated()Z
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/domain/Tag]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/index/IndexedTag]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[others]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/Tag.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isApproved()Z
    //#input(void indexBlogEntries(Collection)): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void indexBlogEntries(Collection)): this
    //#input(void indexBlogEntries(Collection)): this.blog
    //#input(void indexBlogEntries(Collection)): this.blog.__Tag
    //#input(void indexBlogEntries(Collection)): this.blog.properties
    //#pre[1] (void indexBlogEntries(Collection)): (soft) blogEntries != null
    //#pre[2] (void indexBlogEntries(Collection)): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).name != null
    //#pre[3] (void indexBlogEntries(Collection)): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name != null
    //#pre[4] (void indexBlogEntries(Collection)): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[5] (void indexBlogEntries(Collection)): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[6] (void indexBlogEntries(Collection)): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[8] (void indexBlogEntries(Collection)): (soft) this.blog != null
    //#pre[9] (void indexBlogEntries(Collection)): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[10] (void indexBlogEntries(Collection)): (soft) this.blog.properties != null
    //#presumption(void indexBlogEntries(Collection)): blogEntry.blog.__Tag@106 == net/sourceforge/pebble/domain/Blog
    //#presumption(void indexBlogEntries(Collection)): blogEntry.blog.rootCategory...__Tag@106 == net/sourceforge/pebble/domain/Category
    //#presumption(void indexBlogEntries(Collection)): blogEntry.blog.rootCategory.__Tag@106 == net/sourceforge/pebble/domain/Category
    //#presumption(void indexBlogEntries(Collection)): blogEntry.blog.rootCategory@106 != null
    //#presumption(void indexBlogEntries(Collection)): blogEntry.blog@106 != null
    //#presumption(void indexBlogEntries(Collection)): blogEntry.comments@106 != null
    //#presumption(void indexBlogEntries(Collection)): blogEntry.state.__Tag@106 == net/sourceforge/pebble/domain/State
    //#presumption(void indexBlogEntries(Collection)): blogEntry.state@106 != null
    //#presumption(void indexBlogEntries(Collection)): blogEntry.tagsAsList@106 != null
    //#presumption(void indexBlogEntries(Collection)): java.util.Iterator:next(...).__Tag@106 == net/sourceforge/pebble/domain/BlogEntry
    //#presumption(void indexBlogEntries(Collection)): java.util.Iterator:next(...)@106 != null
    //#presumption(void indexBlogEntries(Collection)): org.apache.commons.logging.LogFactory:getLog(...)@69 != null
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getTitle
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getId
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.lang.Exception:getMessage
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:isPublished
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:org.apache.lucene.document.Document
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:org.apache.lucene.document.Field:Keyword
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:org.apache.lucene.document.Document:add
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:org.apache.lucene.document.Field:Text
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getPermalink
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getDate
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:org.apache.lucene.document.DateField:dateToString
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:org.apache.lucene.document.Field:UnIndexed
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getBody
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:org.apache.lucene.document.Field:UnStored
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getTruncatedContent
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getAuthor
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getCategories
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getAllTags
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getName
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getComments
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:isApproved
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getTrackBacks
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getExcerpt
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:org.apache.lucene.index.IndexWriter:addDocument
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getLuceneAnalyzer
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.lang.Class:forName
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.lang.Class:newInstance
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getLocalPermalink
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getBlog
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getUrl
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getContent
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:truncate
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.util.HashSet
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.util.Set:size
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.util.Collections:reverse
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getRootCategory
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getState
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void indexBlogEntries(Collection)): Effects-of-calling:getPermalinkProvider
    //#test_vector(void indexBlogEntries(Collection)): java.util.Iterator:hasNext(...)@106: {1}, {0}
      try {
        Analyzer analyzer = getAnalyzer();
        IndexWriter writer = new IndexWriter(blog.getSearchIndexDirectory(), analyzer, false);
    //#searchindex.java:104: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void indexBlogEntries(Collection)
    //#    unanalyzed callee: String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#searchindex.java:104: Warning: method not available
    //#    -- call on void org.apache.lucene.index.IndexWriter(String, Analyzer, bool)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void indexBlogEntries(Collection)
    //#    unanalyzed callee: void org.apache.lucene.index.IndexWriter(String, Analyzer, bool)

        for (BlogEntry blogEntry : blogEntries) {
          index(blogEntry, writer);
        }

        writer.close();
    //#searchindex.java:110: Warning: method not available
    //#    -- call on void org.apache.lucene.index.IndexWriter:close()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void indexBlogEntries(Collection)
    //#    unanalyzed callee: void org.apache.lucene.index.IndexWriter:close()
      } catch (Exception e) {
        log.error(e.getMessage(), e);
    //#searchindex.java:112: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void indexBlogEntries(Collection)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }
    }
  }
    //#searchindex.java:115: end of method: void net.sourceforge.pebble.index.SearchIndex.indexBlogEntries(Collection)

  /**
   * Allows a collection of static pages to be indexed.
   */
  public void indexStaticPages(Collection<StaticPage> staticPages) {
    synchronized (blog) {
    //#searchindex.java:121: method: void net.sourceforge.pebble.index.SearchIndex.indexStaticPages(Collection)
    //#input(void indexStaticPages(Collection)): log
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.getPermalink(Lnet/sourceforge/pebble/domain/BlogEntry;)Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getLuceneAnalyzer()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isAggregated()Z
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Content]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Content.__Descendant_Table[others]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Content.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.isAggregated()Z
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[others]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getAuthor()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getPermalink()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getTitle()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getTruncatedContent()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.isAggregated()Z
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#input(void indexStaticPages(Collection)): staticPages
    //#input(void indexStaticPages(Collection)): this
    //#input(void indexStaticPages(Collection)): this.blog
    //#input(void indexStaticPages(Collection)): this.blog.__Tag
    //#input(void indexStaticPages(Collection)): this.blog.properties
    //#pre[1] (void indexStaticPages(Collection)): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[2] (void indexStaticPages(Collection)): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[3] (void indexStaticPages(Collection)): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[4] (void indexStaticPages(Collection)): (soft) staticPages != null
    //#pre[6] (void indexStaticPages(Collection)): (soft) this.blog != null
    //#pre[7] (void indexStaticPages(Collection)): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[8] (void indexStaticPages(Collection)): (soft) this.blog.properties != null
    //#presumption(void indexStaticPages(Collection)): java.util.Iterator:next(...).__Tag@126 == net/sourceforge/pebble/domain/StaticPage
    //#presumption(void indexStaticPages(Collection)): java.util.Iterator:next(...)@126 != null
    //#presumption(void indexStaticPages(Collection)): org.apache.commons.logging.LogFactory:getLog(...)@69 != null
    //#presumption(void indexStaticPages(Collection)): staticPage.blog.__Tag@126 == net/sourceforge/pebble/domain/Blog
    //#presumption(void indexStaticPages(Collection)): staticPage.blog@126 != null
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:getTitle
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:getId
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:java.lang.Exception:getMessage
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:org.apache.lucene.document.Document
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:org.apache.lucene.document.Field:Keyword
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:org.apache.lucene.document.Document:add
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:org.apache.lucene.document.Field:Text
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:getPermalink
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:getDate
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:org.apache.lucene.document.DateField:dateToString
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:org.apache.lucene.document.Field:UnIndexed
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:getBody
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:org.apache.lucene.document.Field:UnStored
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:getTruncatedContent
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:getAuthor
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:org.apache.lucene.index.IndexWriter:addDocument
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:getLuceneAnalyzer
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:java.lang.Class:forName
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:java.lang.Class:newInstance
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:getLocalPermalink
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:getBlog
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:getUrl
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:getContent
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:truncate
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void indexStaticPages(Collection)): Effects-of-calling:getPermalinkProvider
    //#test_vector(void indexStaticPages(Collection)): java.util.Iterator:hasNext(...)@126: {1}, {0}
      try {
        Analyzer analyzer = getAnalyzer();
        IndexWriter writer = new IndexWriter(blog.getSearchIndexDirectory(), analyzer, false);
    //#searchindex.java:124: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void indexStaticPages(Collection)
    //#    unanalyzed callee: String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#searchindex.java:124: Warning: method not available
    //#    -- call on void org.apache.lucene.index.IndexWriter(String, Analyzer, bool)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void indexStaticPages(Collection)
    //#    unanalyzed callee: void org.apache.lucene.index.IndexWriter(String, Analyzer, bool)

        for (StaticPage staticPage : staticPages) {
          index(staticPage, writer);
        }

        writer.close();
    //#searchindex.java:130: Warning: method not available
    //#    -- call on void org.apache.lucene.index.IndexWriter:close()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void indexStaticPages(Collection)
    //#    unanalyzed callee: void org.apache.lucene.index.IndexWriter:close()
      } catch (Exception e) {
        log.error(e.getMessage(), e);
    //#searchindex.java:132: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void indexStaticPages(Collection)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
      }
    }
  }
    //#searchindex.java:135: end of method: void net.sourceforge.pebble.index.SearchIndex.indexStaticPages(Collection)

  /**
   * Allows a single blog entry to be (re)indexed. If the entry is already
   * indexed, this method deletes the previous index before adding the new
   * one.
   *
   * @param blogEntry   the BlogEntry instance to index
   */
  public void index(BlogEntry blogEntry) {
    try {
      synchronized (blog) {
    //#searchindex.java:146: method: void net.sourceforge.pebble.index.SearchIndex.index(BlogEntry)
    //#input(void index(BlogEntry)): __Descendant_Table[net/sourceforge/pebble/index/SearchIndex]
    //#input(void index(BlogEntry)): __Descendant_Table[others]
    //#input(void index(BlogEntry)): __Dispatch_Table.unindex(Lnet/sourceforge/pebble/domain/BlogEntry;)V
    //#input(void index(BlogEntry)): blogEntry
    //#input(void index(BlogEntry)): blogEntry.__Tag
    //#input(void index(BlogEntry)): blogEntry.author
    //#input(void index(BlogEntry)): blogEntry.blog
    //#input(void index(BlogEntry)): blogEntry.blog.__Tag
    //#input(void index(BlogEntry)): blogEntry.blog.id
    //#input(void index(BlogEntry)): blogEntry.blog.permalinkProvider.__Tag
    //#input(void index(BlogEntry)): blogEntry.blog.rootCategory
    //#input(void index(BlogEntry)): blogEntry.blog.rootCategory...__Tag
    //#input(void index(BlogEntry)): blogEntry.blog.rootCategory...parent
    //#input(void index(BlogEntry)): blogEntry.blog.rootCategory...tagsAsList
    //#input(void index(BlogEntry)): blogEntry.blog.rootCategory.__Tag
    //#input(void index(BlogEntry)): blogEntry.blog.rootCategory.parent
    //#input(void index(BlogEntry)): blogEntry.blog.rootCategory.tagsAsList
    //#input(void index(BlogEntry)): blogEntry.body
    //#input(void index(BlogEntry)): blogEntry.categories
    //#input(void index(BlogEntry)): blogEntry.comments
    //#input(void index(BlogEntry)): blogEntry.date
    //#input(void index(BlogEntry)): blogEntry.excerpt
    //#input(void index(BlogEntry)): blogEntry.id
    //#input(void index(BlogEntry)): blogEntry.originalPermalink
    //#input(void index(BlogEntry)): blogEntry.state
    //#input(void index(BlogEntry)): blogEntry.state.__Tag
    //#input(void index(BlogEntry)): blogEntry.state.name
    //#input(void index(BlogEntry)): blogEntry.tagsAsList
    //#input(void index(BlogEntry)): blogEntry.title
    //#input(void index(BlogEntry)): blogEntry.trackBacks
    //#input(void index(BlogEntry)): log
    //#input(void index(BlogEntry)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).__Tag
    //#input(void index(BlogEntry)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).name
    //#input(void index(BlogEntry)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).__Tag
    //#input(void index(BlogEntry)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name
    //#input(void index(BlogEntry)): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(void index(BlogEntry)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.getPermalink(Lnet/sourceforge/pebble/domain/BlogEntry;)Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getLuceneAnalyzer()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getAuthor()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getCategories()Ljava/util/Set;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getPermalink()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTitle()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTruncatedContent()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isAggregated()Z
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isPublished()Z
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Category.__Descendant_Table[net/sourceforge/pebble/domain/Category]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Category.__Descendant_Table[others]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getParent()Lnet/sourceforge/pebble/domain/Category;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isApproved()Z
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Content]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Content.__Descendant_Table[others]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Content.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.isAggregated()Z
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Response.__Descendant_Table[others]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/State.APPROVED
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/State.PUBLISHED
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[others]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.isAggregated()Z
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/domain/Tag]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/index/IndexedTag]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[others]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/Tag.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void index(BlogEntry)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isApproved()Z
    //#input(void index(BlogEntry)): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void index(BlogEntry)): this
    //#input(void index(BlogEntry)): this.__Tag
    //#input(void index(BlogEntry)): this.blog
    //#input(void index(BlogEntry)): this.blog.__Tag
    //#input(void index(BlogEntry)): this.blog.properties
    //#output(void index(BlogEntry)): blogEntry.permalink
    //#pre[1] (void index(BlogEntry)): (soft) blogEntry != null
    //#pre[2] (void index(BlogEntry)): (soft) blogEntry.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (void index(BlogEntry)): (soft) init'ed(blogEntry.author)
    //#pre[4] (void index(BlogEntry)): (soft) blogEntry.blog != null
    //#pre[5] (void index(BlogEntry)): (soft) blogEntry.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[6] (void index(BlogEntry)): (soft) init'ed(blogEntry.blog.id)
    //#pre[9] (void index(BlogEntry)): (soft) blogEntry.blog.rootCategory != null
    //#pre[10] (void index(BlogEntry)): (soft) blogEntry.blog.rootCategory...__Tag == net/sourceforge/pebble/domain/Category
    //#pre[11] (void index(BlogEntry)): (soft) init'ed(blogEntry.blog.rootCategory...parent)
    //#pre[12] (void index(BlogEntry)): (soft) init'ed(blogEntry.blog.rootCategory...tagsAsList)
    //#pre[13] (void index(BlogEntry)): (soft) blogEntry.blog.rootCategory.__Tag == net/sourceforge/pebble/domain/Category
    //#pre[14] (void index(BlogEntry)): (soft) init'ed(blogEntry.blog.rootCategory.parent)
    //#pre[15] (void index(BlogEntry)): (soft) init'ed(blogEntry.blog.rootCategory.tagsAsList)
    //#pre[16] (void index(BlogEntry)): (soft) init'ed(blogEntry.body)
    //#pre[17] (void index(BlogEntry)): (soft) init'ed(blogEntry.body)
    //#pre[18] (void index(BlogEntry)): (soft) init'ed(blogEntry.categories)
    //#pre[19] (void index(BlogEntry)): (soft) blogEntry.comments != null
    //#pre[20] (void index(BlogEntry)): (soft) init'ed(blogEntry.date)
    //#pre[21] (void index(BlogEntry)): (soft) init'ed(blogEntry.excerpt)
    //#pre[22] (void index(BlogEntry)): (soft) init'ed(blogEntry.excerpt)
    //#pre[23] (void index(BlogEntry)): (soft) init'ed(blogEntry.id)
    //#pre[25] (void index(BlogEntry)): (soft) init'ed(blogEntry.originalPermalink)
    //#pre[26] (void index(BlogEntry)): (soft) blogEntry.state != null
    //#pre[27] (void index(BlogEntry)): (soft) blogEntry.state.__Tag == net/sourceforge/pebble/domain/State
    //#pre[28] (void index(BlogEntry)): (soft) init'ed(blogEntry.state.name)
    //#pre[29] (void index(BlogEntry)): (soft) blogEntry.tagsAsList != null
    //#pre[30] (void index(BlogEntry)): (soft) init'ed(blogEntry.title)
    //#pre[31] (void index(BlogEntry)): (soft) init'ed(blogEntry.trackBacks)
    //#pre[32] (void index(BlogEntry)): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).name != null
    //#pre[33] (void index(BlogEntry)): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name != null
    //#pre[34] (void index(BlogEntry)): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[35] (void index(BlogEntry)): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[36] (void index(BlogEntry)): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[39] (void index(BlogEntry)): (soft) this.__Tag == net/sourceforge/pebble/index/SearchIndex
    //#pre[40] (void index(BlogEntry)): (soft) this.blog != null
    //#pre[41] (void index(BlogEntry)): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[42] (void index(BlogEntry)): (soft) this.blog.properties != null
    //#presumption(void index(BlogEntry)): org.apache.commons.logging.LogFactory:getLog(...)@69 != null
    //#post(void index(BlogEntry)): possibly_updated(blogEntry.permalink)
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getTitle
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:org.apache.lucene.index.IndexReader:open
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getId
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:org.apache.lucene.index.Term
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:org.apache.lucene.index.IndexReader:delete
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:org.apache.lucene.index.IndexReader:close
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.lang.Exception:getMessage
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:isPublished
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:org.apache.lucene.document.Document
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:org.apache.lucene.document.Field:Keyword
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:org.apache.lucene.document.Document:add
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:org.apache.lucene.document.Field:Text
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getPermalink
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getDate
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:org.apache.lucene.document.DateField:dateToString
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:org.apache.lucene.document.Field:UnIndexed
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getBody
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:org.apache.lucene.document.Field:UnStored
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getTruncatedContent
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getAuthor
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getCategories
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getAllTags
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getName
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getComments
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:isApproved
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getTrackBacks
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getExcerpt
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:org.apache.lucene.index.IndexWriter:addDocument
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getLuceneAnalyzer
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.lang.Class:forName
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.lang.Class:newInstance
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getLocalPermalink
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getBlog
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getUrl
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getContent
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:truncate
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.util.HashSet
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.util.Set:size
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.util.Collections:reverse
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getRootCategory
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getState
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void index(BlogEntry)): Effects-of-calling:getPermalinkProvider
        // first delete the blog entry from the index (if it was there)
        unindex(blogEntry);

        Analyzer analyzer = getAnalyzer();
        IndexWriter writer = new IndexWriter(blog.getSearchIndexDirectory(), analyzer, false);
    //#searchindex.java:151: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry)
    //#    unanalyzed callee: String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#searchindex.java:151: Warning: method not available
    //#    -- call on void org.apache.lucene.index.IndexWriter(String, Analyzer, bool)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry)
    //#    unanalyzed callee: void org.apache.lucene.index.IndexWriter(String, Analyzer, bool)
        index(blogEntry, writer);
        writer.close();
    //#searchindex.java:153: Warning: method not available
    //#    -- call on void org.apache.lucene.index.IndexWriter:close()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry)
    //#    unanalyzed callee: void org.apache.lucene.index.IndexWriter:close()
      }
    } catch (Exception e) {
      log.error(e.getMessage(), e);
    //#searchindex.java:156: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
    }
  }
    //#searchindex.java:158: end of method: void net.sourceforge.pebble.index.SearchIndex.index(BlogEntry)

  /**
   * Allows a single static page to be (re)indexed. If the page is already
   * indexed, this method deletes the previous index before adding the new
   * one.
   *
   * @param staticPage    the StaticPage instance to index
   */
  public void index(StaticPage staticPage) {
    try {
      synchronized (blog) {
    //#searchindex.java:169: method: void net.sourceforge.pebble.index.SearchIndex.index(StaticPage)
    //#input(void index(StaticPage)): __Descendant_Table[net/sourceforge/pebble/index/SearchIndex]
    //#input(void index(StaticPage)): __Descendant_Table[others]
    //#input(void index(StaticPage)): __Dispatch_Table.unindex(Lnet/sourceforge/pebble/domain/StaticPage;)V
    //#input(void index(StaticPage)): log
    //#input(void index(StaticPage)): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(void index(StaticPage)): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(void index(StaticPage)): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(void index(StaticPage)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(void index(StaticPage)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(void index(StaticPage)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.getPermalink(Lnet/sourceforge/pebble/domain/BlogEntry;)Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getLuceneAnalyzer()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isAggregated()Z
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Content]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Content.__Descendant_Table[others]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Content.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.isAggregated()Z
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[others]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getAuthor()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getPermalink()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getTitle()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getTruncatedContent()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.isAggregated()Z
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(StaticPage)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#input(void index(StaticPage)): staticPage
    //#input(void index(StaticPage)): staticPage.__Tag
    //#input(void index(StaticPage)): staticPage.author
    //#input(void index(StaticPage)): staticPage.blog
    //#input(void index(StaticPage)): staticPage.blog.__Tag
    //#input(void index(StaticPage)): staticPage.blog.id
    //#input(void index(StaticPage)): staticPage.blog.permalinkProvider.__Tag
    //#input(void index(StaticPage)): staticPage.body
    //#input(void index(StaticPage)): staticPage.date
    //#input(void index(StaticPage)): staticPage.excerpt
    //#input(void index(StaticPage)): staticPage.id
    //#input(void index(StaticPage)): staticPage.originalPermalink
    //#input(void index(StaticPage)): staticPage.title
    //#input(void index(StaticPage)): this
    //#input(void index(StaticPage)): this.__Tag
    //#input(void index(StaticPage)): this.blog
    //#input(void index(StaticPage)): this.blog.__Tag
    //#input(void index(StaticPage)): this.blog.properties
    //#output(void index(StaticPage)): staticPage.permalink
    //#pre[1] (void index(StaticPage)): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[2] (void index(StaticPage)): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[3] (void index(StaticPage)): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[5] (void index(StaticPage)): (soft) staticPage != null
    //#pre[6] (void index(StaticPage)): (soft) staticPage.__Tag == net/sourceforge/pebble/domain/StaticPage
    //#pre[7] (void index(StaticPage)): (soft) init'ed(staticPage.author)
    //#pre[8] (void index(StaticPage)): (soft) staticPage.blog != null
    //#pre[9] (void index(StaticPage)): (soft) staticPage.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[10] (void index(StaticPage)): (soft) init'ed(staticPage.blog.id)
    //#pre[13] (void index(StaticPage)): (soft) init'ed(staticPage.body)
    //#pre[14] (void index(StaticPage)): (soft) init'ed(staticPage.body)
    //#pre[15] (void index(StaticPage)): (soft) init'ed(staticPage.date)
    //#pre[16] (void index(StaticPage)): (soft) init'ed(staticPage.excerpt)
    //#pre[17] (void index(StaticPage)): (soft) init'ed(staticPage.excerpt)
    //#pre[18] (void index(StaticPage)): (soft) init'ed(staticPage.id)
    //#pre[20] (void index(StaticPage)): (soft) init'ed(staticPage.originalPermalink)
    //#pre[21] (void index(StaticPage)): (soft) init'ed(staticPage.title)
    //#pre[23] (void index(StaticPage)): (soft) this.__Tag == net/sourceforge/pebble/index/SearchIndex
    //#pre[24] (void index(StaticPage)): (soft) this.blog != null
    //#pre[25] (void index(StaticPage)): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[26] (void index(StaticPage)): (soft) this.blog.properties != null
    //#presumption(void index(StaticPage)): org.apache.commons.logging.LogFactory:getLog(...)@69 != null
    //#post(void index(StaticPage)): possibly_updated(staticPage.permalink)
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:getTitle
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:org.apache.lucene.index.IndexReader:open
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:getId
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:org.apache.lucene.index.Term
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:org.apache.lucene.index.IndexReader:delete
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:org.apache.lucene.index.IndexReader:close
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:java.lang.Exception:getMessage
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:org.apache.lucene.document.Document
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:org.apache.lucene.document.Field:Keyword
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:org.apache.lucene.document.Document:add
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:org.apache.lucene.document.Field:Text
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:getPermalink
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:getDate
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:org.apache.lucene.document.DateField:dateToString
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:org.apache.lucene.document.Field:UnIndexed
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:getBody
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:org.apache.lucene.document.Field:UnStored
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:getTruncatedContent
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:getAuthor
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:org.apache.lucene.index.IndexWriter:addDocument
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:getLuceneAnalyzer
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:java.lang.Class:forName
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:java.lang.Class:newInstance
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:getLocalPermalink
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:getBlog
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:getUrl
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:getContent
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:truncate
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void index(StaticPage)): Effects-of-calling:getPermalinkProvider
        // first delete the static page from the index (if it was there)
        unindex(staticPage);

        Analyzer analyzer = getAnalyzer();
        IndexWriter writer = new IndexWriter(blog.getSearchIndexDirectory(), analyzer, false);
    //#searchindex.java:174: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage)
    //#    unanalyzed callee: String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#searchindex.java:174: Warning: method not available
    //#    -- call on void org.apache.lucene.index.IndexWriter(String, Analyzer, bool)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage)
    //#    unanalyzed callee: void org.apache.lucene.index.IndexWriter(String, Analyzer, bool)
        index(staticPage, writer);
        writer.close();
    //#searchindex.java:176: Warning: method not available
    //#    -- call on void org.apache.lucene.index.IndexWriter:close()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage)
    //#    unanalyzed callee: void org.apache.lucene.index.IndexWriter:close()
      }
    } catch (Exception e) {
      log.error(e.getMessage(), e);
    //#searchindex.java:179: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
    }
  }
    //#searchindex.java:181: end of method: void net.sourceforge.pebble.index.SearchIndex.index(StaticPage)

  /**
   * Gets the Analyzer implementation to use.
   *
   * @return  an Analyzer instance
   * @throws Exception
   */
  private Analyzer getAnalyzer() throws Exception {
    Class c = Class.forName(blog.getLuceneAnalyzer());
    //#searchindex.java:190: method: Analyzer net.sourceforge.pebble.index.SearchIndex.getAnalyzer()
    //#input(Analyzer getAnalyzer()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(Analyzer getAnalyzer()): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(Analyzer getAnalyzer()): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getLuceneAnalyzer()Ljava/lang/String;
    //#input(Analyzer getAnalyzer()): this
    //#input(Analyzer getAnalyzer()): this.blog
    //#input(Analyzer getAnalyzer()): this.blog.__Tag
    //#input(Analyzer getAnalyzer()): this.blog.properties
    //#output(Analyzer getAnalyzer()): return_value
    //#pre[2] (Analyzer getAnalyzer()): this.blog != null
    //#pre[3] (Analyzer getAnalyzer()): this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[4] (Analyzer getAnalyzer()): this.blog.properties != null
    //#presumption(Analyzer getAnalyzer()): java.lang.Class:forName(...)@190 != null
    //#post(Analyzer getAnalyzer()): return_value != null
    //#unanalyzed(Analyzer getAnalyzer()): Effects-of-calling:java.util.Properties:getProperty
    return (Analyzer)c.newInstance();
    //#searchindex.java:191: end of method: Analyzer net.sourceforge.pebble.index.SearchIndex.getAnalyzer()
  }

  /**
   * Removes the index for a single blog entry to be removed.
   *
   * @param blogEntry   the BlogEntry instance to be removed
   */
  public void unindex(BlogEntry blogEntry) {
    try {
      synchronized (blog) {
    //#searchindex.java:201: method: void net.sourceforge.pebble.index.SearchIndex.unindex(BlogEntry)
    //#input(void unindex(BlogEntry)): blogEntry
    //#input(void unindex(BlogEntry)): blogEntry.__Tag
    //#input(void unindex(BlogEntry)): blogEntry.id
    //#input(void unindex(BlogEntry)): blogEntry.title
    //#input(void unindex(BlogEntry)): log
    //#input(void unindex(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void unindex(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(void unindex(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void unindex(BlogEntry)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTitle()Ljava/lang/String;
    //#input(void unindex(BlogEntry)): this
    //#input(void unindex(BlogEntry)): this.blog
    //#pre[1] (void unindex(BlogEntry)): (soft) blogEntry != null
    //#pre[2] (void unindex(BlogEntry)): (soft) blogEntry.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[3] (void unindex(BlogEntry)): (soft) init'ed(blogEntry.id)
    //#pre[4] (void unindex(BlogEntry)): (soft) init'ed(blogEntry.title)
    //#pre[6] (void unindex(BlogEntry)): (soft) this.blog != null
    //#presumption(void unindex(BlogEntry)): org.apache.commons.logging.LogFactory:getLog(...)@69 != null
    //#presumption(void unindex(BlogEntry)): org.apache.lucene.index.IndexReader:open(...)@203 != null
        log.debug("Attempting to delete index for " + blogEntry.getTitle());
    //#searchindex.java:202: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(BlogEntry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        IndexReader reader = IndexReader.open(blog.getSearchIndexDirectory());
    //#searchindex.java:203: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(BlogEntry)
    //#    unanalyzed callee: String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#searchindex.java:203: Warning: method not available
    //#    -- call on IndexReader org.apache.lucene.index.IndexReader:open(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(BlogEntry)
    //#    unanalyzed callee: IndexReader org.apache.lucene.index.IndexReader:open(String)
        Term term = new Term("id", blogEntry.getId());
    //#searchindex.java:204: Warning: method not available
    //#    -- call on void org.apache.lucene.index.Term(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(BlogEntry)
    //#    unanalyzed callee: void org.apache.lucene.index.Term(String, String)
        log.debug("Deleted " + reader.delete(term) + " document(s) from the index");
    //#searchindex.java:205: Warning: method not available
    //#    -- call on int org.apache.lucene.index.IndexReader:delete(Term)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(BlogEntry)
    //#    unanalyzed callee: int org.apache.lucene.index.IndexReader:delete(Term)
    //#searchindex.java:205: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(BlogEntry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        reader.close();
    //#searchindex.java:206: Warning: method not available
    //#    -- call on void org.apache.lucene.index.IndexReader:close()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(BlogEntry)
    //#    unanalyzed callee: void org.apache.lucene.index.IndexReader:close()
      }
    } catch (Exception e) {
      log.error(e.getMessage(), e);
    //#searchindex.java:209: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(BlogEntry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
    }
  }
    //#searchindex.java:211: end of method: void net.sourceforge.pebble.index.SearchIndex.unindex(BlogEntry)

  /**
   * Removes the index for a single blog entry to be removed.
   *
   * @param staticPage    the StaticPage instance to be removed
   */
  public void unindex(StaticPage staticPage) {
    try {
      synchronized (blog) {
    //#searchindex.java:220: method: void net.sourceforge.pebble.index.SearchIndex.unindex(StaticPage)
    //#input(void unindex(StaticPage)): log
    //#input(void unindex(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void unindex(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[others]
    //#input(void unindex(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void unindex(StaticPage)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getTitle()Ljava/lang/String;
    //#input(void unindex(StaticPage)): staticPage
    //#input(void unindex(StaticPage)): staticPage.__Tag
    //#input(void unindex(StaticPage)): staticPage.id
    //#input(void unindex(StaticPage)): staticPage.title
    //#input(void unindex(StaticPage)): this
    //#input(void unindex(StaticPage)): this.blog
    //#pre[1] (void unindex(StaticPage)): (soft) staticPage != null
    //#pre[2] (void unindex(StaticPage)): (soft) staticPage.__Tag == net/sourceforge/pebble/domain/StaticPage
    //#pre[3] (void unindex(StaticPage)): (soft) init'ed(staticPage.id)
    //#pre[4] (void unindex(StaticPage)): (soft) init'ed(staticPage.title)
    //#pre[6] (void unindex(StaticPage)): (soft) this.blog != null
    //#presumption(void unindex(StaticPage)): org.apache.commons.logging.LogFactory:getLog(...)@69 != null
    //#presumption(void unindex(StaticPage)): org.apache.lucene.index.IndexReader:open(...)@222 != null
        log.debug("Attempting to delete index for " + staticPage.getTitle());
    //#searchindex.java:221: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(StaticPage)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        IndexReader reader = IndexReader.open(blog.getSearchIndexDirectory());
    //#searchindex.java:222: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(StaticPage)
    //#    unanalyzed callee: String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#searchindex.java:222: Warning: method not available
    //#    -- call on IndexReader org.apache.lucene.index.IndexReader:open(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(StaticPage)
    //#    unanalyzed callee: IndexReader org.apache.lucene.index.IndexReader:open(String)
        Term term = new Term("id", staticPage.getId());
    //#searchindex.java:223: Warning: method not available
    //#    -- call on void org.apache.lucene.index.Term(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(StaticPage)
    //#    unanalyzed callee: void org.apache.lucene.index.Term(String, String)
        log.debug("Deleted " + reader.delete(term) + " document(s) from the index");
    //#searchindex.java:224: Warning: method not available
    //#    -- call on int org.apache.lucene.index.IndexReader:delete(Term)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(StaticPage)
    //#    unanalyzed callee: int org.apache.lucene.index.IndexReader:delete(Term)
    //#searchindex.java:224: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(StaticPage)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        reader.close();
    //#searchindex.java:225: Warning: method not available
    //#    -- call on void org.apache.lucene.index.IndexReader:close()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(StaticPage)
    //#    unanalyzed callee: void org.apache.lucene.index.IndexReader:close()
      }
    } catch (Exception e) {
      log.error(e.getMessage(), e);
    //#searchindex.java:228: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void unindex(StaticPage)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
    }
  }
    //#searchindex.java:230: end of method: void net.sourceforge.pebble.index.SearchIndex.unindex(StaticPage)

  /**
   * Helper method to index an individual blog entry.
   *
   * @param blogEntry   the BlogEntry instance to index
   * @param writer      the IndexWriter to index with
   */
  private void index(BlogEntry blogEntry, IndexWriter writer) {
    if (!blogEntry.isPublished()) {
    //#searchindex.java:239: method: void net.sourceforge.pebble.index.SearchIndex.index(BlogEntry, IndexWriter)
    //#input(void index(BlogEntry, IndexWriter)): blogEntry
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.__Tag
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.author
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.blog
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.blog.__Tag
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.blog.id
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.blog.permalinkProvider.__Tag
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.blog.rootCategory
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.blog.rootCategory...__Tag
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.blog.rootCategory...parent
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.blog.rootCategory...tagsAsList
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.blog.rootCategory.__Tag
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.blog.rootCategory.parent
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.blog.rootCategory.tagsAsList
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.body
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.categories
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.comments
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.date
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.excerpt
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.id
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.originalPermalink
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.state
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.state.__Tag
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.state.name
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.tagsAsList
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.title
    //#input(void index(BlogEntry, IndexWriter)): blogEntry.trackBacks
    //#input(void index(BlogEntry, IndexWriter)): log
    //#input(void index(BlogEntry, IndexWriter)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).__Tag
    //#input(void index(BlogEntry, IndexWriter)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).name
    //#input(void index(BlogEntry, IndexWriter)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).__Tag
    //#input(void index(BlogEntry, IndexWriter)): net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.getPermalink(Lnet/sourceforge/pebble/domain/BlogEntry;)Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getRootCategory()Lnet/sourceforge/pebble/domain/Category;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getAuthor()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getCategories()Ljava/util/Set;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getPermalink()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTitle()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTrackBacks()Ljava/util/List;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getTruncatedContent()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isAggregated()Z
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isPublished()Z
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Category.__Descendant_Table[net/sourceforge/pebble/domain/Category]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Category.__Descendant_Table[others]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getAllTags()Ljava/util/List;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getParent()Lnet/sourceforge/pebble/domain/Category;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Category.__Dispatch_Table.getTagsAsList()Ljava/util/List;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getComments()Ljava/util/List;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.isApproved()Z
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Content]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[others]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Content.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.isAggregated()Z
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Response.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Response.__Descendant_Table[others]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/State.APPROVED
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/State.PUBLISHED
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/State.__Descendant_Table[net/sourceforge/pebble/domain/State]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/State.__Descendant_Table[others]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/State.__Dispatch_Table.equals(Ljava/lang/Object;)Z
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/State.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[others]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.isAggregated()Z
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/domain/Tag]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[net/sourceforge/pebble/index/IndexedTag]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Tag.__Descendant_Table[others]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/Tag.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getState()Lnet/sourceforge/pebble/domain/State;
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.isApproved()Z
    //#input(void index(BlogEntry, IndexWriter)): net/sourceforge/pebble/index/IndexedTag.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void index(BlogEntry, IndexWriter)): writer
    //#output(void index(BlogEntry, IndexWriter)): blogEntry.permalink
    //#pre[1] (void index(BlogEntry, IndexWriter)): blogEntry != null
    //#pre[2] (void index(BlogEntry, IndexWriter)): blogEntry.__Tag == net/sourceforge/pebble/domain/BlogEntry
    //#pre[26] (void index(BlogEntry, IndexWriter)): blogEntry.state != null
    //#pre[27] (void index(BlogEntry, IndexWriter)): blogEntry.state.__Tag == net/sourceforge/pebble/domain/State
    //#pre[3] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.author)
    //#pre[4] (void index(BlogEntry, IndexWriter)): (soft) blogEntry.blog != null
    //#pre[5] (void index(BlogEntry, IndexWriter)): (soft) blogEntry.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[6] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.blog.id)
    //#pre[9] (void index(BlogEntry, IndexWriter)): (soft) blogEntry.blog.rootCategory != null
    //#pre[10] (void index(BlogEntry, IndexWriter)): (soft) blogEntry.blog.rootCategory...__Tag == net/sourceforge/pebble/domain/Category
    //#pre[11] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.blog.rootCategory...parent)
    //#pre[12] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.blog.rootCategory...tagsAsList)
    //#pre[13] (void index(BlogEntry, IndexWriter)): (soft) blogEntry.blog.rootCategory.__Tag == net/sourceforge/pebble/domain/Category
    //#pre[14] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.blog.rootCategory.parent)
    //#pre[15] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.blog.rootCategory.tagsAsList)
    //#pre[16] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.body)
    //#pre[17] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.body)
    //#pre[18] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.categories)
    //#pre[19] (void index(BlogEntry, IndexWriter)): (soft) blogEntry.comments != null
    //#pre[20] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.date)
    //#pre[21] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.excerpt)
    //#pre[22] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.excerpt)
    //#pre[23] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.id)
    //#pre[25] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.originalPermalink)
    //#pre[28] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.state.name)
    //#pre[29] (void index(BlogEntry, IndexWriter)): (soft) blogEntry.tagsAsList != null
    //#pre[30] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.title)
    //#pre[31] (void index(BlogEntry, IndexWriter)): (soft) init'ed(blogEntry.trackBacks)
    //#pre[32] (void index(BlogEntry, IndexWriter)): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).name != null
    //#pre[33] (void index(BlogEntry, IndexWriter)): (soft) net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#5).name != null
    //#pre[34] (void index(BlogEntry, IndexWriter)): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[35] (void index(BlogEntry, IndexWriter)): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[36] (void index(BlogEntry, IndexWriter)): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[38] (void index(BlogEntry, IndexWriter)): (soft) writer != null
    //#presumption(void index(BlogEntry, IndexWriter)): comment.state.__Tag@287 == net/sourceforge/pebble/domain/State
    //#presumption(void index(BlogEntry, IndexWriter)): comment.state@287 != null
    //#presumption(void index(BlogEntry, IndexWriter)): java.util.Iterator:next(...).__Tag@276 == net/sourceforge/pebble/domain/Category
    //#presumption(void index(BlogEntry, IndexWriter)): java.util.Iterator:next(...).__Tag@280 in {net/sourceforge/pebble/domain/Tag, net/sourceforge/pebble/index/IndexedTag}
    //#presumption(void index(BlogEntry, IndexWriter)): java.util.Iterator:next(...).__Tag@287 == net/sourceforge/pebble/domain/Comment
    //#presumption(void index(BlogEntry, IndexWriter)): java.util.Iterator:next(...).__Tag@295 == net/sourceforge/pebble/domain/TrackBack
    //#presumption(void index(BlogEntry, IndexWriter)): java.util.Iterator:next(...)@276 != null
    //#presumption(void index(BlogEntry, IndexWriter)): java.util.Iterator:next(...)@280 != null
    //#presumption(void index(BlogEntry, IndexWriter)): java.util.Iterator:next(...)@287 != null
    //#presumption(void index(BlogEntry, IndexWriter)): java.util.Iterator:next(...)@295 != null
    //#presumption(void index(BlogEntry, IndexWriter)): org.apache.commons.logging.LogFactory:getLog(...)@69 != null
    //#presumption(void index(BlogEntry, IndexWriter)): trackBack.state.__Tag@295 == net/sourceforge/pebble/domain/State
    //#presumption(void index(BlogEntry, IndexWriter)): trackBack.state@295 != null
    //#post(void index(BlogEntry, IndexWriter)): possibly_updated(blogEntry.permalink)
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:getLocalPermalink
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:getBlog
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:getUrl
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:getContent
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:truncate
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.util.HashSet
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.util.Set:size
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.util.Collections:reverse
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:getRootCategory
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:getComments
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:getState
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:getPermalinkProvider
    //#unanalyzed(void index(BlogEntry, IndexWriter)): Effects-of-calling:getPermalink
    //#test_vector(void index(BlogEntry, IndexWriter)): blogEntry.author: Addr_Set{null}, Inverse{null}
    //#test_vector(void index(BlogEntry, IndexWriter)): blogEntry.body: Addr_Set{null}, Inverse{null}
    //#test_vector(void index(BlogEntry, IndexWriter)): blogEntry.title: Addr_Set{null}, Inverse{null}
    //#test_vector(void index(BlogEntry, IndexWriter)): java.util.Iterator:hasNext(...)@276: {1}, {0}
    //#test_vector(void index(BlogEntry, IndexWriter)): java.util.Iterator:hasNext(...)@280: {1}, {0}
    //#test_vector(void index(BlogEntry, IndexWriter)): java.util.Iterator:hasNext(...)@286: {1}, {0}
    //#test_vector(void index(BlogEntry, IndexWriter)): java.util.Iterator:hasNext(...)@294: {1}, {0}
    //#test_vector(void index(BlogEntry, IndexWriter)): net.sourceforge.pebble.util.StringUtils:truncate(...)@101: Addr_Set{null}, Inverse{null}
      return;
    }

    try {
      log.debug("Indexing " + blogEntry.getTitle());
    //#searchindex.java:244: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
      Document document = new Document();
    //#searchindex.java:245: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document()
      document.add(Field.Keyword("id", blogEntry.getId()));
    //#searchindex.java:246: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Keyword(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Keyword(String, String)
    //#searchindex.java:246: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      if (blogEntry.getTitle() != null) {
        document.add(Field.Text("title", blogEntry.getTitle()));
    //#searchindex.java:248: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Text(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Text(String, String)
    //#searchindex.java:248: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      } else {
        document.add(Field.Text("title", ""));
    //#searchindex.java:250: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Text(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Text(String, String)
    //#searchindex.java:250: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      }
      document.add(Field.Keyword("permalink", blogEntry.getPermalink()));
    //#searchindex.java:252: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Keyword(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Keyword(String, String)
    //#searchindex.java:252: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      document.add(Field.UnIndexed("date", DateField.dateToString(blogEntry.getDate())));
    //#searchindex.java:253: Warning: method not available
    //#    -- call on String org.apache.lucene.document.DateField:dateToString(Date)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: String org.apache.lucene.document.DateField:dateToString(Date)
    //#searchindex.java:253: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:UnIndexed(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:UnIndexed(String, String)
    //#searchindex.java:253: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      if (blogEntry.getBody() != null) {
        document.add(Field.UnStored("body", blogEntry.getBody()));
    //#searchindex.java:255: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:UnStored(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:UnStored(String, String)
    //#searchindex.java:255: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      } else {
        document.add(Field.UnStored("body", ""));
    //#searchindex.java:257: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:UnStored(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:UnStored(String, String)
    //#searchindex.java:257: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      }
      if (blogEntry.getTruncatedContent() != null) {
        document.add(Field.Text("truncatedBody", blogEntry.getTruncatedContent()));
    //#searchindex.java:260: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Text(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Text(String, String)
    //#searchindex.java:260: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      } else {
        document.add(Field.Text("truncatedBody", ""));
    //#searchindex.java:262: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Text(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Text(String, String)
    //#searchindex.java:262: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      }

      if (blogEntry.getAuthor() != null) {
        document.add(Field.Text("author", blogEntry.getAuthor()));
    //#searchindex.java:266: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Text(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Text(String, String)
    //#searchindex.java:266: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      }

      // build up one large string with all searchable content
      // i.e. entry title, entry body and all response bodies
      StringBuffer searchableContent = new StringBuffer();
      searchableContent.append(blogEntry.getTitle());
      searchableContent.append(" ");
      searchableContent.append(blogEntry.getBody());

      for (Category category : blogEntry.getCategories()) {
        document.add(Field.Text("category", category.getId()));
    //#searchindex.java:277: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Text(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Text(String, String)
    //#searchindex.java:277: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      }

      for (Tag tag : blogEntry.getAllTags()) {
        document.add(Field.Text("tag", tag.getName()));
    //#searchindex.java:281: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Text(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Text(String, String)
    //#searchindex.java:281: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      }

      searchableContent.append(" ");
      Iterator it = blogEntry.getComments().iterator();
      while (it.hasNext()) {
        Comment comment = (Comment)it.next();
        if (comment.isApproved()) {
          searchableContent.append(comment.getBody());
          searchableContent.append(" ");
        }
      }
      it = blogEntry.getTrackBacks().iterator();
      while (it.hasNext()) {
        TrackBack trackBack = (TrackBack)it.next();
        if (trackBack.isApproved()) {
          searchableContent.append(trackBack.getExcerpt());
          searchableContent.append(" ");
        }
      }

      // join the title and body together to make searching on them both easier
      document.add(Field.UnStored("blogEntry", searchableContent.toString()));
    //#searchindex.java:303: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:UnStored(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:UnStored(String, String)
    //#searchindex.java:303: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)

      writer.addDocument(document);
    //#searchindex.java:305: Warning: method not available
    //#    -- call on void org.apache.lucene.index.IndexWriter:addDocument(Document)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.index.IndexWriter:addDocument(Document)
    } catch (Exception e) {
      log.error(e.getMessage(), e);
    //#searchindex.java:307: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(BlogEntry, IndexWriter)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
    }
  }
    //#searchindex.java:309: end of method: void net.sourceforge.pebble.index.SearchIndex.index(BlogEntry, IndexWriter)
  /**
   * Helper method to index an individual blog entry.
   *
   * @param staticPage    the Page instance instance to index
   * @param writer      the IndexWriter to index with
   */
  private void index(StaticPage staticPage, IndexWriter writer) {
    try {
      log.debug("Indexing " + staticPage.getTitle());
    //#searchindex.java:318: method: void net.sourceforge.pebble.index.SearchIndex.index(StaticPage, IndexWriter)
    //#searchindex.java:318: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void index(StaticPage, IndexWriter)): log
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/Configuration.__Descendant_Table[net/sourceforge/pebble/Configuration]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/Configuration.__Descendant_Table[others]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/Configuration.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/Configuration.__Dispatch_Table.isVirtualHostingEnabled()Z
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[net/sourceforge/pebble/api/permalink/PermalinkProvider]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Descendant_Table[others]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/api/permalink/PermalinkProvider.__Dispatch_Table.getPermalink(Lnet/sourceforge/pebble/domain/BlogEntry;)Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getPermalinkProvider()Lnet/sourceforge/pebble/api/permalink/PermalinkProvider;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getUrl()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Descendant_Table[others]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/BlogEntry.__Dispatch_Table.isAggregated()Z
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[net/sourceforge/pebble/domain/BlogManager]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/BlogManager.__Descendant_Table[others]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/BlogManager.__Dispatch_Table.isMultiBlog()Z
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/BlogManager.instance
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/BlogManager.instance.__Tag
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/BlogManager.instance.multiBlog
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Comment.__Descendant_Table[others]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Comment.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Comment]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Content]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/Response]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Content.__Descendant_Table[others]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Content.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/BlogEntry]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/PageBasedContent]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Descendant_Table[others]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/PageBasedContent.__Dispatch_Table.isAggregated()Z
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/Response.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[net/sourceforge/pebble/domain/StaticPage]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Descendant_Table[others]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getAuthor()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBlog()Lnet/sourceforge/pebble/domain/Blog;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getBody()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getDate()Ljava/util/Date;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getLocalPermalink()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getOriginalPermalink()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getPermalink()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getTitle()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.getTruncatedContent()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/StaticPage.__Dispatch_Table.isAggregated()Z
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[net/sourceforge/pebble/domain/TrackBack]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/TrackBack.__Descendant_Table[others]
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getContent()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): net/sourceforge/pebble/domain/TrackBack.__Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#input(void index(StaticPage, IndexWriter)): staticPage
    //#input(void index(StaticPage, IndexWriter)): staticPage.__Tag
    //#input(void index(StaticPage, IndexWriter)): staticPage.author
    //#input(void index(StaticPage, IndexWriter)): staticPage.blog
    //#input(void index(StaticPage, IndexWriter)): staticPage.blog.__Tag
    //#input(void index(StaticPage, IndexWriter)): staticPage.blog.id
    //#input(void index(StaticPage, IndexWriter)): staticPage.blog.permalinkProvider.__Tag
    //#input(void index(StaticPage, IndexWriter)): staticPage.body
    //#input(void index(StaticPage, IndexWriter)): staticPage.date
    //#input(void index(StaticPage, IndexWriter)): staticPage.excerpt
    //#input(void index(StaticPage, IndexWriter)): staticPage.id
    //#input(void index(StaticPage, IndexWriter)): staticPage.originalPermalink
    //#input(void index(StaticPage, IndexWriter)): staticPage.title
    //#input(void index(StaticPage, IndexWriter)): writer
    //#output(void index(StaticPage, IndexWriter)): staticPage.permalink
    //#pre[1] (void index(StaticPage, IndexWriter)): (soft) net/sourceforge/pebble/domain/BlogManager.instance != null
    //#pre[2] (void index(StaticPage, IndexWriter)): (soft) net/sourceforge/pebble/domain/BlogManager.instance.__Tag == net/sourceforge/pebble/domain/BlogManager
    //#pre[3] (void index(StaticPage, IndexWriter)): (soft) init'ed(net/sourceforge/pebble/domain/BlogManager.instance.multiBlog)
    //#pre[5] (void index(StaticPage, IndexWriter)): (soft) staticPage != null
    //#pre[6] (void index(StaticPage, IndexWriter)): (soft) staticPage.__Tag == net/sourceforge/pebble/domain/StaticPage
    //#pre[7] (void index(StaticPage, IndexWriter)): (soft) init'ed(staticPage.author)
    //#pre[8] (void index(StaticPage, IndexWriter)): (soft) staticPage.blog != null
    //#pre[9] (void index(StaticPage, IndexWriter)): (soft) staticPage.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[10] (void index(StaticPage, IndexWriter)): (soft) init'ed(staticPage.blog.id)
    //#pre[13] (void index(StaticPage, IndexWriter)): (soft) init'ed(staticPage.body)
    //#pre[14] (void index(StaticPage, IndexWriter)): (soft) init'ed(staticPage.body)
    //#pre[15] (void index(StaticPage, IndexWriter)): (soft) init'ed(staticPage.date)
    //#pre[16] (void index(StaticPage, IndexWriter)): (soft) init'ed(staticPage.excerpt)
    //#pre[17] (void index(StaticPage, IndexWriter)): (soft) init'ed(staticPage.excerpt)
    //#pre[18] (void index(StaticPage, IndexWriter)): (soft) init'ed(staticPage.id)
    //#pre[20] (void index(StaticPage, IndexWriter)): (soft) init'ed(staticPage.originalPermalink)
    //#pre[21] (void index(StaticPage, IndexWriter)): (soft) init'ed(staticPage.title)
    //#pre[22] (void index(StaticPage, IndexWriter)): (soft) writer != null
    //#presumption(void index(StaticPage, IndexWriter)): org.apache.commons.logging.LogFactory:getLog(...)@69 != null
    //#post(void index(StaticPage, IndexWriter)): possibly_updated(staticPage.permalink)
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:getLocalPermalink
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:getBlog
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:getUrl
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:getContent
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:net.sourceforge.pebble.util.StringUtils:truncate
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getInstance
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:net.sourceforge.pebble.PebbleContext:getConfiguration
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:getPermalinkProvider
    //#unanalyzed(void index(StaticPage, IndexWriter)): Effects-of-calling:getPermalink
    //#test_vector(void index(StaticPage, IndexWriter)): staticPage.author: Addr_Set{null}, Inverse{null}
    //#test_vector(void index(StaticPage, IndexWriter)): staticPage.body: Addr_Set{null}, Inverse{null}
    //#test_vector(void index(StaticPage, IndexWriter)): staticPage.title: Addr_Set{null}, Inverse{null}
    //#test_vector(void index(StaticPage, IndexWriter)): net.sourceforge.pebble.util.StringUtils:truncate(...)@101: Addr_Set{null}, Inverse{null}
      Document document = new Document();
    //#searchindex.java:319: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document()
      document.add(Field.Keyword("id", staticPage.getId()));
    //#searchindex.java:320: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Keyword(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Keyword(String, String)
    //#searchindex.java:320: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      if (staticPage.getTitle() != null) {
        document.add(Field.Text("title", staticPage.getTitle()));
    //#searchindex.java:322: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Text(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Text(String, String)
    //#searchindex.java:322: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      } else {
        document.add(Field.Text("title", ""));
    //#searchindex.java:324: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Text(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Text(String, String)
    //#searchindex.java:324: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      }
      document.add(Field.Keyword("permalink", staticPage.getPermalink()));
    //#searchindex.java:326: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Keyword(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Keyword(String, String)
    //#searchindex.java:326: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      document.add(Field.UnIndexed("date", DateField.dateToString(staticPage.getDate())));
    //#searchindex.java:327: Warning: method not available
    //#    -- call on String org.apache.lucene.document.DateField:dateToString(Date)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: String org.apache.lucene.document.DateField:dateToString(Date)
    //#searchindex.java:327: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:UnIndexed(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:UnIndexed(String, String)
    //#searchindex.java:327: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      if (staticPage.getBody() != null) {
        document.add(Field.UnStored("body", staticPage.getBody()));
    //#searchindex.java:329: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:UnStored(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:UnStored(String, String)
    //#searchindex.java:329: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      } else {
        document.add(Field.UnStored("body", ""));
    //#searchindex.java:331: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:UnStored(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:UnStored(String, String)
    //#searchindex.java:331: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      }
      if (staticPage.getTruncatedContent() != null) {
        document.add(Field.Text("truncatedBody", staticPage.getTruncatedContent()));
    //#searchindex.java:334: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Text(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Text(String, String)
    //#searchindex.java:334: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      } else {
        document.add(Field.Text("truncatedBody", ""));
    //#searchindex.java:336: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Text(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Text(String, String)
    //#searchindex.java:336: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      }

      if (staticPage.getAuthor() != null) {
        document.add(Field.Text("author", staticPage.getAuthor()));
    //#searchindex.java:340: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:Text(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:Text(String, String)
    //#searchindex.java:340: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)
      }

      // build up one large string with all searchable content
      // i.e. entry title, entry body and all response bodies
      StringBuffer searchableContent = new StringBuffer();
      searchableContent.append(staticPage.getTitle());
      searchableContent.append(" ");
      searchableContent.append(staticPage.getBody());

      // join the title and body together to make searching on them both easier
      document.add(Field.UnStored("blogEntry", searchableContent.toString()));
    //#searchindex.java:351: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Field:UnStored(String, String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: Field org.apache.lucene.document.Field:UnStored(String, String)
    //#searchindex.java:351: Warning: method not available
    //#    -- call on void org.apache.lucene.document.Document:add(Field)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.document.Document:add(Field)

      writer.addDocument(document);
    //#searchindex.java:353: Warning: method not available
    //#    -- call on void org.apache.lucene.index.IndexWriter:addDocument(Document)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.lucene.index.IndexWriter:addDocument(Document)
    } catch (Exception e) {
      log.error(e.getMessage(), e);
    //#searchindex.java:355: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: void index(StaticPage, IndexWriter)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
    }
  }
    //#searchindex.java:357: end of method: void net.sourceforge.pebble.index.SearchIndex.index(StaticPage, IndexWriter)

  public SearchResults search(String queryString) throws SearchException {

    log.debug("Performing search : " + queryString);
    //#searchindex.java:361: method: SearchResults net.sourceforge.pebble.index.SearchIndex.search(String)
    //#searchindex.java:361: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(SearchResults search(String)): log
    //#input(SearchResults search(String)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[net/sourceforge/pebble/domain/Blog]
    //#input(SearchResults search(String)): net/sourceforge/pebble/domain/Blog.__Descendant_Table[others]
    //#input(SearchResults search(String)): net/sourceforge/pebble/domain/Blog.__Dispatch_Table.getLuceneAnalyzer()Ljava/lang/String;
    //#input(SearchResults search(String)): queryString
    //#input(SearchResults search(String)): this
    //#input(SearchResults search(String)): this.blog
    //#input(SearchResults search(String)): this.blog.__Tag
    //#input(SearchResults search(String)): this.blog.properties
    //#output(SearchResults search(String)): new SearchResults(search#2) num objects
    //#output(SearchResults search(String)): return_value
    //#new obj(SearchResults search(String)): new SearchResults(search#2)
    //#pre[3] (SearchResults search(String)): (soft) this.blog != null
    //#pre[4] (SearchResults search(String)): (soft) this.blog.__Tag == net/sourceforge/pebble/domain/Blog
    //#pre[5] (SearchResults search(String)): (soft) this.blog.properties != null
    //#presumption(SearchResults search(String)): org.apache.commons.logging.LogFactory:getLog(...)@69 != null
    //#presumption(SearchResults search(String)): org.apache.lucene.search.Hits:doc(...)@375 != null
    //#presumption(SearchResults search(String)): org.apache.lucene.search.Searcher:search(...)@372 != null
    //#post(SearchResults search(String)): return_value == &new SearchResults(search#2)
    //#post(SearchResults search(String)): new SearchResults(search#2) num objects == 1
    //#unanalyzed(SearchResults search(String)): Effects-of-calling:getLuceneAnalyzer
    //#unanalyzed(SearchResults search(String)): Effects-of-calling:java.lang.Class:forName
    //#unanalyzed(SearchResults search(String)): Effects-of-calling:java.lang.Class:newInstance
    //#unanalyzed(SearchResults search(String)): Effects-of-calling:java.util.Properties:getProperty
    //#test_vector(SearchResults search(String)): queryString: Addr_Set{null}, Inverse{null}
    //#test_vector(SearchResults search(String)): java.lang.String:length(...)@366: {0}, {1..4_294_967_295}

    SearchResults searchResults = new SearchResults();
    //#searchindex.java:363: Warning: method not available
    //#    -- call on void net.sourceforge.pebble.search.SearchResults()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: void net.sourceforge.pebble.search.SearchResults()
    searchResults.setQuery(queryString);
    //#searchindex.java:364: Warning: method not available
    //#    -- call on void net.sourceforge.pebble.search.SearchResults:setQuery(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: void net.sourceforge.pebble.search.SearchResults:setQuery(String)

    if (queryString != null && queryString.length() > 0) {
      Searcher searcher = null;

      try {
        searcher = new IndexSearcher(blog.getSearchIndexDirectory());
    //#searchindex.java:370: Warning: method not available
    //#    -- call on String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: String net.sourceforge.pebble.domain.Blog:getSearchIndexDirectory()
    //#searchindex.java:370: Warning: method not available
    //#    -- call on void org.apache.lucene.search.IndexSearcher(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: void org.apache.lucene.search.IndexSearcher(String)
        Query query = QueryParser.parse(queryString, "blogEntry", getAnalyzer());
    //#searchindex.java:371: Warning: method not available
    //#    -- call on Query org.apache.lucene.queryParser.QueryParser:parse(String, String, Analyzer)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: Query org.apache.lucene.queryParser.QueryParser:parse(String, String, Analyzer)
        Hits hits = searcher.search(query);
    //#searchindex.java:372: Warning: method not available
    //#    -- call on Hits org.apache.lucene.search.Searcher:search(Query)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: Hits org.apache.lucene.search.Searcher:search(Query)

        for (int i = 0; i < hits.length(); i++) {
    //#searchindex.java:374: Warning: method not available
    //#    -- call on int org.apache.lucene.search.Hits:length()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: int org.apache.lucene.search.Hits:length()
          Document doc = hits.doc(i);
    //#searchindex.java:375: Warning: method not available
    //#    -- call on Document org.apache.lucene.search.Hits:doc(int)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: Document org.apache.lucene.search.Hits:doc(int)
          SearchHit result = new SearchHit(
    //#searchindex.java:376: Warning: method not available
    //#    -- call on void net.sourceforge.pebble.search.SearchHit(Blog, String, String, String, String, Date, float)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: void net.sourceforge.pebble.search.SearchHit(Blog, String, String, String, String, Date, float)
              blog,
              doc.get("id"),
    //#searchindex.java:378: Warning: method not available
    //#    -- call on String org.apache.lucene.document.Document:get(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: String org.apache.lucene.document.Document:get(String)
              doc.get("permalink"),
    //#searchindex.java:379: Warning: method not available
    //#    -- call on String org.apache.lucene.document.Document:get(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: String org.apache.lucene.document.Document:get(String)
              doc.get("title"),
    //#searchindex.java:380: Warning: method not available
    //#    -- call on String org.apache.lucene.document.Document:get(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: String org.apache.lucene.document.Document:get(String)
              doc.get("truncatedBody"),
    //#searchindex.java:381: Warning: method not available
    //#    -- call on String org.apache.lucene.document.Document:get(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: String org.apache.lucene.document.Document:get(String)
              DateField.stringToDate(doc.get("date")),
    //#searchindex.java:382: Warning: method not available
    //#    -- call on String org.apache.lucene.document.Document:get(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: String org.apache.lucene.document.Document:get(String)
    //#searchindex.java:382: Warning: method not available
    //#    -- call on Date org.apache.lucene.document.DateField:stringToDate(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: Date org.apache.lucene.document.DateField:stringToDate(String)
              hits.score(i));
    //#searchindex.java:383: Warning: method not available
    //#    -- call on float org.apache.lucene.search.Hits:score(int)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: float org.apache.lucene.search.Hits:score(int)
          searchResults.add(result);
    //#searchindex.java:384: Warning: method not available
    //#    -- call on void net.sourceforge.pebble.search.SearchResults:add(SearchHit)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: void net.sourceforge.pebble.search.SearchResults:add(SearchHit)
        }
      } catch (ParseException pe) {
        pe.printStackTrace();
    //#searchindex.java:387: Warning: method not available
    //#    -- call on void org.apache.lucene.queryParser.ParseException:printStackTrace()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: void org.apache.lucene.queryParser.ParseException:printStackTrace()
        searchResults.setMessage("Sorry, but there was an error. Please try another search");
    //#searchindex.java:388: Warning: method not available
    //#    -- call on void net.sourceforge.pebble.search.SearchResults:setMessage(String)
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: void net.sourceforge.pebble.search.SearchResults:setMessage(String)
      } catch (Exception e) {
        e.printStackTrace();
        throw new SearchException(e.getMessage());
      } finally {
        if (searcher != null) {
    //#searchindex.java:393: Warning: test always goes same way
    //#    test predetermined because searcher != null
    //#    severity: LOW
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    from bb: bb_19
    //#    live edge: bb_19-->bb_20
    //#    tested vn: 0
    //#    tested vn values: {0}
          try {
            searcher.close();
    //#searchindex.java:395: Warning: method not available
    //#    -- call on void org.apache.lucene.search.Searcher:close()
    //#    severity: INFORMATIONAL
    //#    class: net.sourceforge.pebble.index.SearchIndex
    //#    method: SearchResults search(String)
    //#    unanalyzed callee: void org.apache.lucene.search.Searcher:close()
          } catch (IOException e) {
            // can't do much now! ;-)
          }
        }
      }
    }

    return searchResults;
    //#searchindex.java:403: end of method: SearchResults net.sourceforge.pebble.index.SearchIndex.search(String)
  }

}

    //#searchindex.java:: end of class: net.sourceforge.pebble.index.SearchIndex
