//# 1 errors, 816 messages
//#
/*
    //#LinkbackExtractor.java:1:1: class: org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback
    //#LinkbackExtractor.java:1:1: method: org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback.org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback__static_init
    //#LinkbackExtractor.java:1:1: class: org.apache.roller.weblogger.util.LinkbackExtractor$1
    //#LinkbackExtractor.java:1:1: method: org.apache.roller.weblogger.util.LinkbackExtractor$1.org.apache.roller.weblogger.util.LinkbackExtractor$1__static_init
    //#LinkbackExtractor.java:1:1: class: org.apache.roller.weblogger.util.LinkbackExtractor
* 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.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

import javax.swing.text.MutableAttributeSet;
import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.HTML.Tag;
import javax.swing.text.html.HTMLEditorKit.Parser;
import javax.swing.text.html.HTMLEditorKit.ParserCallback;

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

import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.FeedException;
import com.sun.syndication.io.SyndFeedInput;

/**
 * Parses HTML file for referring linkback title and excerpt.
 * 
 * @author David M Johnson
 */
public class LinkbackExtractor
    //#LinkbackExtractor.java:51: method: bool org.apache.roller.weblogger.util.LinkbackExtractor.access$100(LinkbackExtractor)
    //#input(bool access$100(LinkbackExtractor)): x0
    //#input(bool access$100(LinkbackExtractor)): x0.mFound
    //#output(bool access$100(LinkbackExtractor)): return_value
    //#pre[1] (bool access$100(LinkbackExtractor)): x0 != null
    //#pre[2] (bool access$100(LinkbackExtractor)): init'ed(x0.mFound)
    //#post(bool access$100(LinkbackExtractor)): return_value == x0.mFound
    //#post(bool access$100(LinkbackExtractor)): init'ed(return_value)
    //#LinkbackExtractor.java:51: end of method: bool org.apache.roller.weblogger.util.LinkbackExtractor.access$100(LinkbackExtractor)
    //#LinkbackExtractor.java:51: method: int org.apache.roller.weblogger.util.LinkbackExtractor.access$202(LinkbackExtractor, int)
    //#input(int access$202(LinkbackExtractor, int)): x0
    //#input(int access$202(LinkbackExtractor, int)): x1
    //#output(int access$202(LinkbackExtractor, int)): return_value
    //#output(int access$202(LinkbackExtractor, int)): x0.mStart
    //#pre[1] (int access$202(LinkbackExtractor, int)): x0 != null
    //#post(int access$202(LinkbackExtractor, int)): return_value == x1
    //#post(int access$202(LinkbackExtractor, int)): init'ed(return_value)
    //#post(int access$202(LinkbackExtractor, int)): x0.mStart == return_value
    //#LinkbackExtractor.java:51: end of method: int org.apache.roller.weblogger.util.LinkbackExtractor.access$202(LinkbackExtractor, int)
    //#LinkbackExtractor.java:51: method: int org.apache.roller.weblogger.util.LinkbackExtractor.access$300(LinkbackExtractor)
    //#input(int access$300(LinkbackExtractor)): x0
    //#input(int access$300(LinkbackExtractor)): x0.mEnd
    //#output(int access$300(LinkbackExtractor)): return_value
    //#pre[1] (int access$300(LinkbackExtractor)): x0 != null
    //#pre[2] (int access$300(LinkbackExtractor)): init'ed(x0.mEnd)
    //#post(int access$300(LinkbackExtractor)): return_value == x0.mEnd
    //#post(int access$300(LinkbackExtractor)): init'ed(return_value)
    //#LinkbackExtractor.java:51: end of method: int org.apache.roller.weblogger.util.LinkbackExtractor.access$300(LinkbackExtractor)
    //#LinkbackExtractor.java:51: method: int org.apache.roller.weblogger.util.LinkbackExtractor.access$302(LinkbackExtractor, int)
    //#input(int access$302(LinkbackExtractor, int)): x0
    //#input(int access$302(LinkbackExtractor, int)): x1
    //#output(int access$302(LinkbackExtractor, int)): return_value
    //#output(int access$302(LinkbackExtractor, int)): x0.mEnd
    //#pre[1] (int access$302(LinkbackExtractor, int)): x0 != null
    //#post(int access$302(LinkbackExtractor, int)): return_value == x1
    //#post(int access$302(LinkbackExtractor, int)): init'ed(return_value)
    //#post(int access$302(LinkbackExtractor, int)): x0.mEnd == return_value
    //#LinkbackExtractor.java:51: end of method: int org.apache.roller.weblogger.util.LinkbackExtractor.access$302(LinkbackExtractor, int)
    //#LinkbackExtractor.java:51: method: String org.apache.roller.weblogger.util.LinkbackExtractor.access$400(LinkbackExtractor)
    //#input(String access$400(LinkbackExtractor)): x0
    //#input(String access$400(LinkbackExtractor)): x0.mRequestURL
    //#output(String access$400(LinkbackExtractor)): return_value
    //#pre[1] (String access$400(LinkbackExtractor)): x0 != null
    //#pre[2] (String access$400(LinkbackExtractor)): init'ed(x0.mRequestURL)
    //#post(String access$400(LinkbackExtractor)): return_value == x0.mRequestURL
    //#post(String access$400(LinkbackExtractor)): init'ed(return_value)
    //#LinkbackExtractor.java:51: end of method: String org.apache.roller.weblogger.util.LinkbackExtractor.access$400(LinkbackExtractor)
    //#LinkbackExtractor.java:51: method: String org.apache.roller.weblogger.util.LinkbackExtractor.access$500(LinkbackExtractor)
    //#input(String access$500(LinkbackExtractor)): x0
    //#input(String access$500(LinkbackExtractor)): x0.mRequestURLWWW
    //#output(String access$500(LinkbackExtractor)): return_value
    //#pre[1] (String access$500(LinkbackExtractor)): x0 != null
    //#pre[2] (String access$500(LinkbackExtractor)): init'ed(x0.mRequestURLWWW)
    //#post(String access$500(LinkbackExtractor)): return_value == x0.mRequestURLWWW
    //#post(String access$500(LinkbackExtractor)): init'ed(return_value)
    //#LinkbackExtractor.java:51: end of method: String org.apache.roller.weblogger.util.LinkbackExtractor.access$500(LinkbackExtractor)
    //#LinkbackExtractor.java:51: method: bool org.apache.roller.weblogger.util.LinkbackExtractor.access$102(LinkbackExtractor, bool)
    //#input(bool access$102(LinkbackExtractor, bool)): x0
    //#input(bool access$102(LinkbackExtractor, bool)): x1
    //#output(bool access$102(LinkbackExtractor, bool)): return_value
    //#output(bool access$102(LinkbackExtractor, bool)): x0.mFound
    //#pre[1] (bool access$102(LinkbackExtractor, bool)): x0 != null
    //#post(bool access$102(LinkbackExtractor, bool)): return_value == x1
    //#post(bool access$102(LinkbackExtractor, bool)): init'ed(return_value)
    //#post(bool access$102(LinkbackExtractor, bool)): x0.mFound == return_value
    //#LinkbackExtractor.java:51: end of method: bool org.apache.roller.weblogger.util.LinkbackExtractor.access$102(LinkbackExtractor, bool)
    //#LinkbackExtractor.java:51: method: String org.apache.roller.weblogger.util.LinkbackExtractor.access$602(LinkbackExtractor, String)
    //#input(String access$602(LinkbackExtractor, String)): x0
    //#input(String access$602(LinkbackExtractor, String)): x1
    //#output(String access$602(LinkbackExtractor, String)): return_value
    //#output(String access$602(LinkbackExtractor, String)): x0.mRssLink
    //#pre[1] (String access$602(LinkbackExtractor, String)): x0 != null
    //#post(String access$602(LinkbackExtractor, String)): return_value == x1
    //#post(String access$602(LinkbackExtractor, String)): init'ed(return_value)
    //#post(String access$602(LinkbackExtractor, String)): x0.mRssLink == return_value
    //#LinkbackExtractor.java:51: end of method: String org.apache.roller.weblogger.util.LinkbackExtractor.access$602(LinkbackExtractor, String)
    //#LinkbackExtractor.java:51: method: Log org.apache.roller.weblogger.util.LinkbackExtractor.access$700()
    //#input(Log access$700()): mLogger
    //#output(Log access$700()): return_value
    //#pre[1] (Log access$700()): init'ed(mLogger)
    //#post(Log access$700()): return_value == mLogger
    //#post(Log access$700()): init'ed(return_value)
    //#LinkbackExtractor.java:51: end of method: Log org.apache.roller.weblogger.util.LinkbackExtractor.access$700()
    //#LinkbackExtractor.java:51: method: String org.apache.roller.weblogger.util.LinkbackExtractor.access$600(LinkbackExtractor)
    //#input(String access$600(LinkbackExtractor)): x0
    //#input(String access$600(LinkbackExtractor)): x0.mRssLink
    //#output(String access$600(LinkbackExtractor)): return_value
    //#pre[1] (String access$600(LinkbackExtractor)): x0 != null
    //#pre[2] (String access$600(LinkbackExtractor)): init'ed(x0.mRssLink)
    //#post(String access$600(LinkbackExtractor)): return_value == x0.mRssLink
    //#post(String access$600(LinkbackExtractor)): init'ed(return_value)
    //#LinkbackExtractor.java:51: end of method: String org.apache.roller.weblogger.util.LinkbackExtractor.access$600(LinkbackExtractor)
    //#LinkbackExtractor.java:51: method: String org.apache.roller.weblogger.util.LinkbackExtractor.access$800(LinkbackExtractor)
    //#input(String access$800(LinkbackExtractor)): x0
    //#input(String access$800(LinkbackExtractor)): x0.mRefererURL
    //#output(String access$800(LinkbackExtractor)): return_value
    //#pre[1] (String access$800(LinkbackExtractor)): x0 != null
    //#pre[2] (String access$800(LinkbackExtractor)): init'ed(x0.mRefererURL)
    //#post(String access$800(LinkbackExtractor)): return_value == x0.mRefererURL
    //#post(String access$800(LinkbackExtractor)): init'ed(return_value)
    //#LinkbackExtractor.java:51: end of method: String org.apache.roller.weblogger.util.LinkbackExtractor.access$800(LinkbackExtractor)
    //#LinkbackExtractor.java:51: method: String org.apache.roller.weblogger.util.LinkbackExtractor.access$900(LinkbackExtractor)
    //#input(String access$900(LinkbackExtractor)): x0
    //#input(String access$900(LinkbackExtractor)): x0.mTitle
    //#output(String access$900(LinkbackExtractor)): return_value
    //#pre[1] (String access$900(LinkbackExtractor)): x0 != null
    //#pre[2] (String access$900(LinkbackExtractor)): init'ed(x0.mTitle)
    //#post(String access$900(LinkbackExtractor)): return_value == x0.mTitle
    //#post(String access$900(LinkbackExtractor)): init'ed(return_value)
    //#LinkbackExtractor.java:51: end of method: String org.apache.roller.weblogger.util.LinkbackExtractor.access$900(LinkbackExtractor)
    //#LinkbackExtractor.java:51: method: String org.apache.roller.weblogger.util.LinkbackExtractor.access$984(LinkbackExtractor, Object)
    //#input(String access$984(LinkbackExtractor, Object)): x0
    //#input(String access$984(LinkbackExtractor, Object)): x0.mTitle
    //#input(String access$984(LinkbackExtractor, Object)): x0.mTitle._tainted
    //#input(String access$984(LinkbackExtractor, Object)): x1
    //#input(String access$984(LinkbackExtractor, Object)): x1._tainted
    //#output(String access$984(LinkbackExtractor, Object)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String access$984(LinkbackExtractor, Object)): return_value
    //#output(String access$984(LinkbackExtractor, Object)): x0.mTitle
    //#new obj(String access$984(LinkbackExtractor, Object)): java.lang.StringBuilder:toString(...)
    //#pre[1] (String access$984(LinkbackExtractor, Object)): init'ed(x0.mTitle)
    //#pre[2] (String access$984(LinkbackExtractor, Object)): x0 != null
    //#post(String access$984(LinkbackExtractor, Object)): java.lang.StringBuilder:toString(...)._tainted == x0.mTitle._tainted | x1._tainted
    //#post(String access$984(LinkbackExtractor, Object)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String access$984(LinkbackExtractor, Object)): return_value == &java.lang.StringBuilder:toString(...)
    //#post(String access$984(LinkbackExtractor, Object)): x0.mTitle == &java.lang.StringBuilder:toString(...)
    //#LinkbackExtractor.java:51: end of method: String org.apache.roller.weblogger.util.LinkbackExtractor.access$984(LinkbackExtractor, Object)
{
    private static Log mLogger        = LogFactory.getFactory().getInstance(
    //#LinkbackExtractor.java:53: method: org.apache.roller.weblogger.util.LinkbackExtractor.org.apache.roller.weblogger.util.LinkbackExtractor__static_init
    //#LinkbackExtractor.java:53: Warning: method not available
    //#    -- call on LogFactory org.apache.commons.logging.LogFactory:getFactory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: org.apache.roller.weblogger.util.LinkbackExtractor__static_init
    //#    unanalyzed callee: LogFactory org.apache.commons.logging.LogFactory:getFactory()
    //#LinkbackExtractor.java:53: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getInstance(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: org.apache.roller.weblogger.util.LinkbackExtractor__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getInstance(Class)
    //#output(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): __Descendant_Table[org/apache/roller/weblogger/util/LinkbackExtractor]
    //#output(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): __Dispatch_Table.extractByParsingHtml(Ljava/lang/String;Ljava/lang/String;)V
    //#output(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): __Dispatch_Table.extractByParsingRss(Ljava/lang/String;Ljava/lang/String;)V
    //#output(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): __Dispatch_Table.getExcerpt()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): __Dispatch_Table.getPermalink()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): __Dispatch_Table.getTitle()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): __Dispatch_Table.setPermalink(Ljava/lang/String;)V
    //#output(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): mLogger
    //#presumption(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): org.apache.commons.logging.LogFactory:getFactory(...)@53 != null
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): __Descendant_Table[org/apache/roller/weblogger/util/LinkbackExtractor] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): __Dispatch_Table.extractByParsingHtml(Ljava/lang/String;Ljava/lang/String;)V == &extractByParsingHtml
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): __Dispatch_Table.extractByParsingRss(Ljava/lang/String;Ljava/lang/String;)V == &extractByParsingRss
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): __Dispatch_Table.getExcerpt()Ljava/lang/String; == &getExcerpt
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): __Dispatch_Table.getPermalink()Ljava/lang/String; == &getPermalink
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): __Dispatch_Table.getTitle()Ljava/lang/String; == &getTitle
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): __Dispatch_Table.setPermalink(Ljava/lang/String;)V == &setPermalink
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor__static_init): init'ed(mLogger)
    //#LinkbackExtractor.java:53: end of method: org.apache.roller.weblogger.util.LinkbackExtractor.org.apache.roller.weblogger.util.LinkbackExtractor__static_init
                                              LinkbackExtractor.class);
    private boolean    mFound         = false;
    private String     mTitle         = "";
    private String     mRssLink       = null;
    private String     mExcerpt       = null;
    private String     mPermalink     = null;
    private int        mStart         = 0;
    private int        mEnd           = 0;
    private int        mMaxExcerpt    = 500;                           // characters
    private String     mRequestURL    = null;
    private String     mRequestURLWWW = null;
    private String     mRefererURL;

    //------------------------------------------------------------------------
    /**
     * Extract referring page title, excerpt, and permalink.
     * 
     * @param refererUrl
     * @param requestUrl
     */
    public LinkbackExtractor(String refererURL, String requestURL)
            throws MalformedURLException, IOException
    {
    //#LinkbackExtractor.java:76: method: void org.apache.roller.weblogger.util.LinkbackExtractor.org.apache.roller.weblogger.util.LinkbackExtractor(String, String)
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): " "._tainted
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): " articles, found linkback="._tainted
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): ""._tainted
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): "..."._tainted
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): ": "._tainted
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): "Feed parsed, title: "._tainted
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): "Parsed "._tainted
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): "http:.."._tainted
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): "http:..www."._tainted
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): mLogger
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$1.__Descendant_Table[org/apache/roller/weblogger/util/LinkbackExtractor$1]
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$1.__Dispatch_Table.getParser()Ljavax/swing/text/html/HTMLEditorKit$Parser;
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.BLOCKQUOTE
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.BR
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.DIV
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H1
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H2
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H3
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H4
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H5
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H6
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.HR
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.LI
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.P
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.PRE
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.SPAN
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.TD
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): refererURL
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): requestURL
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): requestURL._tainted
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): java.lang.String:substring(...)._tainted
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): java.lang.String:toString(...)._tainted
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): java.lang.StringBuilder:toString(...)._tainted
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mEnd
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mExcerpt
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mFound
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mMaxExcerpt
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mPermalink
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mRefererURL
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mRequestURL
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mRequestURLWWW
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mRssLink
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mStart
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mTitle
    //#new obj(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): java.lang.String:substring(...)
    //#new obj(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): java.lang.String:toString(...)
    //#new obj(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): java.lang.StringBuilder:toString(...)
    //#pre[1] (void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): (soft) mLogger != null
    //#pre[3] (void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): (soft) requestURL != null
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): init'ed(java.lang.String:substring(...)._tainted)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): init'ed(java.lang.String:toString(...)._tainted)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mEnd == 0
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mStart == 0
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): init'ed(this.mExcerpt)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): init'ed(this.mFound)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mMaxExcerpt == 500
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): init'ed(this.mPermalink)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mRefererURL == One-of{refererURL, undefined}
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mRequestURL == One-of{&java.lang.StringBuilder:toString(...), requestURL, null}
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): init'ed(this.mRequestURL)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mRequestURLWWW == One-of{requestURL, &java.lang.StringBuilder:toString(...), null}
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): init'ed(this.mRequestURLWWW)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mRssLink == null
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): init'ed(this.mTitle)
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:com.sun.syndication.io.SyndFeedInput
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.net.URL
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.net.URL:openStream
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.io.InputStreamReader
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:com.sun.syndication.io.SyndFeedInput:build
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:com.sun.syndication.feed.synd.SyndFeed:getEntries
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:com.sun.syndication.feed.synd.SyndFeed:getTitle
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:com.sun.syndication.feed.synd.SyndEntry:getDescription
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:com.sun.syndication.feed.synd.SyndContent:getValue
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:com.sun.syndication.feed.synd.SyndEntry:getLink
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.lang.String:toString
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:com.sun.syndication.feed.synd.SyndEntry:getTitle
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit:getParser
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.io.BufferedReader
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.io.BufferedReader:readLine
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.io.BufferedReader:close
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.io.StringReader
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit$ParserCallback
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.util.Arrays:asList
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit$Parser:parse
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#test_vector(void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)): this.mRssLink: Addr_Set{null}, Inverse{null}
        try
        {
            extractByParsingHtml(refererURL, requestURL);
            if (mRssLink != null)
            {
                extractByParsingRss(mRssLink, requestURL);
            }
        }
        catch (Exception e)
        {
            if (mLogger.isDebugEnabled())
    //#LinkbackExtractor.java:87: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
            {
                mLogger.debug("Extracting linkback", e);
    //#LinkbackExtractor.java:89: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object, Throwable)
            }
        }
    }
    //#LinkbackExtractor.java:92: end of method: void org.apache.roller.weblogger.util.LinkbackExtractor.org.apache.roller.weblogger.util.LinkbackExtractor(String, String)

    //------------------------------------------------------------------------
    private void extractByParsingHtml(String refererURL, String requestURL)
            throws MalformedURLException, IOException
    {
        URL url = new URL(refererURL);
    //#LinkbackExtractor.java:98: method: void org.apache.roller.weblogger.util.LinkbackExtractor.extractByParsingHtml(String, String)
    //#input(void extractByParsingHtml(String, String)): " "._tainted
    //#input(void extractByParsingHtml(String, String)): ""._tainted
    //#input(void extractByParsingHtml(String, String)): "..."._tainted
    //#input(void extractByParsingHtml(String, String)): "http:.."._tainted
    //#input(void extractByParsingHtml(String, String)): "http:..www."._tainted
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$1.__Descendant_Table[org/apache/roller/weblogger/util/LinkbackExtractor$1]
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$1.__Dispatch_Table.getParser()Ljavax/swing/text/html/HTMLEditorKit$Parser;
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.BLOCKQUOTE
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.BR
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.DIV
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H1
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H2
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H3
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H4
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H5
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.H6
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.HR
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.LI
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.P
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.PRE
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.SPAN
    //#input(void extractByParsingHtml(String, String)): org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback.javax.swing.text.html.HTML$Tag.TD
    //#input(void extractByParsingHtml(String, String)): refererURL
    //#input(void extractByParsingHtml(String, String)): requestURL
    //#input(void extractByParsingHtml(String, String)): requestURL._tainted
    //#input(void extractByParsingHtml(String, String)): this
    //#input(void extractByParsingHtml(String, String)): this.mEnd
    //#input(void extractByParsingHtml(String, String)): this.mExcerpt._tainted
    //#input(void extractByParsingHtml(String, String)): this.mMaxExcerpt
    //#input(void extractByParsingHtml(String, String)): this.mRequestURL._tainted
    //#input(void extractByParsingHtml(String, String)): this.mRequestURLWWW._tainted
    //#input(void extractByParsingHtml(String, String)): this.mStart
    //#input(void extractByParsingHtml(String, String)): this.mTitle
    //#input(void extractByParsingHtml(String, String)): this.mTitle._tainted
    //#output(void extractByParsingHtml(String, String)): java.lang.String:substring(...)._tainted
    //#output(void extractByParsingHtml(String, String)): java.lang.StringBuilder:toString(...)._tainted
    //#output(void extractByParsingHtml(String, String)): this.mExcerpt
    //#output(void extractByParsingHtml(String, String)): this.mRefererURL
    //#output(void extractByParsingHtml(String, String)): this.mRequestURL
    //#output(void extractByParsingHtml(String, String)): this.mRequestURLWWW
    //#output(void extractByParsingHtml(String, String)): this.mTitle
    //#new obj(void extractByParsingHtml(String, String)): java.lang.String:substring(...)
    //#new obj(void extractByParsingHtml(String, String)): java.lang.StringBuilder:toString(...)
    //#pre[2] (void extractByParsingHtml(String, String)): this.mTitle != null
    //#pre[4] (void extractByParsingHtml(String, String)): requestURL != null
    //#pre[12] (void extractByParsingHtml(String, String)): init'ed(this.mStart)
    //#pre[7] (void extractByParsingHtml(String, String)): (soft) init'ed(this.mEnd)
    //#pre[10] (void extractByParsingHtml(String, String)): (soft) init'ed(this.mMaxExcerpt)
    //#presumption(void extractByParsingHtml(String, String)): javax.swing.text.html.HTMLEditorKit:getParser(...)@118 != null
    //#post(void extractByParsingHtml(String, String)): init'ed(java.lang.String:substring(...)._tainted)
    //#post(void extractByParsingHtml(String, String)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(void extractByParsingHtml(String, String)): possibly_updated(this.mExcerpt)
    //#post(void extractByParsingHtml(String, String)): this.mRefererURL == refererURL
    //#post(void extractByParsingHtml(String, String)): init'ed(this.mRefererURL)
    //#post(void extractByParsingHtml(String, String)): this.mRequestURL == One-of{&java.lang.StringBuilder:toString(...), requestURL}
    //#post(void extractByParsingHtml(String, String)): this.mRequestURL != null
    //#post(void extractByParsingHtml(String, String)): this.mRequestURLWWW == One-of{requestURL, &java.lang.StringBuilder:toString(...)}
    //#post(void extractByParsingHtml(String, String)): this.mRequestURLWWW != null
    //#post(void extractByParsingHtml(String, String)): this.mTitle == One-of{old this.mTitle, &java.lang.String:substring(...)}
    //#post(void extractByParsingHtml(String, String)): this.mTitle != null
    //#unanalyzed(void extractByParsingHtml(String, String)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void extractByParsingHtml(String, String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void extractByParsingHtml(String, String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void extractByParsingHtml(String, String)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void extractByParsingHtml(String, String)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void extractByParsingHtml(String, String)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void extractByParsingHtml(String, String)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void extractByParsingHtml(String, String)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit
    //#unanalyzed(void extractByParsingHtml(String, String)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit:getParser
    //#unanalyzed(void extractByParsingHtml(String, String)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit$ParserCallback
    //#unanalyzed(void extractByParsingHtml(String, String)): Effects-of-calling:java.util.Arrays:asList
    //#test_vector(void extractByParsingHtml(String, String)): this.mEnd: {0}, {-2_147_483_647..-1, 1..4_294_967_295}
    //#test_vector(void extractByParsingHtml(String, String)): this.mEnd - this.mStart: {-6_442_450_943..0}, {1..6_442_450_943}
    //#test_vector(void extractByParsingHtml(String, String)): this.mStart: {0}, {-2_147_483_648..-1, 1..4_294_967_294}
    //#test_vector(void extractByParsingHtml(String, String)): java.io.BufferedReader:readLine(...)@129: Inverse{null}, Addr_Set{null}
    //#test_vector(void extractByParsingHtml(String, String)): java.lang.String:length(...)@155: {0,1}, {2..4_294_967_295}
    //#test_vector(void extractByParsingHtml(String, String)): java.lang.String:startsWith(...)@103: {0}, {1}
    //#test_vector(void extractByParsingHtml(String, String)): java.lang.String:startsWith(...)@155: {0}, {1}
        InputStream is = url.openStream();

        mRefererURL = refererURL;

        if (requestURL.startsWith("http://www."))
        {
            mRequestURLWWW = requestURL;
            mRequestURL = "http://" + mRequestURLWWW.substring(11);
        }
        else
        {
            mRequestURL = requestURL;
            mRequestURLWWW = "http://www." + mRequestURL.substring(7);
        }

        // Trick gets Swing's HTML parser
        Parser parser = (new HTMLEditorKit() {
    //#LinkbackExtractor.java:115: method: void org.apache.roller.weblogger.util.LinkbackExtractor$1.org.apache.roller.weblogger.util.LinkbackExtractor$1(LinkbackExtractor)
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$1(LinkbackExtractor)): Param_1
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$1(LinkbackExtractor)): this
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$1(LinkbackExtractor)): this.this$0
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$1(LinkbackExtractor)): this.this$0 == Param_1
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$1(LinkbackExtractor)): init'ed(this.this$0)
    //#LinkbackExtractor.java:115: end of method: void org.apache.roller.weblogger.util.LinkbackExtractor$1.org.apache.roller.weblogger.util.LinkbackExtractor$1(LinkbackExtractor)
            public Parser getParser()
            {
                return super.getParser();
    //#LinkbackExtractor.java:118: method: HTMLEditorKit$Parser org.apache.roller.weblogger.util.LinkbackExtractor$1.getParser()
    //#input(HTMLEditorKit$Parser getParser()): this
    //#output(HTMLEditorKit$Parser getParser()): return_value
    //#post(HTMLEditorKit$Parser getParser()): init'ed(return_value)
    //#LinkbackExtractor.java:118: end of method: HTMLEditorKit$Parser org.apache.roller.weblogger.util.LinkbackExtractor$1.getParser()
            }
        }).getParser();

        // Read HTML file into string
        StringBuffer sb = new StringBuffer();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        try
        {
            String line = null;
    //#LinkbackExtractor.java:128: Warning: unused assignment
    //#    unused assignment into line
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingHtml(String, String)
    //#    Attribs:  Uncertain
            while ((line = br.readLine()) != null)
            {
                sb.append(line);
            }
        }
        finally
        {
            br.close();
        }

        // Parse HTML string to find title and start and end position
        // of the referring excerpt.
        StringReader sr = new StringReader(sb.toString());
        parser.parse(sr, new LinkbackCallback(), true);

        if (mStart != 0 && mEnd != 0 && mEnd > mStart)
        {
            mExcerpt = sb.toString().substring(mStart, mEnd);
            mExcerpt = Utilities.removeHTML(mExcerpt);

            if (mExcerpt.length() > mMaxExcerpt)
            {
                mExcerpt = mExcerpt.substring(0, mMaxExcerpt) + "...";
            }
        }

        if (mTitle.startsWith(">") && mTitle.length() > 1)
        {
            mTitle = mTitle.substring(1);
        }
    }
    //#LinkbackExtractor.java:159: end of method: void org.apache.roller.weblogger.util.LinkbackExtractor.extractByParsingHtml(String, String)

    //------------------------------------------------------------------------
    private void extractByParsingRss(String rssLink, String requestURL)
            throws IllegalArgumentException, MalformedURLException, FeedException, IOException
    {
        SyndFeedInput feedInput = new SyndFeedInput();       
    //#LinkbackExtractor.java:165: method: void org.apache.roller.weblogger.util.LinkbackExtractor.extractByParsingRss(String, String)
    //#LinkbackExtractor.java:165: Warning: method not available
    //#    -- call on void com.sun.syndication.io.SyndFeedInput()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: void com.sun.syndication.io.SyndFeedInput()
    //#input(void extractByParsingRss(String, String)): " "._tainted
    //#input(void extractByParsingRss(String, String)): " articles, found linkback="._tainted
    //#input(void extractByParsingRss(String, String)): ""._tainted
    //#input(void extractByParsingRss(String, String)): "..."._tainted
    //#input(void extractByParsingRss(String, String)): ": "._tainted
    //#input(void extractByParsingRss(String, String)): "Feed parsed, title: "._tainted
    //#input(void extractByParsingRss(String, String)): "Parsed "._tainted
    //#input(void extractByParsingRss(String, String)): mLogger
    //#input(void extractByParsingRss(String, String)): requestURL
    //#input(void extractByParsingRss(String, String)): rssLink
    //#input(void extractByParsingRss(String, String)): this
    //#input(void extractByParsingRss(String, String)): this.mExcerpt._tainted
    //#input(void extractByParsingRss(String, String)): this.mFound
    //#input(void extractByParsingRss(String, String)): this.mMaxExcerpt
    //#output(void extractByParsingRss(String, String)): java.lang.String:toString(...)._tainted
    //#output(void extractByParsingRss(String, String)): java.lang.StringBuilder:toString(...)._tainted
    //#output(void extractByParsingRss(String, String)): this.mExcerpt
    //#output(void extractByParsingRss(String, String)): this.mFound
    //#output(void extractByParsingRss(String, String)): this.mPermalink
    //#output(void extractByParsingRss(String, String)): this.mTitle
    //#new obj(void extractByParsingRss(String, String)): java.lang.String:toString(...)
    //#new obj(void extractByParsingRss(String, String)): java.lang.StringBuilder:toString(...)
    //#pre[1] (void extractByParsingRss(String, String)): mLogger != null
    //#pre[3] (void extractByParsingRss(String, String)): (soft) init'ed(this.mFound)
    //#pre[10] (void extractByParsingRss(String, String)): (soft) init'ed(this.mMaxExcerpt)
    //#presumption(void extractByParsingRss(String, String)): com.sun.syndication.feed.synd.SyndContent:getValue(...)@182 != null
    //#presumption(void extractByParsingRss(String, String)): com.sun.syndication.feed.synd.SyndEntry:getDescription(...)@182 != null
    //#presumption(void extractByParsingRss(String, String)): com.sun.syndication.feed.synd.SyndEntry:getDescription(...)@194 != null
    //#presumption(void extractByParsingRss(String, String)): com.sun.syndication.feed.synd.SyndEntry:getLink(...)@185 != null
    //#presumption(void extractByParsingRss(String, String)): com.sun.syndication.feed.synd.SyndFeed:getEntries(...)@168 != null
    //#presumption(void extractByParsingRss(String, String)): com.sun.syndication.io.SyndFeedInput:build(...)@166 != null
    //#presumption(void extractByParsingRss(String, String)): java.util.Iterator:next(...)@181 != null
    //#post(void extractByParsingRss(String, String)): init'ed(java.lang.String:toString(...)._tainted)
    //#post(void extractByParsingRss(String, String)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(void extractByParsingRss(String, String)): possibly_updated(this.mExcerpt)
    //#post(void extractByParsingRss(String, String)): (soft) init'ed(this.mFound)
    //#post(void extractByParsingRss(String, String)): this.mPermalink == One-of{old this.mPermalink, &java.lang.String:toString(...)}
    //#post(void extractByParsingRss(String, String)): possibly_updated(this.mTitle)
    //#unanalyzed(void extractByParsingRss(String, String)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void extractByParsingRss(String, String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void extractByParsingRss(String, String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void extractByParsingRss(String, String)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void extractByParsingRss(String, String)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void extractByParsingRss(String, String)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void extractByParsingRss(String, String)): Effects-of-calling:java.lang.String:trim
    //#test_vector(void extractByParsingRss(String, String)): com.sun.syndication.feed.synd.SyndFeed:getTitle(...)@169: Addr_Set{null}, Inverse{null}
    //#test_vector(void extractByParsingRss(String, String)): java.lang.String:indexOf(...)@182: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(void extractByParsingRss(String, String)): java.lang.String:length(...)@186: {0}, {1..4_294_967_295}
    //#test_vector(void extractByParsingRss(String, String)): java.util.Iterator:hasNext(...)@178: {0}, {1}
    //#test_vector(void extractByParsingRss(String, String)): org.apache.commons.logging.Log:isDebugEnabled(...)@173: {0}, {1}
    //#test_vector(void extractByParsingRss(String, String)): org.apache.commons.logging.Log:isDebugEnabled(...)@204: {0}, {1}
        SyndFeed feed = feedInput.build(
    //#LinkbackExtractor.java:166: Warning: method not available
    //#    -- call on SyndFeed com.sun.syndication.io.SyndFeedInput:build(Reader)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: SyndFeed com.sun.syndication.io.SyndFeedInput:build(Reader)
            new InputStreamReader(new URL(rssLink).openStream()));
        Iterator itemIter = feed.getEntries().iterator();
    //#LinkbackExtractor.java:168: Warning: method not available
    //#    -- call on List com.sun.syndication.feed.synd.SyndFeed:getEntries()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: List com.sun.syndication.feed.synd.SyndFeed:getEntries()
        String feedTitle = feed.getTitle();
    //#LinkbackExtractor.java:169: Warning: method not available
    //#    -- call on String com.sun.syndication.feed.synd.SyndFeed:getTitle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: String com.sun.syndication.feed.synd.SyndFeed:getTitle()

        int count = 0;

        if (mLogger.isDebugEnabled())
    //#LinkbackExtractor.java:173: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
        {
            mLogger.debug("Feed parsed, title: " + feedTitle);
    //#LinkbackExtractor.java:175: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        }

        while (itemIter.hasNext())
        {
            count++;
    //#LinkbackExtractor.java:180: ?overflow
    //#    count in -2_147_483_649..4_294_967_294
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    basic block: bb_4
    //#    assertion: count in -2_147_483_649..4_294_967_294
    //#    VN: count + 1
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
            SyndEntry item = (SyndEntry) itemIter.next();
            if (item.getDescription().getValue().indexOf(requestURL) != -1)
    //#LinkbackExtractor.java:182: Warning: method not available
    //#    -- call on SyndContent com.sun.syndication.feed.synd.SyndEntry:getDescription()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: SyndContent com.sun.syndication.feed.synd.SyndEntry:getDescription()
    //#LinkbackExtractor.java:182: Warning: method not available
    //#    -- call on String com.sun.syndication.feed.synd.SyndContent:getValue()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: String com.sun.syndication.feed.synd.SyndContent:getValue()
            {
                mFound = true;
                mPermalink = item.getLink().toString();
    //#LinkbackExtractor.java:185: Warning: method not available
    //#    -- call on String com.sun.syndication.feed.synd.SyndEntry:getLink()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: String com.sun.syndication.feed.synd.SyndEntry:getLink()
                if (feedTitle != null && feedTitle.trim().length() > 0)
                {
                    mTitle = feedTitle + ": " + item.getTitle();
    //#LinkbackExtractor.java:188: Warning: method not available
    //#    -- call on String com.sun.syndication.feed.synd.SyndEntry:getTitle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: String com.sun.syndication.feed.synd.SyndEntry:getTitle()
                }
                else
                {
                    mTitle = item.getTitle();
    //#LinkbackExtractor.java:192: Warning: method not available
    //#    -- call on String com.sun.syndication.feed.synd.SyndEntry:getTitle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: String com.sun.syndication.feed.synd.SyndEntry:getTitle()
                }
                mExcerpt = item.getDescription().getValue();
    //#LinkbackExtractor.java:194: Warning: method not available
    //#    -- call on SyndContent com.sun.syndication.feed.synd.SyndEntry:getDescription()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: SyndContent com.sun.syndication.feed.synd.SyndEntry:getDescription()
    //#LinkbackExtractor.java:194: Warning: method not available
    //#    -- call on String com.sun.syndication.feed.synd.SyndContent:getValue()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: String com.sun.syndication.feed.synd.SyndContent:getValue()
                mExcerpt = Utilities.removeHTML(mExcerpt);
                if (mExcerpt.length() > mMaxExcerpt)
                {
                    mExcerpt = mExcerpt.substring(0, mMaxExcerpt) + "...";
                }
                break;
            }
        }

        if (mLogger.isDebugEnabled())
    //#LinkbackExtractor.java:204: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
        {
            mLogger.debug("Parsed " + count + " articles, found linkback="
    //#LinkbackExtractor.java:206: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor
    //#    method: void extractByParsingRss(String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    + mFound);
        }
    }
    //#LinkbackExtractor.java:209: end of method: void org.apache.roller.weblogger.util.LinkbackExtractor.extractByParsingRss(String, String)

    //------------------------------------------------------------------------
    /**
     * Returns the excerpt.
     * 
     * @return String
     */
    public String getExcerpt()
    {
        return mExcerpt;
    //#LinkbackExtractor.java:219: method: String org.apache.roller.weblogger.util.LinkbackExtractor.getExcerpt()
    //#input(String getExcerpt()): this
    //#input(String getExcerpt()): this.mExcerpt
    //#output(String getExcerpt()): return_value
    //#pre[2] (String getExcerpt()): init'ed(this.mExcerpt)
    //#post(String getExcerpt()): return_value == this.mExcerpt
    //#post(String getExcerpt()): init'ed(return_value)
    //#LinkbackExtractor.java:219: end of method: String org.apache.roller.weblogger.util.LinkbackExtractor.getExcerpt()
    }

    //------------------------------------------------------------------------
    /**
     * Returns the title.
     * 
     * @return String
     */
    public String getTitle()
    {
        return mTitle;
    //#LinkbackExtractor.java:230: method: String org.apache.roller.weblogger.util.LinkbackExtractor.getTitle()
    //#input(String getTitle()): this
    //#input(String getTitle()): this.mTitle
    //#output(String getTitle()): return_value
    //#pre[2] (String getTitle()): init'ed(this.mTitle)
    //#post(String getTitle()): return_value == this.mTitle
    //#post(String getTitle()): init'ed(return_value)
    //#LinkbackExtractor.java:230: end of method: String org.apache.roller.weblogger.util.LinkbackExtractor.getTitle()
    }

    //------------------------------------------------------------------------
    /**
     * Returns the permalink.
     * 
     * @return String
     */
    public String getPermalink()
    {
        return mPermalink;
    //#LinkbackExtractor.java:241: method: String org.apache.roller.weblogger.util.LinkbackExtractor.getPermalink()
    //#input(String getPermalink()): this
    //#input(String getPermalink()): this.mPermalink
    //#output(String getPermalink()): return_value
    //#pre[2] (String getPermalink()): init'ed(this.mPermalink)
    //#post(String getPermalink()): return_value == this.mPermalink
    //#post(String getPermalink()): init'ed(return_value)
    //#LinkbackExtractor.java:241: end of method: String org.apache.roller.weblogger.util.LinkbackExtractor.getPermalink()
    }

    //------------------------------------------------------------------------
    /**
     * Sets the permalink.
     * 
     * @param permalink
     *            The permalink to set
     */
    public void setPermalink(String permalink)
    {
        mPermalink = permalink;
    //#LinkbackExtractor.java:253: method: void org.apache.roller.weblogger.util.LinkbackExtractor.setPermalink(String)
    //#input(void setPermalink(String)): permalink
    //#input(void setPermalink(String)): this
    //#output(void setPermalink(String)): this.mPermalink
    //#post(void setPermalink(String)): this.mPermalink == permalink
    //#post(void setPermalink(String)): init'ed(this.mPermalink)
    }
    //#LinkbackExtractor.java:254: end of method: void org.apache.roller.weblogger.util.LinkbackExtractor.setPermalink(String)

    /////////////////////////////////////////////////////////////////////////

    /**
     * Parser callback that finds title and excerpt. As we walk through the HTML
     * tags, we keep track of the most recently encountered divider tag in the
     * mStart field. Once we find the referring permalink, we set the mFound
     * flag. After that, we look for the next divider tag and save it's position
     * in the mEnd field.
     */
    private final class LinkbackCallback extends ParserCallback
    //#LinkbackExtractor.java:265: method: void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback.org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): Param_1
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.BLOCKQUOTE
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.BR
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.DIV
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.H1
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.H2
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.H3
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.H4
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.H5
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.H6
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.HR
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.LI
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.P
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.PRE
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.SPAN
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): javax.swing.text.html.HTML$Tag.TD
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1) num objects
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags.length
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[0]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[10]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[11]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[12]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[13]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[14]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[1]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[2]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[3]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[4]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[5]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[6]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[7]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[8]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[9]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mCurrentTag
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mList
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.this$0
    //#new obj(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.BLOCKQUOTE)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.BR)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.DIV)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.H1)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.H2)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.H3)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.H4)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.H5)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.H6)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.HR)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.LI)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.P)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.PRE)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.SPAN)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(javax.swing.text.html.HTML$Tag.TD)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mCurrentTag == null
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags == &new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(this.mList)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.this$0 == Param_1
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): init'ed(this.this$0)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1) num objects == 1
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags.length == 15
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[0] == javax.swing.text.html.HTML$Tag.TD
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[0])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[10] == javax.swing.text.html.HTML$Tag.H2
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[10])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[11] == javax.swing.text.html.HTML$Tag.H3
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[11])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[12] == javax.swing.text.html.HTML$Tag.H4
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[12])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[13] == javax.swing.text.html.HTML$Tag.H5
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[13])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[14] == javax.swing.text.html.HTML$Tag.H6
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[14])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[1] == javax.swing.text.html.HTML$Tag.DIV
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[1])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[2] == javax.swing.text.html.HTML$Tag.SPAN
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[2])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[3] == javax.swing.text.html.HTML$Tag.BLOCKQUOTE
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[3])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[4] == javax.swing.text.html.HTML$Tag.P
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[4])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[5] == javax.swing.text.html.HTML$Tag.LI
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[5])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[6] == javax.swing.text.html.HTML$Tag.BR
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[6])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[7] == javax.swing.text.html.HTML$Tag.HR
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[7])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[8] == javax.swing.text.html.HTML$Tag.PRE
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[8])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): this.mDivTags[9] == javax.swing.text.html.HTML$Tag.H1
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)): (soft) init'ed(this.mDivTags[9])
    //#LinkbackExtractor.java:265: method: void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback.org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.BLOCKQUOTE
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.BR
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.DIV
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.H1
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.H2
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.H3
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.H4
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.H5
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.H6
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.HR
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.LI
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.P
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.PRE
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.SPAN
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): javax.swing.text.html.HTML$Tag.TD
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): this
    //#input(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): x0
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1) num objects
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1).length
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[0]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[10]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[11]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[12]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[13]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[14]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[1]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[2]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[3]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[4]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[5]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[6]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[7]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[8]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[9]
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): this.mCurrentTag
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): this.mDivTags
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): this.mList
    //#output(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): this.this$0
    //#new obj(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.BLOCKQUOTE)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.BR)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.DIV)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.H1)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.H2)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.H3)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.H4)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.H5)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.H6)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.HR)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.LI)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.P)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.PRE)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.SPAN)
    //#presumption(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(javax.swing.text.html.HTML$Tag.TD)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): this.mCurrentTag == null
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): this.mDivTags == &new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(this.mList)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): this.this$0 == x0
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(this.this$0)
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1) num objects == 1
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1).length == 15
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[0] == javax.swing.text.html.HTML$Tag.TD
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[0])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[10] == javax.swing.text.html.HTML$Tag.H2
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[10])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[11] == javax.swing.text.html.HTML$Tag.H3
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[11])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[12] == javax.swing.text.html.HTML$Tag.H4
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[12])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[13] == javax.swing.text.html.HTML$Tag.H5
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[13])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[14] == javax.swing.text.html.HTML$Tag.H6
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[14])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[1] == javax.swing.text.html.HTML$Tag.DIV
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[1])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[2] == javax.swing.text.html.HTML$Tag.SPAN
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[2])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[3] == javax.swing.text.html.HTML$Tag.BLOCKQUOTE
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[3])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[4] == javax.swing.text.html.HTML$Tag.P
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[4])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[5] == javax.swing.text.html.HTML$Tag.LI
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[5])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[6] == javax.swing.text.html.HTML$Tag.BR
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[6])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[7] == javax.swing.text.html.HTML$Tag.HR
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[7])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[8] == javax.swing.text.html.HTML$Tag.PRE
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[8])
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[9] == javax.swing.text.html.HTML$Tag.H1
    //#post(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): init'ed(new HTML$Tag[](LinkbackExtractor$LinkbackCallback#1)[9])
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): Effects-of-calling:javax.swing.text.html.HTMLEditorKit$ParserCallback
    //#unanalyzed(void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)): Effects-of-calling:java.util.Arrays:asList
    //#LinkbackExtractor.java:265: end of method: void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback.org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor, LinkbackExtractor$1)
    {
        // Dividers
        private Tag[] mDivTags    = { Tag.TD, Tag.DIV, Tag.SPAN,
                                          Tag.BLOCKQUOTE, Tag.P, Tag.LI,
                                          Tag.BR, Tag.HR, Tag.PRE, Tag.H1,
                                          Tag.H2, Tag.H3, Tag.H4, Tag.H5,
                                          Tag.H6 };

        private List  mList       = Arrays.asList(mDivTags);

        private Tag   mCurrentTag = null;
    //#LinkbackExtractor.java:276: end of method: void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback.org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback(LinkbackExtractor)

        /**
         * Look for divider tags and for the permalink.
         * 
         * @param tag
         *            HTML tag
         * @param atts
         *            Attributes of that tag
         * @param pos
         *            Tag's position in file
         */
        public void handleStartTag(Tag tag, MutableAttributeSet atts, int pos)
        {
            if (mList.contains(tag) && !mFound)
    //#LinkbackExtractor.java:290: method: void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback.handleStartTag(HTML$Tag, MutableAttributeSet, int)
    //#input(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): atts
    //#input(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): javax.swing.text.html.HTML$Attribute.HREF
    //#input(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): javax.swing.text.html.HTML$Tag.A
    //#input(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): pos
    //#input(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): tag
    //#input(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this
    //#input(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.mList
    //#input(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.this$0
    //#input(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.this$0.mEnd
    //#input(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.this$0.mFound
    //#input(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.this$0.mRequestURL
    //#input(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.this$0.mRequestURLWWW
    //#output(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.mCurrentTag
    //#output(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.this$0.mEnd
    //#output(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.this$0.mFound
    //#output(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.this$0.mStart
    //#pre[9] (void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.mList != null
    //#pre[1] (void handleStartTag(HTML$Tag, MutableAttributeSet, int)): (soft) atts != null
    //#pre[3] (void handleStartTag(HTML$Tag, MutableAttributeSet, int)): (soft) init'ed(this.mEnd)
    //#pre[4] (void handleStartTag(HTML$Tag, MutableAttributeSet, int)): (soft) init'ed(this.mFound)
    //#pre[7] (void handleStartTag(HTML$Tag, MutableAttributeSet, int)): (soft) tag != null
    //#pre[10] (void handleStartTag(HTML$Tag, MutableAttributeSet, int)): (soft) this.this$0 != null
    //#pre[11] (void handleStartTag(HTML$Tag, MutableAttributeSet, int)): (soft) init'ed(this.mRequestURL)
    //#pre[12] (void handleStartTag(HTML$Tag, MutableAttributeSet, int)): (soft) init'ed(this.mRequestURLWWW)
    //#presumption(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): init'ed(javax.swing.text.html.HTML$Attribute.HREF)
    //#presumption(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): init'ed(javax.swing.text.html.HTML$Tag.A)
    //#post(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.mCurrentTag == One-of{old this.mCurrentTag, tag}
    //#post(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.mEnd == One-of{old this.mEnd, pos}
    //#post(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): (soft) init'ed(this.mEnd)
    //#post(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): (soft) init'ed(this.mFound)
    //#post(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.mStart == One-of{old this.mStart, pos}
    //#test_vector(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.mEnd: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
    //#test_vector(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): this.mFound: {1}, {0}
    //#test_vector(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): java.lang.Object:equals(...)@298: {0}, {1}
    //#test_vector(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): java.lang.String:equals(...)@308: {1}, {0}
    //#test_vector(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): java.lang.String:equals(...)@308: {0}, {1}
    //#test_vector(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): java.lang.String:lastIndexOf(...)@303: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): java.util.List:contains(...)@290: {0}, {1}
    //#test_vector(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): java.util.List:contains(...)@294: {0}, {1}
    //#test_vector(void handleStartTag(HTML$Tag, MutableAttributeSet, int)): javax.swing.text.MutableAttributeSet:getAttribute(...)@300: Inverse{null}, Addr_Set{null}
            {
                mStart = pos;
            }
            else if (mList.contains(tag) && mFound && mEnd == 0)
            {
                mEnd = pos;
            }
            else if (tag.equals(Tag.A))
            {
                String href = (String) atts.getAttribute(HTML.Attribute.HREF);
                if (href == null)
                    return;
                int hashPos = href.lastIndexOf('#');
                if (hashPos != -1)
                {
                    href = href.substring(0, hashPos);
                }
                if (href != null
    //#LinkbackExtractor.java:308: Warning: test always goes same way
    //#    test predetermined because href != null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback
    //#    method: void handleStartTag(HTML$Tag, MutableAttributeSet, int)
    //#    from bb: bb_13
    //#    live edge: bb_13-->bb_14
    //#    tested vn: href == null
    //#    tested vn values: {0}
                        && (href.equals(mRequestURL) || href
                                .equals(mRequestURLWWW)))
                {
                    mFound = true;
                }
                else
                {
                    /*
                     * if (mLogger.isDebugEnabled()) { mLogger.debug("No match:
                     * "+href); }
                     */
                }
            }
            mCurrentTag = tag;
        }
    //#LinkbackExtractor.java:323: end of method: void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback.handleStartTag(HTML$Tag, MutableAttributeSet, int)

        /**
         * Needed to handle SPAN tag.
         */
        public void handleSimpleTag(Tag tag, MutableAttributeSet atts, int pos)
        {
            if (mList.contains(tag) && mFound && mEnd == 0)
    //#LinkbackExtractor.java:330: method: void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback.handleSimpleTag(HTML$Tag, MutableAttributeSet, int)
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): "."._tainted
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): ":"._tainted
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): ":.."._tainted
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): "Found RSS link "._tainted
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): "Qualified RSS link is "._tainted
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): atts
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): javax.swing.text.html.HTML$Attribute.HREF
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): javax.swing.text.html.HTML$Attribute.TITLE
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): javax.swing.text.html.HTML$Attribute.TYPE
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): javax.swing.text.html.HTML$Tag.LINK
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): org/apache/roller/weblogger/util/LinkbackExtractor.mLogger
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): pos
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): tag
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): this
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): this.mList
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): this.this$0
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): this.this$0.mEnd
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): this.this$0.mFound
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): this.this$0.mRefererURL
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): this.this$0.mRefererURL._tainted
    //#input(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): this.this$0.mRssLink._tainted
    //#output(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): java.lang.StringBuilder:toString(...)._tainted
    //#output(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): this.this$0.mEnd
    //#output(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): this.this$0.mRssLink
    //#new obj(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): java.lang.StringBuilder:toString(...)
    //#pre[8] (void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): this.mList != null
    //#pre[1] (void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): (soft) atts != null
    //#pre[2] (void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): (soft) init'ed(this.mEnd)
    //#pre[4] (void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): (soft) org/apache/roller/weblogger/util/LinkbackExtractor.mLogger != null
    //#pre[6] (void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): (soft) tag != null
    //#pre[9] (void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): (soft) this.this$0 != null
    //#pre[10] (void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): (soft) init'ed(this.mFound)
    //#pre[11] (void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): (soft) this.mRefererURL != null
    //#presumption(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): javax.swing.text.MutableAttributeSet:getAttribute(...)@343 != null
    //#presumption(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): init'ed(javax.swing.text.html.HTML$Attribute.HREF)
    //#presumption(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): init'ed(javax.swing.text.html.HTML$Attribute.TITLE)
    //#presumption(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): init'ed(javax.swing.text.html.HTML$Attribute.TYPE)
    //#presumption(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): init'ed(javax.swing.text.html.HTML$Tag.LINK)
    //#post(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): (soft) init'ed(this.mEnd)
    //#post(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): possibly_updated(this.mRssLink)
    //#test_vector(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): this.mEnd: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
    //#test_vector(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): this.mFound: {0}, {1}
    //#test_vector(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): java.lang.Object:equals(...)@334: {0}, {1}
    //#test_vector(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): java.lang.String:equals(...)@339: {0}, {1}
    //#test_vector(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): java.lang.String:lastIndexOf(...)@370: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): java.lang.String:length(...)@350: {0,1}, {2..4_294_967_295}
    //#test_vector(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): java.lang.String:startsWith(...)@350: {0}, {1}
    //#test_vector(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): java.lang.String:startsWith(...)@368: {1}, {0}
    //#test_vector(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): java.util.List:contains(...)@330: {0}, {1}
    //#test_vector(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): javax.swing.text.MutableAttributeSet:getAttribute(...)@337: Addr_Set{null}, Inverse{null}
    //#test_vector(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): javax.swing.text.MutableAttributeSet:getAttribute(...)@338: Addr_Set{null}, Inverse{null}
    //#test_vector(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): org.apache.commons.logging.Log:isDebugEnabled(...)@345: {0}, {1}
    //#test_vector(void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)): org.apache.commons.logging.Log:isDebugEnabled(...)@377: {0}, {1}
            {
                mEnd = pos;
            }
            else if (tag.equals(Tag.LINK))
            {
                // Look out for RSS autodiscovery link
                String title = (String) atts.getAttribute(HTML.Attribute.TITLE);
                String type = (String) atts.getAttribute(HTML.Attribute.TYPE);
                if (title != null && type != null
                        && type.equals("application/rss+xml")
                        && title.equals("RSS"))
                {
                    mRssLink = (String) atts.getAttribute(HTML.Attribute.HREF);

                    if (mLogger.isDebugEnabled())
    //#LinkbackExtractor.java:345: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback
    //#    method: void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
                    {
                        mLogger.debug("Found RSS link " + mRssLink);
    //#LinkbackExtractor.java:347: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback
    //#    method: void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    }

                    if (mRssLink.startsWith("/") && mRssLink.length() > 1)
                    {
                        try
                        {
                            URL url = new URL(mRefererURL);
                            mRssLink = url.getProtocol() + "://"
                                    + url.getHost() + ":" + url.getPort()
                                    + mRssLink;
                        }
                        catch (MalformedURLException e)
                        {
                            mRssLink = null;
                            if (mLogger.isDebugEnabled())
    //#LinkbackExtractor.java:362: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback
    //#    method: void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
                            {
                                mLogger.debug("Determining RSS URL", e);
    //#LinkbackExtractor.java:364: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback
    //#    method: void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object, Throwable)
                            }
                        }
                    }
                    else if (!mRssLink.startsWith("http"))
                    {
                        int slash = mRefererURL.lastIndexOf("/");
                        if (slash != -1)
                        {
                            mRssLink = mRefererURL.substring(0, slash) + "/"
                                    + mRssLink;
                        }
                    }
                    if (mLogger.isDebugEnabled())
    //#LinkbackExtractor.java:377: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback
    //#    method: void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
                    {
                        mLogger.debug("Qualified RSS link is " + mRssLink);
    //#LinkbackExtractor.java:379: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback
    //#    method: void handleSimpleTag(HTML$Tag, MutableAttributeSet, int)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    }
                }
            }
        }
    //#LinkbackExtractor.java:383: end of method: void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback.handleSimpleTag(HTML$Tag, MutableAttributeSet, int)

        /**
         * Stop at the very first divider tag after the permalink.
         * 
         * @param tag
         *            End tag
         * @param pos
         *            Position in HTML file
         */
        public void handleEndTag(Tag tag, int pos)
        {
            if (mList.contains(tag) && mFound && mEnd == 0)
    //#LinkbackExtractor.java:395: method: void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback.handleEndTag(HTML$Tag, int)
    //#input(void handleEndTag(HTML$Tag, int)): pos
    //#input(void handleEndTag(HTML$Tag, int)): tag
    //#input(void handleEndTag(HTML$Tag, int)): this
    //#input(void handleEndTag(HTML$Tag, int)): this.mList
    //#input(void handleEndTag(HTML$Tag, int)): this.this$0
    //#input(void handleEndTag(HTML$Tag, int)): this.this$0.mEnd
    //#input(void handleEndTag(HTML$Tag, int)): this.this$0.mFound
    //#output(void handleEndTag(HTML$Tag, int)): this.mCurrentTag
    //#output(void handleEndTag(HTML$Tag, int)): this.this$0.mEnd
    //#output(void handleEndTag(HTML$Tag, int)): this.this$0.mStart
    //#pre[7] (void handleEndTag(HTML$Tag, int)): this.mList != null
    //#pre[2] (void handleEndTag(HTML$Tag, int)): (soft) init'ed(this.mEnd)
    //#pre[8] (void handleEndTag(HTML$Tag, int)): (soft) this.this$0 != null
    //#pre[9] (void handleEndTag(HTML$Tag, int)): (soft) init'ed(this.mFound)
    //#post(void handleEndTag(HTML$Tag, int)): this.mCurrentTag == One-of{old this.mCurrentTag, null}
    //#post(void handleEndTag(HTML$Tag, int)): this.mEnd == One-of{pos, old this.mEnd}
    //#post(void handleEndTag(HTML$Tag, int)): (soft) init'ed(this.mEnd)
    //#post(void handleEndTag(HTML$Tag, int)): this.mStart == One-of{old this.mStart, pos}
    //#test_vector(void handleEndTag(HTML$Tag, int)): this.mEnd: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
    //#test_vector(void handleEndTag(HTML$Tag, int)): this.mFound: {0}, {1}
    //#test_vector(void handleEndTag(HTML$Tag, int)): java.util.List:contains(...)@395: {0}, {1}
    //#test_vector(void handleEndTag(HTML$Tag, int)): java.util.List:contains(...)@399: {0}, {1}
            {
                mEnd = pos;
            }
            else if (mList.contains(tag) && !mFound)
            {
                mStart = pos;
            }
            else
            {
                mCurrentTag = null;
            }
        }
    //#LinkbackExtractor.java:407: end of method: void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback.handleEndTag(HTML$Tag, int)

        /**
         * Get the page title
         */
        public void handleText(char[] data, int pos)
        {
            if (mCurrentTag != null && mCurrentTag.equals(Tag.TITLE))
    //#LinkbackExtractor.java:414: method: void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback.handleText(char[], int)
    //#input(void handleText(char[], int)): data
    //#input(void handleText(char[], int)): javax.swing.text.html.HTML$Tag.TITLE
    //#input(void handleText(char[], int)): this
    //#input(void handleText(char[], int)): this.mCurrentTag
    //#input(void handleText(char[], int)): this.this$0
    //#input(void handleText(char[], int)): this.this$0.mTitle
    //#input(void handleText(char[], int)): this.this$0.mTitle._tainted
    //#output(void handleText(char[], int)): java.lang.StringBuilder:toString(...)._tainted
    //#output(void handleText(char[], int)): this.this$0.mTitle
    //#new obj(void handleText(char[], int)): java.lang.StringBuilder:toString(...)
    //#pre[4] (void handleText(char[], int)): init'ed(this.mCurrentTag)
    //#pre[2] (void handleText(char[], int)): (soft) this.mTitle != null
    //#pre[5] (void handleText(char[], int)): (soft) this.this$0 != null
    //#presumption(void handleText(char[], int)): init'ed(javax.swing.text.html.HTML$Tag.TITLE)
    //#post(void handleText(char[], int)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(void handleText(char[], int)): this.mTitle == One-of{old this.mTitle, &java.lang.StringBuilder:toString(...)}
    //#post(void handleText(char[], int)): (soft) this.mTitle != null
    //#unanalyzed(void handleText(char[], int)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void handleText(char[], int)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void handleText(char[], int)): Effects-of-calling:java.lang.StringBuilder:toString
    //#test_vector(void handleText(char[], int)): this.mCurrentTag: Addr_Set{null}, Inverse{null}
    //#test_vector(void handleText(char[], int)): java.lang.Object:equals(...)@414: {0}, {1}
    //#test_vector(void handleText(char[], int)): java.lang.String:length(...)@417: {50..4_294_967_295}, {0..49}
            {
                String newText = new String(data);
                if (mTitle.length() < 50)
                {
                    mTitle += newText;
                }
            }
        }
    //#LinkbackExtractor.java:422: end of method: void org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback.handleText(char[], int)
    }
}

    //#output(org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback__static_init): __Descendant_Table[org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback]
    //#output(org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback__static_init): __Dispatch_Table.handleEndTag(Ljavax/swing/text/html/HTML$Tag;I)V
    //#output(org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback__static_init): __Dispatch_Table.handleSimpleTag(Ljavax/swing/text/html/HTML$Tag;Ljavax/swing/text/MutableAttributeSet;I)V
    //#output(org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback__static_init): __Dispatch_Table.handleStartTag(Ljavax/swing/text/html/HTML$Tag;Ljavax/swing/text/MutableAttributeSet;I)V
    //#output(org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback__static_init): __Dispatch_Table.handleText([CI)V
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback__static_init): __Descendant_Table[org/apache/roller/weblogger/util/LinkbackExtractor$LinkbackCallback] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback__static_init): __Dispatch_Table.handleEndTag(Ljavax/swing/text/html/HTML$Tag;I)V == &handleEndTag
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback__static_init): __Dispatch_Table.handleSimpleTag(Ljavax/swing/text/html/HTML$Tag;Ljavax/swing/text/MutableAttributeSet;I)V == &handleSimpleTag
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback__static_init): __Dispatch_Table.handleStartTag(Ljavax/swing/text/html/HTML$Tag;Ljavax/swing/text/MutableAttributeSet;I)V == &handleStartTag
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback__static_init): __Dispatch_Table.handleText([CI)V == &handleText
    //#LinkbackExtractor.java:: end of method: org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback.org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback__static_init
    //#LinkbackExtractor.java:: end of class: org.apache.roller.weblogger.util.LinkbackExtractor$LinkbackCallback
    //#output(org.apache.roller.weblogger.util.LinkbackExtractor$1__static_init): __Descendant_Table[org/apache/roller/weblogger/util/LinkbackExtractor$1]
    //#output(org.apache.roller.weblogger.util.LinkbackExtractor$1__static_init): __Dispatch_Table.getParser()Ljavax/swing/text/html/HTMLEditorKit$Parser;
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor$1__static_init): __Descendant_Table[org/apache/roller/weblogger/util/LinkbackExtractor$1] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.util.LinkbackExtractor$1__static_init): __Dispatch_Table.getParser()Ljavax/swing/text/html/HTMLEditorKit$Parser; == &getParser
    //#LinkbackExtractor.java:: end of method: org.apache.roller.weblogger.util.LinkbackExtractor$1.org.apache.roller.weblogger.util.LinkbackExtractor$1__static_init
    //#LinkbackExtractor.java:: end of class: org.apache.roller.weblogger.util.LinkbackExtractor$1
    //#LinkbackExtractor.java:: end of class: org.apache.roller.weblogger.util.LinkbackExtractor
