//# 2 errors, 443 messages
//#
/*
    //#SearchResultsFeedModel.java:1:1: class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
 * Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  The ASF licenses this file to You
 * under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.  For additional information regarding
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */

package org.apache.roller.weblogger.ui.rendering.model;

import java.io.IOException;
import java.sql.Timestamp;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.lucene.document.Document;
import org.apache.lucene.search.Hits;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.URLStrategy;
import org.apache.roller.weblogger.business.Weblogger;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.business.WeblogManager;
import org.apache.roller.weblogger.business.search.FieldConstants;
import org.apache.roller.weblogger.business.search.IndexManager;
import org.apache.roller.weblogger.business.search.operations.SearchOperation;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.WeblogEntry;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.pojos.wrapper.WeblogCategoryWrapper;
import org.apache.roller.weblogger.pojos.wrapper.WeblogEntryWrapper;
import org.apache.roller.weblogger.pojos.wrapper.WeblogWrapper;
import org.apache.roller.weblogger.ui.rendering.pagers.Pager;
import org.apache.roller.weblogger.ui.rendering.pagers.SearchResultsFeedPager;
import org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest;
import org.apache.roller.weblogger.ui.rendering.util.WeblogRequest;


/**
 * Extends normal page renderer model to represent search results for Atom feeds.
 *
 * Also adds some new methods which are specific only to search results.
 */
public class SearchResultsFeedModel implements Model {
    //#SearchResultsFeedModel.java:60: method: void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()
    //#input(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this
    //#output(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): new LinkedList(SearchResultsFeedModel#1) num objects
    //#output(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): new TreeSet(SearchResultsFeedModel#2) num objects
    //#output(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.categories
    //#output(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.entryCount
    //#output(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.feedRequest
    //#output(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.hits
    //#output(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.limit
    //#output(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.offset
    //#output(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.pager
    //#output(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.results
    //#output(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.urlStrategy
    //#output(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.weblog
    //#output(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.websiteSpecificSearch
    //#new obj(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): new LinkedList(SearchResultsFeedModel#1)
    //#new obj(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): new TreeSet(SearchResultsFeedModel#2)
    //#post(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.categories == &new TreeSet(SearchResultsFeedModel#2)
    //#post(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.entryCount == 0
    //#post(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.hits == 0
    //#post(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.limit == 0
    //#post(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.offset == 0
    //#post(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.feedRequest == null
    //#post(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.pager == null
    //#post(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.urlStrategy == null
    //#post(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.weblog == null
    //#post(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.results == &new LinkedList(SearchResultsFeedModel#1)
    //#post(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): this.websiteSpecificSearch == 1
    //#post(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): new LinkedList(SearchResultsFeedModel#1) num objects == 1
    //#post(void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()): new TreeSet(SearchResultsFeedModel#2) num objects == 1

    private static Log log = LogFactory.getLog(SearchResultsFeedModel.class);
    //#SearchResultsFeedModel.java:62: method: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init
    //#SearchResultsFeedModel.java:62: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/rendering/model/SearchResultsFeedModel]
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.convertHitsToEntries(Lorg/apache/lucene/search/Hits;)V
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getCategories()Ljava/util/Set;
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getCategoryPath()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getHits()I
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getLimit()I
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getModelName()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getOffset()I
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getPage()I
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getResults()Ljava/util/List;
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getSearchResultsPager()Lorg/apache/roller/weblogger/ui/rendering/pagers/Pager;
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getTerm()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getWeblog()Lorg/apache/roller/weblogger/pojos/wrapper/WeblogWrapper;
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getWeblogCategory()Lorg/apache/roller/weblogger/pojos/wrapper/WeblogCategoryWrapper;
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.init(Ljava/util/Map;)V
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.isWebsiteSpecificSearch()Z
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): log
    //#output(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): org/apache/roller/weblogger/ui/rendering/model/Model.__Descendant_Table[org/apache/roller/weblogger/ui/rendering/model/SearchResultsFeedModel]
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/rendering/model/SearchResultsFeedModel] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): org/apache/roller/weblogger/ui/rendering/model/Model.__Descendant_Table[org/apache/roller/weblogger/ui/rendering/model/SearchResultsFeedModel] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.convertHitsToEntries(Lorg/apache/lucene/search/Hits;)V == &convertHitsToEntries
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getCategories()Ljava/util/Set; == &getCategories
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getCategoryPath()Ljava/lang/String; == &getCategoryPath
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getHits()I == &getHits
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getLimit()I == &getLimit
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getModelName()Ljava/lang/String; == &getModelName
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getOffset()I == &getOffset
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getPage()I == &getPage
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getResults()Ljava/util/List; == &getResults
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getSearchResultsPager()Lorg/apache/roller/weblogger/ui/rendering/pagers/Pager; == &getSearchResultsPager
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getTerm()Ljava/lang/String; == &getTerm
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getWeblog()Lorg/apache/roller/weblogger/pojos/wrapper/WeblogWrapper; == &getWeblog
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.getWeblogCategory()Lorg/apache/roller/weblogger/pojos/wrapper/WeblogCategoryWrapper; == &getWeblogCategory
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.init(Ljava/util/Map;)V == &init
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): __Dispatch_Table.isWebsiteSpecificSearch()Z == &isWebsiteSpecificSearch
    //#post(org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init): init'ed(log)
    //#SearchResultsFeedModel.java:62: end of method: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel__static_init
    
    private WeblogFeedRequest feedRequest = null;
    private URLStrategy urlStrategy = null;
    private Weblog weblog = null;
        
    // the pager used by the 3.0+ rendering system
    private SearchResultsFeedPager pager = null;
    
    private List results = new LinkedList();
    
    private Set categories = new TreeSet();

    private boolean websiteSpecificSearch = true;

    private int hits = 0;
    private int offset = 0;
    private int limit = 0;
    
    private int entryCount = 0;
    //#SearchResultsFeedModel.java:81: end of method: void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel()


    public String getModelName() {
        return "model";
    //#SearchResultsFeedModel.java:85: method: String org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getModelName()
    //#output(String getModelName()): return_value
    //#post(String getModelName()): return_value == &"model"
    //#SearchResultsFeedModel.java:85: end of method: String org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getModelName()
    }

    
    public void init(Map initData) throws WebloggerException {
        
        // we expect the init data to contain a weblogRequest object
        WeblogRequest weblogRequest = (WeblogRequest) initData.get("parsedRequest");
    //#SearchResultsFeedModel.java:92: method: void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.init(Map)
    //#input(void init(Map)): "request for messages in locale = "._tainted
    //#input(void init(Map)): initData
    //#input(void init(Map)): org/apache/roller/weblogger/util/I18nMessages.__Descendant_Table[org/apache/roller/weblogger/util/I18nMessages]
    //#input(void init(Map)): org/apache/roller/weblogger/util/I18nMessages.__Descendant_Table[others]
    //#input(void init(Map)): org/apache/roller/weblogger/util/I18nMessages.log
    //#input(void init(Map)): org/apache/roller/weblogger/util/I18nMessages.messagesMap
    //#input(void init(Map)): this
    //#input(void init(Map)): this.hits
    //#input(void init(Map)): this.limit
    //#input(void init(Map)): this.offset
    //#input(void init(Map)): this.results
    //#input(void init(Map)): this.websiteSpecificSearch
    //#output(void init(Map)): new I18nMessages(getMessages#2) num objects
    //#output(void init(Map)): new I18nMessages(getMessages#2).__Tag
    //#output(void init(Map)): new I18nMessages(getMessages#2).bundle
    //#output(void init(Map)): new I18nMessages(getMessages#2).locale
    //#output(void init(Map)): new Locale(SearchResultsFeedPager#1) num objects
    //#output(void init(Map)): new Locale(SearchResultsFeedPager#1)._tainted
    //#output(void init(Map)): new Locale(SearchResultsFeedPager#2) num objects
    //#output(void init(Map)): new Locale(SearchResultsFeedPager#2)._tainted
    //#output(void init(Map)): new SearchResultsFeedPager(init#1) num objects
    //#output(void init(Map)): new SearchResultsFeedPager(init#1).__Tag
    //#output(void init(Map)): new SearchResultsFeedPager(init#1).entries
    //#output(void init(Map)): new SearchResultsFeedPager(init#1).feedRequest
    //#output(void init(Map)): new SearchResultsFeedPager(init#1).messageUtils
    //#output(void init(Map)): new SearchResultsFeedPager(init#1).moreResults
    //#output(void init(Map)): new SearchResultsFeedPager(init#1).page
    //#output(void init(Map)): new SearchResultsFeedPager(init#1).url
    //#output(void init(Map)): new SearchResultsFeedPager(init#1).urlStrategy
    //#output(void init(Map)): new SearchResultsFeedPager(init#1).weblog
    //#output(void init(Map)): new SearchResultsFeedPager(init#3) num objects
    //#output(void init(Map)): new SearchResultsFeedPager(init#3).__Tag
    //#output(void init(Map)): new SearchResultsFeedPager(init#3).entries
    //#output(void init(Map)): new SearchResultsFeedPager(init#3).feedRequest
    //#output(void init(Map)): new SearchResultsFeedPager(init#3).messageUtils
    //#output(void init(Map)): new SearchResultsFeedPager(init#3).moreResults
    //#output(void init(Map)): new SearchResultsFeedPager(init#3).page
    //#output(void init(Map)): new SearchResultsFeedPager(init#3).url
    //#output(void init(Map)): new SearchResultsFeedPager(init#3).urlStrategy
    //#output(void init(Map)): new SearchResultsFeedPager(init#3).weblog
    //#output(void init(Map)): new TreeSet(convertHitsToEntries#1) num objects
    //#output(void init(Map)): this.categories
    //#output(void init(Map)): this.entryCount
    //#output(void init(Map)): this.feedRequest
    //#output(void init(Map)): this.hits
    //#output(void init(Map)): this.limit
    //#output(void init(Map)): this.offset
    //#output(void init(Map)): this.pager
    //#output(void init(Map)): this.urlStrategy
    //#output(void init(Map)): this.weblog
    //#output(void init(Map)): this.websiteSpecificSearch
    //#new obj(void init(Map)): new I18nMessages(getMessages#2)
    //#new obj(void init(Map)): new Locale(SearchResultsFeedPager#1)
    //#new obj(void init(Map)): new Locale(SearchResultsFeedPager#2)
    //#new obj(void init(Map)): new SearchResultsFeedPager(init#1)
    //#new obj(void init(Map)): new SearchResultsFeedPager(init#3)
    //#new obj(void init(Map)): new TreeSet(convertHitsToEntries#1)
    //#pre[1] (void init(Map)): initData != null
    //#pre[8] (void init(Map)): org/apache/roller/weblogger/util/I18nMessages.messagesMap != null
    //#pre[4] (void init(Map)): (soft) init'ed(this.hits)
    //#pre[5] (void init(Map)): (soft) init'ed(this.limit)
    //#pre[6] (void init(Map)): (soft) init'ed(this.offset)
    //#pre[7] (void init(Map)): (soft) init'ed(this.websiteSpecificSearch)
    //#pre[10] (void init(Map)): (soft) this.results != null
    //#presumption(void init(Map)): java.util.Map:get(...)@92 != null
    //#presumption(void init(Map)): org.apache.roller.weblogger.business.Weblogger:getIndexManager(...)@128 != null
    //#presumption(void init(Map)): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@107 != null
    //#presumption(void init(Map)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@107 != null
    //#presumption(void init(Map)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@128 != null
    //#presumption(void init(Map)): org.apache.roller.weblogger.business.search.operations.SearchOperation:getResults(...)@147 != null
    //#presumption(void init(Map)): org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:instanceof(...)@97 == 1
    //#post(void init(Map)): this.categories == One-of{old this.categories, &new TreeSet(convertHitsToEntries#1)}
    //#post(void init(Map)): possibly_updated(this.entryCount)
    //#post(void init(Map)): (soft) this.feedRequest != null
    //#post(void init(Map)): (soft) init'ed(this.hits)
    //#post(void init(Map)): (soft) init'ed(this.limit)
    //#post(void init(Map)): (soft) init'ed(this.offset)
    //#post(void init(Map)): this.pager in Addr_Set{&new SearchResultsFeedPager(init#3),&new SearchResultsFeedPager(init#1)}
    //#post(void init(Map)): this.urlStrategy != null
    //#post(void init(Map)): init'ed(this.weblog)
    //#post(void init(Map)): (soft) init'ed(this.websiteSpecificSearch)
    //#post(void init(Map)): new I18nMessages(getMessages#2) num objects <= 1
    //#post(void init(Map)): possibly_updated(new I18nMessages(getMessages#2).__Tag)
    //#post(void init(Map)): possibly_updated(new I18nMessages(getMessages#2).bundle)
    //#post(void init(Map)): possibly_updated(new I18nMessages(getMessages#2).locale)
    //#post(void init(Map)): new Locale(SearchResultsFeedPager#1) num objects == 0
    //#post(void init(Map)): new Locale(SearchResultsFeedPager#1)._tainted == 0
    //#post(void init(Map)): new Locale(SearchResultsFeedPager#2) num objects == 0
    //#post(void init(Map)): new Locale(SearchResultsFeedPager#2)._tainted == 0
    //#post(void init(Map)): new SearchResultsFeedPager(init#1) num objects <= 1
    //#post(void init(Map)): init'ed(new SearchResultsFeedPager(init#1).__Tag)
    //#post(void init(Map)): init'ed(new SearchResultsFeedPager(init#1).entries)
    //#post(void init(Map)): init'ed(new SearchResultsFeedPager(init#1).feedRequest)
    //#post(void init(Map)): init'ed(new SearchResultsFeedPager(init#1).messageUtils)
    //#post(void init(Map)): init'ed(new SearchResultsFeedPager(init#1).moreResults)
    //#post(void init(Map)): init'ed(new SearchResultsFeedPager(init#1).page)
    //#post(void init(Map)): init'ed(new SearchResultsFeedPager(init#1).url)
    //#post(void init(Map)): init'ed(new SearchResultsFeedPager(init#1).urlStrategy)
    //#post(void init(Map)): init'ed(new SearchResultsFeedPager(init#1).weblog)
    //#post(void init(Map)): new SearchResultsFeedPager(init#3) num objects <= 1
    //#post(void init(Map)): new SearchResultsFeedPager(init#3).__Tag == org/apache/roller/weblogger/ui/rendering/pagers/SearchResultsFeedPager
    //#post(void init(Map)): new SearchResultsFeedPager(init#3).entries == this.results
    //#post(void init(Map)): (soft) new SearchResultsFeedPager(init#3).entries != null
    //#post(void init(Map)): (soft) new SearchResultsFeedPager(init#3).feedRequest != null
    //#post(void init(Map)): new SearchResultsFeedPager(init#3).messageUtils != null
    //#post(void init(Map)): init'ed(new SearchResultsFeedPager(init#3).moreResults)
    //#post(void init(Map)): new SearchResultsFeedPager(init#3).page >= 0
    //#post(void init(Map)): init'ed(new SearchResultsFeedPager(init#3).url)
    //#post(void init(Map)): new SearchResultsFeedPager(init#3).urlStrategy != null
    //#post(void init(Map)): new SearchResultsFeedPager(init#3).weblog != null
    //#post(void init(Map)): new TreeSet(convertHitsToEntries#1) num objects <= 1
    //#unanalyzed(void init(Map)): Effects-of-calling:java.util.TreeSet
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getPage
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.lucene.search.Hits:length
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getWeblogManager
    //#unanalyzed(void init(Map)): Effects-of-calling:java.util.Date
    //#unanalyzed(void init(Map)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void init(Map)): Effects-of-calling:java.sql.Timestamp
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.lucene.search.Hits:doc
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.lucene.document.Document:getField
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.lucene.document.Field:stringValue
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogHandle
    //#unanalyzed(void init(Map)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry
    //#unanalyzed(void init(Map)): Effects-of-calling:java.util.TreeSet:add
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime
    //#unanalyzed(void init(Map)): Effects-of-calling:java.sql.Timestamp:before
    //#unanalyzed(void init(Map)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void init(Map)): Effects-of-calling:java.util.TreeSet:size
    //#unanalyzed(void init(Map)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.roller.weblogger.WebloggerException
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.roller.weblogger.ui.rendering.pagers.AbstractPager
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblog
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getLocale
    //#unanalyzed(void init(Map)): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void init(Map)): Effects-of-calling:java.util.Locale
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getLocaleInstance
    //#unanalyzed(void init(Map)): Effects-of-calling:java.util.ResourceBundle:getBundle
    //#unanalyzed(void init(Map)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void init(Map)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void init(Map)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void init(Map)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void init(Map)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void init(Map)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void init(Map)): Effects-of-calling:java.util.Locale:toString
    //#test_vector(void init(Map)): java.util.Map:get(...)@105: Inverse{null}, Addr_Set{null}
    //#test_vector(void init(Map)): org.apache.commons.lang.StringUtils:isNotEmpty(...)@139: {0}, {1}
    //#test_vector(void init(Map)): org.apache.roller.weblogger.business.search.operations.SearchOperation:getResultsCount(...)@146: {-2_147_483_648..-1}, {0..4_294_967_295}
    //#test_vector(void init(Map)): org.apache.roller.weblogger.config.WebloggerRuntimeConfig:isSiteWideWeblog(...)@133: {0}, {1}
    //#test_vector(void init(Map)): org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getTerm(...)@119: Inverse{null}, Addr_Set{null}
        if(weblogRequest == null) {
            throw new WebloggerException("expected weblogRequest from init data");
        }
        
        if(weblogRequest instanceof WeblogFeedRequest) {
            this.feedRequest = (WeblogFeedRequest) weblogRequest;
        } else {
            throw new WebloggerException("weblogRequest is not a WeblogFeedRequest."+
                    "  FeedModel only supports feed requests.");
        }
        
        // look for url strategy
        urlStrategy = (URLStrategy) initData.get("urlStrategy");
        if(urlStrategy == null) {
            urlStrategy = WebloggerFactory.getWeblogger().getUrlStrategy();
    //#SearchResultsFeedModel.java:107: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#SearchResultsFeedModel.java:107: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
        }
        
        // extract weblog object
        weblog = feedRequest.getWeblog();
    //#SearchResultsFeedModel.java:111: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblog()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblog()
        
        String  pagerUrl = urlStrategy.getWeblogFeedURL(weblog, 
    //#SearchResultsFeedModel.java:113: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getLocale()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getLocale()
    //#SearchResultsFeedModel.java:113: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getType()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getType()
    //#SearchResultsFeedModel.java:113: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getFormat()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getFormat()
    //#SearchResultsFeedModel.java:113: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)
                feedRequest.getLocale(), feedRequest.getType(),
                feedRequest.getFormat(), null, null, /* cat and term are null but added to the url in the pager */
                null, false, true);
        
        // if there is no query, then we are done
        if(feedRequest.getTerm() == null) {
    //#SearchResultsFeedModel.java:119: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getTerm()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getTerm()
            pager = new SearchResultsFeedPager(urlStrategy, pagerUrl, feedRequest.getPage(),
    //#SearchResultsFeedModel.java:120: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getPage()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: int org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getPage()
                    feedRequest, results, false);
            return;
        }
        
        this.entryCount = WebloggerRuntimeConfig.getIntProperty("site.newsfeeds.defaultEntries");
    //#SearchResultsFeedModel.java:125: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getIntProperty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: int org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getIntProperty(String)
        
        // setup the search
        IndexManager indexMgr = WebloggerFactory.getWeblogger().getIndexManager();
    //#SearchResultsFeedModel.java:128: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#SearchResultsFeedModel.java:128: Warning: method not available
    //#    -- call on IndexManager org.apache.roller.weblogger.business.Weblogger:getIndexManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: IndexManager org.apache.roller.weblogger.business.Weblogger:getIndexManager()
        
        SearchOperation search = new SearchOperation(indexMgr);
    //#SearchResultsFeedModel.java:130: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.search.operations.SearchOperation(IndexManager)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.search.operations.SearchOperation(IndexManager)
        search.setTerm(feedRequest.getTerm());
    //#SearchResultsFeedModel.java:131: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getTerm()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getTerm()
    //#SearchResultsFeedModel.java:131: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.search.operations.SearchOperation:setTerm(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.search.operations.SearchOperation:setTerm(String)
        
        if(WebloggerRuntimeConfig.isSiteWideWeblog(feedRequest.getWeblogHandle())) {
    //#SearchResultsFeedModel.java:133: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogHandle()
    //#SearchResultsFeedModel.java:133: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.config.WebloggerRuntimeConfig:isSiteWideWeblog(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.config.WebloggerRuntimeConfig:isSiteWideWeblog(String)
            this.websiteSpecificSearch  = false;
        } else {
            search.setWebsiteHandle(feedRequest.getWeblogHandle());
    //#SearchResultsFeedModel.java:136: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogHandle()
    //#SearchResultsFeedModel.java:136: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.search.operations.SearchOperation:setWebsiteHandle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.search.operations.SearchOperation:setWebsiteHandle(String)
        }
        
        if(StringUtils.isNotEmpty(feedRequest.getWeblogCategoryName())) {
    //#SearchResultsFeedModel.java:139: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogCategoryName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogCategoryName()
    //#SearchResultsFeedModel.java:139: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isNotEmpty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isNotEmpty(String)
            search.setCategory(feedRequest.getWeblogCategoryName());
    //#SearchResultsFeedModel.java:140: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogCategoryName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogCategoryName()
    //#SearchResultsFeedModel.java:140: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.search.operations.SearchOperation:setCategory(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.search.operations.SearchOperation:setCategory(String)
        }
        
        // execute search
        indexMgr.executeIndexOperationNow(search);
    //#SearchResultsFeedModel.java:144: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.search.IndexManager:executeIndexOperationNow(IndexOperation)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.search.IndexManager:executeIndexOperationNow(IndexOperation)
        
        if (search.getResultsCount() > -1) {
    //#SearchResultsFeedModel.java:146: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.business.search.operations.SearchOperation:getResultsCount()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: int org.apache.roller.weblogger.business.search.operations.SearchOperation:getResultsCount()
            Hits hits = search.getResults();
    //#SearchResultsFeedModel.java:147: Warning: method not available
    //#    -- call on Hits org.apache.roller.weblogger.business.search.operations.SearchOperation:getResults()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: Hits org.apache.roller.weblogger.business.search.operations.SearchOperation:getResults()
            this.hits = search.getResultsCount();
    //#SearchResultsFeedModel.java:148: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.business.search.operations.SearchOperation:getResultsCount()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: int org.apache.roller.weblogger.business.search.operations.SearchOperation:getResultsCount()
            
            // Convert the Hits into WeblogEntryData instances.
            convertHitsToEntries(hits);
        }
        
        // search completed, setup pager based on results
        pager = new SearchResultsFeedPager(urlStrategy, pagerUrl, feedRequest.getPage(),
    //#SearchResultsFeedModel.java:155: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getPage()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void init(Map)
    //#    unanalyzed callee: int org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getPage()
                feedRequest, results, (hits > (offset+limit)));
    }
    //#SearchResultsFeedModel.java:157: end of method: void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.init(Map)
    
    public Pager getSearchResultsPager() {
        return pager;
    //#SearchResultsFeedModel.java:160: method: Pager org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getSearchResultsPager()
    //#input(Pager getSearchResultsPager()): this
    //#input(Pager getSearchResultsPager()): this.pager
    //#output(Pager getSearchResultsPager()): return_value
    //#pre[2] (Pager getSearchResultsPager()): init'ed(this.pager)
    //#post(Pager getSearchResultsPager()): return_value == this.pager
    //#post(Pager getSearchResultsPager()): init'ed(return_value)
    //#SearchResultsFeedModel.java:160: end of method: Pager org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getSearchResultsPager()
    }
    
    private void convertHitsToEntries(Hits hits) throws WebloggerException {
        
        // determine offset
        this.offset = feedRequest.getPage() * this.entryCount;
    //#SearchResultsFeedModel.java:166: method: void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.convertHitsToEntries(Hits)
    //#SearchResultsFeedModel.java:166: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getPage()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: int org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getPage()
    //#input(void convertHitsToEntries(Hits)): hits
    //#input(void convertHitsToEntries(Hits)): this
    //#input(void convertHitsToEntries(Hits)): this.entryCount
    //#input(void convertHitsToEntries(Hits)): this.feedRequest
    //#input(void convertHitsToEntries(Hits)): this.results
    //#input(void convertHitsToEntries(Hits)): this.websiteSpecificSearch
    //#output(void convertHitsToEntries(Hits)): new TreeSet(convertHitsToEntries#1) num objects
    //#output(void convertHitsToEntries(Hits)): this.categories
    //#output(void convertHitsToEntries(Hits)): this.limit
    //#output(void convertHitsToEntries(Hits)): this.offset
    //#new obj(void convertHitsToEntries(Hits)): new TreeSet(convertHitsToEntries#1)
    //#pre[1] (void convertHitsToEntries(Hits)): hits != null
    //#pre[4] (void convertHitsToEntries(Hits)): init'ed(this.entryCount)
    //#pre[5] (void convertHitsToEntries(Hits)): this.feedRequest != null
    //#pre[6] (void convertHitsToEntries(Hits)): (soft) this.results != null
    //#pre[8] (void convertHitsToEntries(Hits)): (soft) init'ed(this.websiteSpecificSearch)
    //#presumption(void convertHitsToEntries(Hits)): org.apache.lucene.document.Document:getField(...)@191 != null
    //#presumption(void convertHitsToEntries(Hits)): org.apache.lucene.document.Document:getField(...)@196 != null
    //#presumption(void convertHitsToEntries(Hits)): org.apache.lucene.document.Document:getField(...)@200 != null
    //#presumption(void convertHitsToEntries(Hits)): org.apache.lucene.document.Document:getField(...)@204 != null
    //#presumption(void convertHitsToEntries(Hits)): org.apache.lucene.document.Field:stringValue(...)@191 != null
    //#presumption(void convertHitsToEntries(Hits)): org.apache.lucene.search.Hits:doc(...)@190 != null
    //#presumption(void convertHitsToEntries(Hits)): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@180 != null
    //#presumption(void convertHitsToEntries(Hits)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@179 != null
    //#presumption(void convertHitsToEntries(Hits)): org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime(...)@212 != null
    //#presumption(void convertHitsToEntries(Hits)): this.entryCount*org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getPage(...)@166 in -2_147_483_648..4_294_967_295
    //#presumption(void convertHitsToEntries(Hits)): this.offset - org.apache.lucene.search.Hits:length(...)@174 in -4_294_967_295..2_147_483_648
    //#post(void convertHitsToEntries(Hits)): this.categories == One-of{old this.categories, &new TreeSet(convertHitsToEntries#1)}
    //#post(void convertHitsToEntries(Hits)): init'ed(this.limit)
    //#post(void convertHitsToEntries(Hits)): this.offset <= 4_294_967_294
    //#post(void convertHitsToEntries(Hits)): new TreeSet(convertHitsToEntries#1) num objects == 1
    //#post(void convertHitsToEntries(Hits)): this.offset + this.limit in -4_294_967_296..4_294_967_295
    //#test_vector(void convertHitsToEntries(Hits)): this.websiteSpecificSearch: {0}, {1}
    //#test_vector(void convertHitsToEntries(Hits)): java.lang.String:equals(...)@193: {0}, {1}
    //#test_vector(void convertHitsToEntries(Hits)): java.sql.Timestamp:before(...)@212: {0}, {1}
    //#test_vector(void convertHitsToEntries(Hits)): java.util.TreeSet:size(...)@217: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(void convertHitsToEntries(Hits)): org.apache.lucene.document.Document:getField(...)@203: Addr_Set{null}, Inverse{null}
        if(this.offset >= hits.length()) {
    //#SearchResultsFeedModel.java:167: Warning: method not available
    //#    -- call on int org.apache.lucene.search.Hits:length()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: int org.apache.lucene.search.Hits:length()
            this.offset = 0;
        }
        
        // determine limit
        this.limit = this.entryCount;
        if(this.offset + this.limit > hits.length()) {
    //#SearchResultsFeedModel.java:173: Warning: method not available
    //#    -- call on int org.apache.lucene.search.Hits:length()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: int org.apache.lucene.search.Hits:length()
            this.limit = hits.length() - this.offset;
    //#SearchResultsFeedModel.java:174: Warning: method not available
    //#    -- call on int org.apache.lucene.search.Hits:length()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: int org.apache.lucene.search.Hits:length()
        }
        
        try {
            TreeSet categories = new TreeSet();
            Weblogger roller = WebloggerFactory.getWeblogger();
    //#SearchResultsFeedModel.java:179: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
            WeblogManager weblogMgr = roller.getWeblogManager();
    //#SearchResultsFeedModel.java:180: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
            
            WeblogEntry entry = null;
    //#SearchResultsFeedModel.java:182: Warning: unused assignment
    //#    unused assignment into entry
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    Attribs:  Uncertain
            Document doc = null;
    //#SearchResultsFeedModel.java:183: Warning: unused assignment
    //#    unused assignment into doc
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    Attribs:  Uncertain
            String handle = null;
    //#SearchResultsFeedModel.java:184: Warning: unused assignment
    //#    unused assignment into handle
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    Attribs:  Uncertain
            Timestamp now = new Timestamp(new Date().getTime());
            for(int i = offset; i < offset+limit; i++) {
                
                entry = null; // reset for each iteration
    //#SearchResultsFeedModel.java:188: Warning: unused assignment
    //#    unused assignment into entry
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    Attribs:  Uncertain
                
                doc = hits.doc(i);
    //#SearchResultsFeedModel.java:190: Warning: method not available
    //#    -- call on Document org.apache.lucene.search.Hits:doc(int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: Document org.apache.lucene.search.Hits:doc(int)
                handle = doc.getField(FieldConstants.WEBSITE_HANDLE).stringValue();
    //#SearchResultsFeedModel.java:191: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Document:getField(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: Field org.apache.lucene.document.Document:getField(String)
    //#SearchResultsFeedModel.java:191: Warning: method not available
    //#    -- call on String org.apache.lucene.document.Field:stringValue()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: String org.apache.lucene.document.Field:stringValue()
                
                if(websiteSpecificSearch &&
    //#SearchResultsFeedModel.java:193: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogHandle()
                        handle.equals(feedRequest.getWeblogHandle())) {
                    
                    entry = weblogMgr.getWeblogEntry(
    //#SearchResultsFeedModel.java:196: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Document:getField(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: Field org.apache.lucene.document.Document:getField(String)
    //#SearchResultsFeedModel.java:196: Warning: method not available
    //#    -- call on String org.apache.lucene.document.Field:stringValue()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: String org.apache.lucene.document.Field:stringValue()
    //#SearchResultsFeedModel.java:196: Warning: method not available
    //#    -- call on WeblogEntry org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: WeblogEntry org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(String)
                            doc.getField(FieldConstants.ID).stringValue());
                } else {
                    
                    entry = weblogMgr.getWeblogEntry(
    //#SearchResultsFeedModel.java:200: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Document:getField(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: Field org.apache.lucene.document.Document:getField(String)
    //#SearchResultsFeedModel.java:200: Warning: method not available
    //#    -- call on String org.apache.lucene.document.Field:stringValue()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: String org.apache.lucene.document.Field:stringValue()
    //#SearchResultsFeedModel.java:200: Warning: method not available
    //#    -- call on WeblogEntry org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: WeblogEntry org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(String)
                            doc.getField(FieldConstants.ID).stringValue());
                    
                    if (doc.getField(FieldConstants.CATEGORY) != null) {
    //#SearchResultsFeedModel.java:203: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Document:getField(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: Field org.apache.lucene.document.Document:getField(String)
                        categories.add(
    //#SearchResultsFeedModel.java:204: Warning: method not available
    //#    -- call on Field org.apache.lucene.document.Document:getField(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: Field org.apache.lucene.document.Document:getField(String)
    //#SearchResultsFeedModel.java:204: Warning: method not available
    //#    -- call on String org.apache.lucene.document.Field:stringValue()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: String org.apache.lucene.document.Field:stringValue()
                                doc.getField(FieldConstants.CATEGORY).stringValue());
                    }
                }
                
                // maybe null if search result returned inactive user
                // or entry's user is not the requested user.
                // but don't return future posts
                if (entry != null && entry.getPubTime().before(now)) {
    //#SearchResultsFeedModel.java:212: Warning: method not available
    //#    -- call on Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    unanalyzed callee: Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
                    results.add(WeblogEntryWrapper.wrap(entry, urlStrategy));
    //#SearchResultsFeedModel.java:213: ?use of default init
    //#    init'ed(this.urlStrategy)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: void convertHitsToEntries(Hits)
    //#    basic block: bb_15
    //#    assertion: init'ed(this.urlStrategy)
    //#    VN: this.urlStrategy
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
                }
            }
            
            if(categories.size() > 0) {
                this.categories = categories;
            }
        } catch(IOException e) {
            throw new WebloggerException(e);
        }
    }
    //#SearchResultsFeedModel.java:223: end of method: void org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.convertHitsToEntries(Hits)
    
    /**
     * Get weblog being displayed.
     */
    public WeblogWrapper getWeblog() {
        return WeblogWrapper.wrap(weblog, urlStrategy);
    //#SearchResultsFeedModel.java:229: method: WeblogWrapper org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getWeblog()
    //#input(WeblogWrapper getWeblog()): this
    //#input(WeblogWrapper getWeblog()): this.urlStrategy
    //#input(WeblogWrapper getWeblog()): this.weblog
    //#output(WeblogWrapper getWeblog()): new WeblogWrapper(wrap#1) num objects
    //#output(WeblogWrapper getWeblog()): new WeblogWrapper(wrap#1).__Tag
    //#output(WeblogWrapper getWeblog()): new WeblogWrapper(wrap#1).pojo
    //#output(WeblogWrapper getWeblog()): new WeblogWrapper(wrap#1).urlStrategy
    //#output(WeblogWrapper getWeblog()): return_value
    //#new obj(WeblogWrapper getWeblog()): new WeblogWrapper(wrap#1)
    //#pre[2] (WeblogWrapper getWeblog()): init'ed(this.urlStrategy)
    //#pre[3] (WeblogWrapper getWeblog()): this.weblog != null
    //#post(WeblogWrapper getWeblog()): return_value == &new WeblogWrapper(wrap#1)
    //#post(WeblogWrapper getWeblog()): new WeblogWrapper(wrap#1) num objects == 1
    //#post(WeblogWrapper getWeblog()): new WeblogWrapper(wrap#1).__Tag == org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper
    //#post(WeblogWrapper getWeblog()): new WeblogWrapper(wrap#1).pojo == this.weblog
    //#post(WeblogWrapper getWeblog()): new WeblogWrapper(wrap#1).pojo != null
    //#post(WeblogWrapper getWeblog()): new WeblogWrapper(wrap#1).urlStrategy == this.urlStrategy
    //#post(WeblogWrapper getWeblog()): init'ed(new WeblogWrapper(wrap#1).urlStrategy)
    //#SearchResultsFeedModel.java:229: end of method: WeblogWrapper org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getWeblog()
    }
    
    public String getTerm() {
        return (feedRequest.getTerm() == null) ? "" : feedRequest.getTerm();
    //#SearchResultsFeedModel.java:233: method: String org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getTerm()
    //#SearchResultsFeedModel.java:233: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getTerm()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: String getTerm()
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getTerm()
    //#input(String getTerm()): this
    //#input(String getTerm()): this.feedRequest
    //#output(String getTerm()): return_value
    //#pre[2] (String getTerm()): this.feedRequest != null
    //#post(String getTerm()): init'ed(return_value)
    //#SearchResultsFeedModel.java:233: end of method: String org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getTerm()
    }

    public int getHits() {
        return hits;
    //#SearchResultsFeedModel.java:237: method: int org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getHits()
    //#input(int getHits()): this
    //#input(int getHits()): this.hits
    //#output(int getHits()): return_value
    //#pre[2] (int getHits()): init'ed(this.hits)
    //#post(int getHits()): return_value == this.hits
    //#post(int getHits()): init'ed(return_value)
    //#SearchResultsFeedModel.java:237: end of method: int org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getHits()
    }

    public int getOffset() {
        return offset;
    //#SearchResultsFeedModel.java:241: method: int org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getOffset()
    //#input(int getOffset()): this
    //#input(int getOffset()): this.offset
    //#output(int getOffset()): return_value
    //#pre[2] (int getOffset()): init'ed(this.offset)
    //#post(int getOffset()): return_value == this.offset
    //#post(int getOffset()): init'ed(return_value)
    //#SearchResultsFeedModel.java:241: end of method: int org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getOffset()
    }
    
    public int getPage() {
        return feedRequest.getPage();
    //#SearchResultsFeedModel.java:245: method: int org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getPage()
    //#SearchResultsFeedModel.java:245: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getPage()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: int getPage()
    //#    unanalyzed callee: int org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getPage()
    //#input(int getPage()): this
    //#input(int getPage()): this.feedRequest
    //#output(int getPage()): return_value
    //#pre[2] (int getPage()): this.feedRequest != null
    //#post(int getPage()): init'ed(return_value)
    //#SearchResultsFeedModel.java:245: end of method: int org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getPage()
    }

    public int getLimit() {
        return limit;
    //#SearchResultsFeedModel.java:249: method: int org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getLimit()
    //#input(int getLimit()): this
    //#input(int getLimit()): this.limit
    //#output(int getLimit()): return_value
    //#pre[2] (int getLimit()): init'ed(this.limit)
    //#post(int getLimit()): return_value == this.limit
    //#post(int getLimit()): init'ed(return_value)
    //#SearchResultsFeedModel.java:249: end of method: int org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getLimit()
    }

    public List getResults() {
        return results;
    //#SearchResultsFeedModel.java:253: method: List org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getResults()
    //#input(List getResults()): this
    //#input(List getResults()): this.results
    //#output(List getResults()): return_value
    //#pre[2] (List getResults()): init'ed(this.results)
    //#post(List getResults()): return_value == this.results
    //#post(List getResults()): init'ed(return_value)
    //#SearchResultsFeedModel.java:253: end of method: List org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getResults()
    }

    public Set getCategories() {
        return categories;
    //#SearchResultsFeedModel.java:257: method: Set org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getCategories()
    //#input(Set getCategories()): this
    //#input(Set getCategories()): this.categories
    //#output(Set getCategories()): return_value
    //#pre[2] (Set getCategories()): init'ed(this.categories)
    //#post(Set getCategories()): return_value == this.categories
    //#post(Set getCategories()): init'ed(return_value)
    //#SearchResultsFeedModel.java:257: end of method: Set org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getCategories()
    }

    public boolean isWebsiteSpecificSearch() {
        return websiteSpecificSearch;
    //#SearchResultsFeedModel.java:261: method: bool org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.isWebsiteSpecificSearch()
    //#input(bool isWebsiteSpecificSearch()): this
    //#input(bool isWebsiteSpecificSearch()): this.websiteSpecificSearch
    //#output(bool isWebsiteSpecificSearch()): return_value
    //#pre[2] (bool isWebsiteSpecificSearch()): init'ed(this.websiteSpecificSearch)
    //#post(bool isWebsiteSpecificSearch()): return_value == this.websiteSpecificSearch
    //#post(bool isWebsiteSpecificSearch()): init'ed(return_value)
    //#SearchResultsFeedModel.java:261: end of method: bool org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.isWebsiteSpecificSearch()
    }   
    
    public String getCategoryPath() {
        return feedRequest.getWeblogCategoryName();
    //#SearchResultsFeedModel.java:265: method: String org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getCategoryPath()
    //#SearchResultsFeedModel.java:265: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogCategoryName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: String getCategoryPath()
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogCategoryName()
    //#input(String getCategoryPath()): this
    //#input(String getCategoryPath()): this.feedRequest
    //#output(String getCategoryPath()): return_value
    //#pre[2] (String getCategoryPath()): this.feedRequest != null
    //#post(String getCategoryPath()): init'ed(return_value)
    //#SearchResultsFeedModel.java:265: end of method: String org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getCategoryPath()
    }
    
    public WeblogCategoryWrapper getWeblogCategory() {
        if(feedRequest.getWeblogCategory() != null) {
    //#SearchResultsFeedModel.java:269: method: WeblogCategoryWrapper org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getWeblogCategory()
    //#SearchResultsFeedModel.java:269: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogCategory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: WeblogCategoryWrapper getWeblogCategory()
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogCategory()
    //#input(WeblogCategoryWrapper getWeblogCategory()): this
    //#input(WeblogCategoryWrapper getWeblogCategory()): this.feedRequest
    //#output(WeblogCategoryWrapper getWeblogCategory()): new WeblogCategoryWrapper(wrap#1) num objects
    //#output(WeblogCategoryWrapper getWeblogCategory()): new WeblogCategoryWrapper(wrap#1).__Tag
    //#output(WeblogCategoryWrapper getWeblogCategory()): new WeblogCategoryWrapper(wrap#1).pojo
    //#output(WeblogCategoryWrapper getWeblogCategory()): new WeblogCategoryWrapper(wrap#1).urlStrategy
    //#output(WeblogCategoryWrapper getWeblogCategory()): return_value
    //#new obj(WeblogCategoryWrapper getWeblogCategory()): new WeblogCategoryWrapper(wrap#1)
    //#pre[2] (WeblogCategoryWrapper getWeblogCategory()): this.feedRequest != null
    //#post(WeblogCategoryWrapper getWeblogCategory()): return_value == One-of{&new WeblogCategoryWrapper(wrap#1), null}
    //#post(WeblogCategoryWrapper getWeblogCategory()): return_value in Addr_Set{null,&new WeblogCategoryWrapper(wrap#1)}
    //#post(WeblogCategoryWrapper getWeblogCategory()): new WeblogCategoryWrapper(wrap#1) num objects <= 1
    //#post(WeblogCategoryWrapper getWeblogCategory()): new WeblogCategoryWrapper(wrap#1).__Tag == org/apache/roller/weblogger/pojos/wrapper/WeblogCategoryWrapper
    //#post(WeblogCategoryWrapper getWeblogCategory()): new WeblogCategoryWrapper(wrap#1).pojo != null
    //#post(WeblogCategoryWrapper getWeblogCategory()): new WeblogCategoryWrapper(wrap#1).urlStrategy == this.urlStrategy
    //#post(WeblogCategoryWrapper getWeblogCategory()): init'ed(new WeblogCategoryWrapper(wrap#1).urlStrategy)
    //#test_vector(WeblogCategoryWrapper getWeblogCategory()): org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogCategory(...)@269: Addr_Set{null}, Inverse{null}
            return WeblogCategoryWrapper.wrap(feedRequest.getWeblogCategory(), urlStrategy);
    //#SearchResultsFeedModel.java:270: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogCategory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: WeblogCategoryWrapper getWeblogCategory()
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogCategory()
    //#SearchResultsFeedModel.java:270: ?use of default init
    //#    init'ed(this.urlStrategy)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
    //#    method: WeblogCategoryWrapper getWeblogCategory()
    //#    basic block: bb_2
    //#    assertion: init'ed(this.urlStrategy)
    //#    VN: this.urlStrategy
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
        }
        return null;
    //#SearchResultsFeedModel.java:272: end of method: WeblogCategoryWrapper org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel.getWeblogCategory()
    }    
}
    //#SearchResultsFeedModel.java:: end of class: org.apache.roller.weblogger.ui.rendering.model.SearchResultsFeedModel
