public class org.apache.lucene.classification.BooleanPerceptronClassifier implements org.apache.lucene.classification.Classifier<java.lang.Boolean>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.lucene.classification.BooleanPerceptronClassifier
  super_class: java.lang.Object
{
  private final java.lang.Double bias;
    descriptor: Ljava/lang/Double;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.lucene.index.Terms textTerms;
    descriptor: Lorg/apache/lucene/index/Terms;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.lucene.analysis.Analyzer analyzer;
    descriptor: Lorg/apache/lucene/analysis/Analyzer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String textFieldName;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private org.apache.lucene.util.fst.FST<java.lang.Long> fst;
    descriptor: Lorg/apache/lucene/util/fst/FST;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lorg/apache/lucene/util/fst/FST<Ljava/lang/Long;>;

  public void <init>(org.apache.lucene.index.IndexReader, org.apache.lucene.analysis.Analyzer, org.apache.lucene.search.Query, java.lang.Integer, java.lang.Double, java.lang.String, java.lang.String);
    descriptor: (Lorg/apache/lucene/index/IndexReader;Lorg/apache/lucene/analysis/Analyzer;Lorg/apache/lucene/search/Query;Ljava/lang/Integer;Ljava/lang/Double;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=26, args_size=8
        start local 0 // org.apache.lucene.classification.BooleanPerceptronClassifier this
        start local 1 // org.apache.lucene.index.IndexReader indexReader
        start local 2 // org.apache.lucene.analysis.Analyzer analyzer
        start local 3 // org.apache.lucene.search.Query query
        start local 4 // java.lang.Integer batchSize
        start local 5 // java.lang.Double bias
        start local 6 // java.lang.String classFieldName
        start local 7 // java.lang.String textFieldName
         0: .line 81
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 83
            aload 0 /* this */
            aload 1 /* indexReader */
            aload 7 /* textFieldName */
            invokestatic org.apache.lucene.index.MultiTerms.getTerms:(Lorg/apache/lucene/index/IndexReader;Ljava/lang/String;)Lorg/apache/lucene/index/Terms;
            putfield org.apache.lucene.classification.BooleanPerceptronClassifier.textTerms:Lorg/apache/lucene/index/Terms;
         2: .line 85
            aload 0 /* this */
            getfield org.apache.lucene.classification.BooleanPerceptronClassifier.textTerms:Lorg/apache/lucene/index/Terms;
            ifnonnull 4
         3: .line 86
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "term vectors need to be available for field "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 7 /* textFieldName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 89
      StackMap locals: org.apache.lucene.classification.BooleanPerceptronClassifier org.apache.lucene.index.IndexReader org.apache.lucene.analysis.Analyzer org.apache.lucene.search.Query java.lang.Integer java.lang.Double java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 2 /* analyzer */
            putfield org.apache.lucene.classification.BooleanPerceptronClassifier.analyzer:Lorg/apache/lucene/analysis/Analyzer;
         5: .line 90
            aload 0 /* this */
            aload 7 /* textFieldName */
            putfield org.apache.lucene.classification.BooleanPerceptronClassifier.textFieldName:Ljava/lang/String;
         6: .line 92
            aload 5 /* bias */
            ifnull 7
            aload 5 /* bias */
            invokevirtual java.lang.Double.doubleValue:()D
            dconst_0
            dcmpl
            ifne 16
         7: .line 94
      StackMap locals:
      StackMap stack:
            aload 1 /* indexReader */
            aload 7 /* textFieldName */
            invokevirtual org.apache.lucene.index.IndexReader.getSumTotalTermFreq:(Ljava/lang/String;)J
            l2d
            aload 1 /* indexReader */
            aload 7 /* textFieldName */
            invokevirtual org.apache.lucene.index.IndexReader.getDocCount:(Ljava/lang/String;)I
            i2d
            ddiv
            dstore 8 /* t */
        start local 8 // double t
         8: .line 95
            dload 8 /* t */
            ldc -1.0
            dcmpl
            ifeq 11
         9: .line 96
            aload 0 /* this */
            dload 8 /* t */
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            putfield org.apache.lucene.classification.BooleanPerceptronClassifier.bias:Ljava/lang/Double;
        10: .line 97
            goto 17
        11: .line 98
      StackMap locals: double
      StackMap stack:
            new java.io.IOException
            dup
        12: .line 99
            new java.lang.StringBuilder
            dup
            ldc "bias cannot be assigned since term vectors for field "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        13: .line 100
            aload 7 /* textFieldName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " do not exist"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        14: .line 99
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        15: .line 98
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 8 // double t
        16: .line 103
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 5 /* bias */
            putfield org.apache.lucene.classification.BooleanPerceptronClassifier.bias:Ljava/lang/Double;
        17: .line 107
      StackMap locals:
      StackMap stack:
            new java.util.concurrent.ConcurrentSkipListMap
            dup
            invokespecial java.util.concurrent.ConcurrentSkipListMap.<init>:()V
            astore 8 /* weights */
        start local 8 // java.util.SortedMap weights
        18: .line 109
            aload 0 /* this */
            getfield org.apache.lucene.classification.BooleanPerceptronClassifier.textTerms:Lorg/apache/lucene/index/Terms;
            invokevirtual org.apache.lucene.index.Terms.iterator:()Lorg/apache/lucene/index/TermsEnum;
            astore 9 /* termsEnum */
        start local 9 // org.apache.lucene.index.TermsEnum termsEnum
        19: .line 111
            goto 21
        start local 10 // org.apache.lucene.util.BytesRef textTerm
        20: .line 112
      StackMap locals: java.util.SortedMap org.apache.lucene.index.TermsEnum org.apache.lucene.util.BytesRef
      StackMap stack:
            aload 8 /* weights */
            aload 10 /* textTerm */
            invokevirtual org.apache.lucene.util.BytesRef.utf8ToString:()Ljava/lang/String;
            aload 9 /* termsEnum */
            invokevirtual org.apache.lucene.index.TermsEnum.totalTermFreq:()J
            l2d
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            invokeinterface java.util.SortedMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 10 // org.apache.lucene.util.BytesRef textTerm
        21: .line 111
      StackMap locals:
      StackMap stack:
            aload 9 /* termsEnum */
            invokevirtual org.apache.lucene.index.TermsEnum.next:()Lorg/apache/lucene/util/BytesRef;
            dup
            astore 10 /* textTerm */
        start local 10 // org.apache.lucene.util.BytesRef textTerm
        22: ifnonnull 20
        23: .line 114
            aload 0 /* this */
            aload 8 /* weights */
            invokevirtual org.apache.lucene.classification.BooleanPerceptronClassifier.updateFST:(Ljava/util/SortedMap;)V
        24: .line 116
            new org.apache.lucene.search.IndexSearcher
            dup
            aload 1 /* indexReader */
            invokespecial org.apache.lucene.search.IndexSearcher.<init>:(Lorg/apache/lucene/index/IndexReader;)V
            astore 11 /* indexSearcher */
        start local 11 // org.apache.lucene.search.IndexSearcher indexSearcher
        25: .line 118
            iconst_0
            istore 12 /* batchCount */
        start local 12 // int batchCount
        26: .line 120
            new org.apache.lucene.search.BooleanQuery$Builder
            dup
            invokespecial org.apache.lucene.search.BooleanQuery$Builder.<init>:()V
            astore 13 /* q */
        start local 13 // org.apache.lucene.search.BooleanQuery$Builder q
        27: .line 121
            aload 13 /* q */
            new org.apache.lucene.search.BooleanClause
            dup
            new org.apache.lucene.search.WildcardQuery
            dup
            new org.apache.lucene.index.Term
            dup
            aload 6 /* classFieldName */
            ldc "*"
            invokespecial org.apache.lucene.index.Term.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            invokespecial org.apache.lucene.search.WildcardQuery.<init>:(Lorg/apache/lucene/index/Term;)V
            getstatic org.apache.lucene.search.BooleanClause$Occur.MUST:Lorg/apache/lucene/search/BooleanClause$Occur;
            invokespecial org.apache.lucene.search.BooleanClause.<init>:(Lorg/apache/lucene/search/Query;Lorg/apache/lucene/search/BooleanClause$Occur;)V
            invokevirtual org.apache.lucene.search.BooleanQuery$Builder.add:(Lorg/apache/lucene/search/BooleanClause;)Lorg/apache/lucene/search/BooleanQuery$Builder;
            pop
        28: .line 122
            aload 3 /* query */
            ifnull 30
        29: .line 123
            aload 13 /* q */
            new org.apache.lucene.search.BooleanClause
            dup
            aload 3 /* query */
            getstatic org.apache.lucene.search.BooleanClause$Occur.MUST:Lorg/apache/lucene/search/BooleanClause$Occur;
            invokespecial org.apache.lucene.search.BooleanClause.<init>:(Lorg/apache/lucene/search/Query;Lorg/apache/lucene/search/BooleanClause$Occur;)V
            invokevirtual org.apache.lucene.search.BooleanQuery$Builder.add:(Lorg/apache/lucene/search/BooleanClause;)Lorg/apache/lucene/search/BooleanQuery$Builder;
            pop
        30: .line 126
      StackMap locals: org.apache.lucene.classification.BooleanPerceptronClassifier org.apache.lucene.index.IndexReader org.apache.lucene.analysis.Analyzer org.apache.lucene.search.Query java.lang.Integer java.lang.Double java.lang.String java.lang.String java.util.SortedMap org.apache.lucene.index.TermsEnum org.apache.lucene.util.BytesRef org.apache.lucene.search.IndexSearcher int org.apache.lucene.search.BooleanQuery$Builder
      StackMap stack:
            aload 11 /* indexSearcher */
            aload 13 /* q */
            invokevirtual org.apache.lucene.search.BooleanQuery$Builder.build:()Lorg/apache/lucene/search/BooleanQuery;
        31: .line 127
            ldc 2147483647
        32: .line 126
            invokevirtual org.apache.lucene.search.IndexSearcher.search:(Lorg/apache/lucene/search/Query;I)Lorg/apache/lucene/search/TopDocs;
        33: .line 127
            getfield org.apache.lucene.search.TopDocs.scoreDocs:[Lorg/apache/lucene/search/ScoreDoc;
            dup
            astore 17
            arraylength
            istore 16
            iconst_0
            istore 15
            goto 50
      StackMap locals: org.apache.lucene.classification.BooleanPerceptronClassifier org.apache.lucene.index.IndexReader org.apache.lucene.analysis.Analyzer org.apache.lucene.search.Query java.lang.Integer java.lang.Double java.lang.String java.lang.String java.util.SortedMap org.apache.lucene.index.TermsEnum org.apache.lucene.util.BytesRef org.apache.lucene.search.IndexSearcher int org.apache.lucene.search.BooleanQuery$Builder top int int org.apache.lucene.search.ScoreDoc[]
      StackMap stack:
        34: aload 17
            iload 15
            aaload
            astore 14 /* scoreDoc */
        start local 14 // org.apache.lucene.search.ScoreDoc scoreDoc
        35: .line 128
            aload 11 /* indexSearcher */
            aload 14 /* scoreDoc */
            getfield org.apache.lucene.search.ScoreDoc.doc:I
            invokevirtual org.apache.lucene.search.IndexSearcher.doc:(I)Lorg/apache/lucene/document/Document;
            astore 18 /* doc */
        start local 18 // org.apache.lucene.document.Document doc
        36: .line 130
            aload 18 /* doc */
            aload 7 /* textFieldName */
            invokevirtual org.apache.lucene.document.Document.getField:(Ljava/lang/String;)Lorg/apache/lucene/index/IndexableField;
            astore 19 /* textField */
        start local 19 // org.apache.lucene.index.IndexableField textField
        37: .line 133
            aload 18 /* doc */
            aload 6 /* classFieldName */
            invokevirtual org.apache.lucene.document.Document.getField:(Ljava/lang/String;)Lorg/apache/lucene/index/IndexableField;
            astore 20 /* classField */
        start local 20 // org.apache.lucene.index.IndexableField classField
        38: .line 135
            aload 19 /* textField */
            ifnull 49
            aload 20 /* classField */
            ifnull 49
        39: .line 137
            aload 0 /* this */
            aload 19 /* textField */
            invokeinterface org.apache.lucene.index.IndexableField.stringValue:()Ljava/lang/String;
            invokevirtual org.apache.lucene.classification.BooleanPerceptronClassifier.assignClass:(Ljava/lang/String;)Lorg/apache/lucene/classification/ClassificationResult;
            astore 21 /* classificationResult */
        start local 21 // org.apache.lucene.classification.ClassificationResult classificationResult
        40: .line 138
            aload 21 /* classificationResult */
            invokevirtual org.apache.lucene.classification.ClassificationResult.getAssignedClass:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            astore 22 /* assignedClass */
        start local 22 // java.lang.Boolean assignedClass
        41: .line 140
            aload 20 /* classField */
            invokeinterface org.apache.lucene.index.IndexableField.stringValue:()Ljava/lang/String;
            invokestatic java.lang.Boolean.valueOf:(Ljava/lang/String;)Ljava/lang/Boolean;
            astore 23 /* correctClass */
        start local 23 // java.lang.Boolean correctClass
        42: .line 141
            aload 23 /* correctClass */
            aload 22 /* assignedClass */
            invokevirtual java.lang.Boolean.compareTo:(Ljava/lang/Boolean;)I
            i2l
            lstore 24 /* modifier */
        start local 24 // long modifier
        43: .line 142
            lload 24 /* modifier */
            lconst_0
            lcmp
            ifeq 48
        44: .line 143
            aload 0 /* this */
            aload 1 /* indexReader */
            aload 14 /* scoreDoc */
            getfield org.apache.lucene.search.ScoreDoc.doc:I
            aload 22 /* assignedClass */
        45: .line 144
            aload 8 /* weights */
            lload 24 /* modifier */
            l2d
            iload 12 /* batchCount */
            aload 4 /* batchSize */
            invokevirtual java.lang.Integer.intValue:()I
            irem
            ifne 46
            iconst_1
            goto 47
      StackMap locals: org.apache.lucene.classification.BooleanPerceptronClassifier org.apache.lucene.index.IndexReader org.apache.lucene.analysis.Analyzer org.apache.lucene.search.Query java.lang.Integer java.lang.Double java.lang.String java.lang.String java.util.SortedMap org.apache.lucene.index.TermsEnum org.apache.lucene.util.BytesRef org.apache.lucene.search.IndexSearcher int org.apache.lucene.search.BooleanQuery$Builder org.apache.lucene.search.ScoreDoc int int org.apache.lucene.search.ScoreDoc[] org.apache.lucene.document.Document org.apache.lucene.index.IndexableField org.apache.lucene.index.IndexableField org.apache.lucene.classification.ClassificationResult java.lang.Boolean java.lang.Boolean long
      StackMap stack: org.apache.lucene.classification.BooleanPerceptronClassifier org.apache.lucene.index.IndexReader int java.lang.Boolean java.util.SortedMap double
        46: iconst_0
        47: .line 143
      StackMap locals: org.apache.lucene.classification.BooleanPerceptronClassifier org.apache.lucene.index.IndexReader org.apache.lucene.analysis.Analyzer org.apache.lucene.search.Query java.lang.Integer java.lang.Double java.lang.String java.lang.String java.util.SortedMap org.apache.lucene.index.TermsEnum org.apache.lucene.util.BytesRef org.apache.lucene.search.IndexSearcher int org.apache.lucene.search.BooleanQuery$Builder org.apache.lucene.search.ScoreDoc int int org.apache.lucene.search.ScoreDoc[] org.apache.lucene.document.Document org.apache.lucene.index.IndexableField org.apache.lucene.index.IndexableField org.apache.lucene.classification.ClassificationResult java.lang.Boolean java.lang.Boolean long
      StackMap stack: org.apache.lucene.classification.BooleanPerceptronClassifier org.apache.lucene.index.IndexReader int java.lang.Boolean java.util.SortedMap double int
            invokevirtual org.apache.lucene.classification.BooleanPerceptronClassifier.updateWeights:(Lorg/apache/lucene/index/IndexReader;ILjava/lang/Boolean;Ljava/util/SortedMap;DZ)V
        48: .line 146
      StackMap locals:
      StackMap stack:
            iinc 12 /* batchCount */ 1
        end local 24 // long modifier
        end local 23 // java.lang.Boolean correctClass
        end local 22 // java.lang.Boolean assignedClass
        end local 21 // org.apache.lucene.classification.ClassificationResult classificationResult
        end local 20 // org.apache.lucene.index.IndexableField classField
        end local 19 // org.apache.lucene.index.IndexableField textField
        end local 18 // org.apache.lucene.document.Document doc
        end local 14 // org.apache.lucene.search.ScoreDoc scoreDoc
        49: .line 126
      StackMap locals: org.apache.lucene.classification.BooleanPerceptronClassifier org.apache.lucene.index.IndexReader org.apache.lucene.analysis.Analyzer org.apache.lucene.search.Query java.lang.Integer java.lang.Double java.lang.String java.lang.String java.util.SortedMap org.apache.lucene.index.TermsEnum org.apache.lucene.util.BytesRef org.apache.lucene.search.IndexSearcher int org.apache.lucene.search.BooleanQuery$Builder top int int org.apache.lucene.search.ScoreDoc[]
      StackMap stack:
            iinc 15 1
      StackMap locals:
      StackMap stack:
        50: iload 15
            iload 16
            if_icmplt 34
        51: .line 149
            aload 8 /* weights */
            invokeinterface java.util.SortedMap.clear:()V
        52: .line 150
            return
        end local 13 // org.apache.lucene.search.BooleanQuery$Builder q
        end local 12 // int batchCount
        end local 11 // org.apache.lucene.search.IndexSearcher indexSearcher
        end local 10 // org.apache.lucene.util.BytesRef textTerm
        end local 9 // org.apache.lucene.index.TermsEnum termsEnum
        end local 8 // java.util.SortedMap weights
        end local 7 // java.lang.String textFieldName
        end local 6 // java.lang.String classFieldName
        end local 5 // java.lang.Double bias
        end local 4 // java.lang.Integer batchSize
        end local 3 // org.apache.lucene.search.Query query
        end local 2 // org.apache.lucene.analysis.Analyzer analyzer
        end local 1 // org.apache.lucene.index.IndexReader indexReader
        end local 0 // org.apache.lucene.classification.BooleanPerceptronClassifier this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   53     0                  this  Lorg/apache/lucene/classification/BooleanPerceptronClassifier;
            0   53     1           indexReader  Lorg/apache/lucene/index/IndexReader;
            0   53     2              analyzer  Lorg/apache/lucene/analysis/Analyzer;
            0   53     3                 query  Lorg/apache/lucene/search/Query;
            0   53     4             batchSize  Ljava/lang/Integer;
            0   53     5                  bias  Ljava/lang/Double;
            0   53     6        classFieldName  Ljava/lang/String;
            0   53     7         textFieldName  Ljava/lang/String;
            8   16     8                     t  D
           18   53     8               weights  Ljava/util/SortedMap<Ljava/lang/String;Ljava/lang/Double;>;
           19   53     9             termsEnum  Lorg/apache/lucene/index/TermsEnum;
           20   21    10              textTerm  Lorg/apache/lucene/util/BytesRef;
           22   53    10              textTerm  Lorg/apache/lucene/util/BytesRef;
           25   53    11         indexSearcher  Lorg/apache/lucene/search/IndexSearcher;
           26   53    12            batchCount  I
           27   53    13                     q  Lorg/apache/lucene/search/BooleanQuery$Builder;
           35   49    14              scoreDoc  Lorg/apache/lucene/search/ScoreDoc;
           36   49    18                   doc  Lorg/apache/lucene/document/Document;
           37   49    19             textField  Lorg/apache/lucene/index/IndexableField;
           38   49    20            classField  Lorg/apache/lucene/index/IndexableField;
           40   49    21  classificationResult  Lorg/apache/lucene/classification/ClassificationResult<Ljava/lang/Boolean;>;
           41   49    22         assignedClass  Ljava/lang/Boolean;
           42   49    23          correctClass  Ljava/lang/Boolean;
           43   49    24              modifier  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      indexReader     
      analyzer        
      query           
      batchSize       
      bias            
      classFieldName  
      textFieldName   

  private void updateWeights(org.apache.lucene.index.IndexReader, int, java.lang.Boolean, java.util.SortedMap<java.lang.String, java.lang.Double>, double, );
    descriptor: (Lorg/apache/lucene/index/IndexReader;ILjava/lang/Boolean;Ljava/util/SortedMap;DZ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=10, locals=16, args_size=7
        start local 0 // org.apache.lucene.classification.BooleanPerceptronClassifier this
        start local 1 // org.apache.lucene.index.IndexReader indexReader
        start local 2 // int docId
        start local 3 // java.lang.Boolean assignedClass
        start local 4 // java.util.SortedMap weights
        start local 5 // double modifier
        start local 7 // boolean updateFST
         0: .line 155
            aload 0 /* this */
            getfield org.apache.lucene.classification.BooleanPerceptronClassifier.textTerms:Lorg/apache/lucene/index/Terms;
            invokevirtual org.apache.lucene.index.Terms.iterator:()Lorg/apache/lucene/index/TermsEnum;
            astore 8 /* cte */
        start local 8 // org.apache.lucene.index.TermsEnum cte
         1: .line 158
            aload 1 /* indexReader */
            iload 2 /* docId */
            aload 0 /* this */
            getfield org.apache.lucene.classification.BooleanPerceptronClassifier.textFieldName:Ljava/lang/String;
            invokevirtual org.apache.lucene.index.IndexReader.getTermVector:(ILjava/lang/String;)Lorg/apache/lucene/index/Terms;
            astore 9 /* terms */
        start local 9 // org.apache.lucene.index.Terms terms
         2: .line 160
            aload 9 /* terms */
            ifnonnull 6
         3: .line 161
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "term vectors must be stored for field "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         4: .line 162
            aload 0 /* this */
            getfield org.apache.lucene.classification.BooleanPerceptronClassifier.textFieldName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 161
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 165
      StackMap locals: org.apache.lucene.index.TermsEnum org.apache.lucene.index.Terms
      StackMap stack:
            aload 9 /* terms */
            invokevirtual org.apache.lucene.index.Terms.iterator:()Lorg/apache/lucene/index/TermsEnum;
            astore 10 /* termsEnum */
        start local 10 // org.apache.lucene.index.TermsEnum termsEnum
         7: .line 169
            goto 16
        start local 11 // org.apache.lucene.util.BytesRef term
         8: .line 170
      StackMap locals: org.apache.lucene.index.TermsEnum org.apache.lucene.util.BytesRef
      StackMap stack:
            aload 8 /* cte */
            aload 11 /* term */
            invokevirtual org.apache.lucene.index.TermsEnum.seekExact:(Lorg/apache/lucene/util/BytesRef;)Z
            pop
         9: .line 171
            aload 3 /* assignedClass */
            ifnull 16
        10: .line 172
            aload 10 /* termsEnum */
            invokevirtual org.apache.lucene.index.TermsEnum.totalTermFreq:()J
            lstore 12 /* termFreqLocal */
        start local 12 // long termFreqLocal
        11: .line 174
            aload 0 /* this */
            getfield org.apache.lucene.classification.BooleanPerceptronClassifier.fst:Lorg/apache/lucene/util/fst/FST;
            aload 11 /* term */
            invokestatic org.apache.lucene.util.fst.Util.get:(Lorg/apache/lucene/util/fst/FST;Lorg/apache/lucene/util/BytesRef;)Ljava/lang/Object;
            checkcast java.lang.Long
            astore 14 /* previousValue */
        start local 14 // java.lang.Long previousValue
        12: .line 175
            aload 11 /* term */
            invokevirtual org.apache.lucene.util.BytesRef.utf8ToString:()Ljava/lang/String;
            astore 15 /* termString */
        start local 15 // java.lang.String termString
        13: .line 176
            aload 4 /* weights */
            aload 15 /* termString */
            aload 14 /* previousValue */
            ifnonnull 14
            dconst_0
            goto 15
      StackMap locals: org.apache.lucene.classification.BooleanPerceptronClassifier org.apache.lucene.index.IndexReader int java.lang.Boolean java.util.SortedMap double int org.apache.lucene.index.TermsEnum org.apache.lucene.index.Terms org.apache.lucene.index.TermsEnum org.apache.lucene.util.BytesRef long java.lang.Long java.lang.String
      StackMap stack: java.util.SortedMap java.lang.String
        14: dconst_0
            aload 14 /* previousValue */
            invokevirtual java.lang.Long.longValue:()J
            l2d
            dload 5 /* modifier */
            lload 12 /* termFreqLocal */
            l2d
            dmul
            dadd
            invokestatic java.lang.Math.max:(DD)D
      StackMap locals: org.apache.lucene.classification.BooleanPerceptronClassifier org.apache.lucene.index.IndexReader int java.lang.Boolean java.util.SortedMap double int org.apache.lucene.index.TermsEnum org.apache.lucene.index.Terms org.apache.lucene.index.TermsEnum org.apache.lucene.util.BytesRef long java.lang.Long java.lang.String
      StackMap stack: java.util.SortedMap java.lang.String double
        15: invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            invokeinterface java.util.SortedMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 15 // java.lang.String termString
        end local 14 // java.lang.Long previousValue
        end local 12 // long termFreqLocal
        end local 11 // org.apache.lucene.util.BytesRef term
        16: .line 169
      StackMap locals: org.apache.lucene.classification.BooleanPerceptronClassifier org.apache.lucene.index.IndexReader int java.lang.Boolean java.util.SortedMap double int org.apache.lucene.index.TermsEnum org.apache.lucene.index.Terms org.apache.lucene.index.TermsEnum
      StackMap stack:
            aload 10 /* termsEnum */
            invokevirtual org.apache.lucene.index.TermsEnum.next:()Lorg/apache/lucene/util/BytesRef;
            dup
            astore 11 /* term */
        start local 11 // org.apache.lucene.util.BytesRef term
        17: ifnonnull 8
        18: .line 179
            iload 7 /* updateFST */
            ifeq 20
        19: .line 180
            aload 0 /* this */
            aload 4 /* weights */
            invokevirtual org.apache.lucene.classification.BooleanPerceptronClassifier.updateFST:(Ljava/util/SortedMap;)V
        20: .line 182
      StackMap locals: org.apache.lucene.util.BytesRef
      StackMap stack:
            return
        end local 11 // org.apache.lucene.util.BytesRef term
        end local 10 // org.apache.lucene.index.TermsEnum termsEnum
        end local 9 // org.apache.lucene.index.Terms terms
        end local 8 // org.apache.lucene.index.TermsEnum cte
        end local 7 // boolean updateFST
        end local 5 // double modifier
        end local 4 // java.util.SortedMap weights
        end local 3 // java.lang.Boolean assignedClass
        end local 2 // int docId
        end local 1 // org.apache.lucene.index.IndexReader indexReader
        end local 0 // org.apache.lucene.classification.BooleanPerceptronClassifier this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   21     0           this  Lorg/apache/lucene/classification/BooleanPerceptronClassifier;
            0   21     1    indexReader  Lorg/apache/lucene/index/IndexReader;
            0   21     2          docId  I
            0   21     3  assignedClass  Ljava/lang/Boolean;
            0   21     4        weights  Ljava/util/SortedMap<Ljava/lang/String;Ljava/lang/Double;>;
            0   21     5       modifier  D
            0   21     7      updateFST  Z
            1   21     8            cte  Lorg/apache/lucene/index/TermsEnum;
            2   21     9          terms  Lorg/apache/lucene/index/Terms;
            7   21    10      termsEnum  Lorg/apache/lucene/index/TermsEnum;
            8   16    11           term  Lorg/apache/lucene/util/BytesRef;
           17   21    11           term  Lorg/apache/lucene/util/BytesRef;
           11   16    12  termFreqLocal  J
           12   16    14  previousValue  Ljava/lang/Long;
           13   16    15     termString  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    Signature: (Lorg/apache/lucene/index/IndexReader;ILjava/lang/Boolean;Ljava/util/SortedMap<Ljava/lang/String;Ljava/lang/Double;>;DZ)V
    MethodParameters:
               Name  Flags
      indexReader    
      docId          
      assignedClass  
      weights        
      modifier       
      updateFST      

  private void updateFST(java.util.SortedMap<java.lang.String, java.lang.Double>);
    descriptor: (Ljava/util/SortedMap;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // org.apache.lucene.classification.BooleanPerceptronClassifier this
        start local 1 // java.util.SortedMap weights
         0: .line 185
            invokestatic org.apache.lucene.util.fst.PositiveIntOutputs.getSingleton:()Lorg/apache/lucene/util/fst/PositiveIntOutputs;
            astore 2 /* outputs */
        start local 2 // org.apache.lucene.util.fst.PositiveIntOutputs outputs
         1: .line 186
            new org.apache.lucene.util.fst.Builder
            dup
            getstatic org.apache.lucene.util.fst.FST$INPUT_TYPE.BYTE1:Lorg/apache/lucene/util/fst/FST$INPUT_TYPE;
            aload 2 /* outputs */
            invokespecial org.apache.lucene.util.fst.Builder.<init>:(Lorg/apache/lucene/util/fst/FST$INPUT_TYPE;Lorg/apache/lucene/util/fst/Outputs;)V
            astore 3 /* fstBuilder */
        start local 3 // org.apache.lucene.util.fst.Builder fstBuilder
         2: .line 187
            new org.apache.lucene.util.BytesRefBuilder
            dup
            invokespecial org.apache.lucene.util.BytesRefBuilder.<init>:()V
            astore 4 /* scratchBytes */
        start local 4 // org.apache.lucene.util.BytesRefBuilder scratchBytes
         3: .line 188
            new org.apache.lucene.util.IntsRefBuilder
            dup
            invokespecial org.apache.lucene.util.IntsRefBuilder.<init>:()V
            astore 5 /* scratchInts */
        start local 5 // org.apache.lucene.util.IntsRefBuilder scratchInts
         4: .line 189
            aload 1 /* weights */
            invokeinterface java.util.SortedMap.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7
            goto 10
      StackMap locals: org.apache.lucene.classification.BooleanPerceptronClassifier java.util.SortedMap org.apache.lucene.util.fst.PositiveIntOutputs org.apache.lucene.util.fst.Builder org.apache.lucene.util.BytesRefBuilder org.apache.lucene.util.IntsRefBuilder top java.util.Iterator
      StackMap stack:
         5: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 6 /* entry */
        start local 6 // java.util.Map$Entry entry
         6: .line 190
            aload 4 /* scratchBytes */
            aload 6 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.CharSequence
            invokevirtual org.apache.lucene.util.BytesRefBuilder.copyChars:(Ljava/lang/CharSequence;)V
         7: .line 191
            aload 3 /* fstBuilder */
            aload 4 /* scratchBytes */
            invokevirtual org.apache.lucene.util.BytesRefBuilder.get:()Lorg/apache/lucene/util/BytesRef;
            aload 5 /* scratchInts */
            invokestatic org.apache.lucene.util.fst.Util.toIntsRef:(Lorg/apache/lucene/util/BytesRef;Lorg/apache/lucene/util/IntsRefBuilder;)Lorg/apache/lucene/util/IntsRef;
            aload 6 /* entry */
         8: .line 192
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.Double
            invokevirtual java.lang.Double.longValue:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
         9: .line 191
            invokevirtual org.apache.lucene.util.fst.Builder.add:(Lorg/apache/lucene/util/IntsRef;Ljava/lang/Object;)V
        end local 6 // java.util.Map$Entry entry
        10: .line 189
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        11: .line 194
            aload 0 /* this */
            aload 3 /* fstBuilder */
            invokevirtual org.apache.lucene.util.fst.Builder.finish:()Lorg/apache/lucene/util/fst/FST;
            putfield org.apache.lucene.classification.BooleanPerceptronClassifier.fst:Lorg/apache/lucene/util/fst/FST;
        12: .line 195
            return
        end local 5 // org.apache.lucene.util.IntsRefBuilder scratchInts
        end local 4 // org.apache.lucene.util.BytesRefBuilder scratchBytes
        end local 3 // org.apache.lucene.util.fst.Builder fstBuilder
        end local 2 // org.apache.lucene.util.fst.PositiveIntOutputs outputs
        end local 1 // java.util.SortedMap weights
        end local 0 // org.apache.lucene.classification.BooleanPerceptronClassifier this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   13     0          this  Lorg/apache/lucene/classification/BooleanPerceptronClassifier;
            0   13     1       weights  Ljava/util/SortedMap<Ljava/lang/String;Ljava/lang/Double;>;
            1   13     2       outputs  Lorg/apache/lucene/util/fst/PositiveIntOutputs;
            2   13     3    fstBuilder  Lorg/apache/lucene/util/fst/Builder<Ljava/lang/Long;>;
            3   13     4  scratchBytes  Lorg/apache/lucene/util/BytesRefBuilder;
            4   13     5   scratchInts  Lorg/apache/lucene/util/IntsRefBuilder;
            6   10     6         entry  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/Double;>;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/util/SortedMap<Ljava/lang/String;Ljava/lang/Double;>;)V
    MethodParameters:
         Name  Flags
      weights  

  public org.apache.lucene.classification.ClassificationResult<java.lang.Boolean> assignClass(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/apache/lucene/classification/ClassificationResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=9, args_size=2
        start local 0 // org.apache.lucene.classification.BooleanPerceptronClassifier this
        start local 1 // java.lang.String text
         0: .line 201
            lconst_0
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            astore 2 /* output */
        start local 2 // java.lang.Long output
         1: .line 202
            aconst_null
            astore 3
            aconst_null
            astore 4
         2: aload 0 /* this */
            getfield org.apache.lucene.classification.BooleanPerceptronClassifier.analyzer:Lorg/apache/lucene/analysis/Analyzer;
            aload 0 /* this */
            getfield org.apache.lucene.classification.BooleanPerceptronClassifier.textFieldName:Ljava/lang/String;
            aload 1 /* text */
            invokevirtual org.apache.lucene.analysis.Analyzer.tokenStream:(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/lucene/analysis/TokenStream;
            astore 5 /* tokenStream */
        start local 5 // org.apache.lucene.analysis.TokenStream tokenStream
         3: .line 203
            aload 5 /* tokenStream */
         4: .line 204
            ldc Lorg/apache/lucene/analysis/tokenattributes/CharTermAttribute;
            invokevirtual org.apache.lucene.analysis.TokenStream.addAttribute:(Ljava/lang/Class;)Lorg/apache/lucene/util/Attribute;
            checkcast org.apache.lucene.analysis.tokenattributes.CharTermAttribute
         5: .line 203
            astore 6 /* charTermAttribute */
        start local 6 // org.apache.lucene.analysis.tokenattributes.CharTermAttribute charTermAttribute
         6: .line 205
            aload 5 /* tokenStream */
            invokevirtual org.apache.lucene.analysis.TokenStream.reset:()V
         7: .line 206
            goto 12
         8: .line 207
      StackMap locals: org.apache.lucene.classification.BooleanPerceptronClassifier java.lang.String java.lang.Long java.lang.Throwable java.lang.Throwable org.apache.lucene.analysis.TokenStream org.apache.lucene.analysis.tokenattributes.CharTermAttribute
      StackMap stack:
            aload 6 /* charTermAttribute */
            invokeinterface org.apache.lucene.analysis.tokenattributes.CharTermAttribute.toString:()Ljava/lang/String;
            astore 7 /* s */
        start local 7 // java.lang.String s
         9: .line 208
            aload 0 /* this */
            getfield org.apache.lucene.classification.BooleanPerceptronClassifier.fst:Lorg/apache/lucene/util/fst/FST;
            new org.apache.lucene.util.BytesRef
            dup
            aload 7 /* s */
            invokespecial org.apache.lucene.util.BytesRef.<init>:(Ljava/lang/CharSequence;)V
            invokestatic org.apache.lucene.util.fst.Util.get:(Lorg/apache/lucene/util/fst/FST;Lorg/apache/lucene/util/BytesRef;)Ljava/lang/Object;
            checkcast java.lang.Long
            astore 8 /* d */
        start local 8 // java.lang.Long d
        10: .line 209
            aload 8 /* d */
            ifnull 12
        11: .line 210
            aload 2 /* output */
            invokevirtual java.lang.Long.longValue:()J
            aload 8 /* d */
            invokevirtual java.lang.Long.longValue:()J
            ladd
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            astore 2 /* output */
        end local 8 // java.lang.Long d
        end local 7 // java.lang.String s
        12: .line 206
      StackMap locals:
      StackMap stack:
            aload 5 /* tokenStream */
            invokevirtual org.apache.lucene.analysis.TokenStream.incrementToken:()Z
            ifne 8
        13: .line 213
            aload 5 /* tokenStream */
            invokevirtual org.apache.lucene.analysis.TokenStream.end:()V
        end local 6 // org.apache.lucene.analysis.tokenattributes.CharTermAttribute charTermAttribute
        14: .line 214
            aload 5 /* tokenStream */
            ifnull 20
            aload 5 /* tokenStream */
            invokevirtual org.apache.lucene.analysis.TokenStream.close:()V
            goto 20
      StackMap locals: org.apache.lucene.classification.BooleanPerceptronClassifier java.lang.String java.lang.Long java.lang.Throwable java.lang.Throwable org.apache.lucene.analysis.TokenStream
      StackMap stack: java.lang.Throwable
        15: astore 3
            aload 5 /* tokenStream */
            ifnull 16
            aload 5 /* tokenStream */
            invokevirtual org.apache.lucene.analysis.TokenStream.close:()V
        end local 5 // org.apache.lucene.analysis.TokenStream tokenStream
      StackMap locals:
      StackMap stack:
        16: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: astore 4
            aload 3
            ifnonnull 18
            aload 4
            astore 3
            goto 19
      StackMap locals:
      StackMap stack:
        18: aload 3
            aload 4
            if_acmpeq 19
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        19: aload 3
            athrow
        20: .line 216
      StackMap locals:
      StackMap stack:
            dconst_1
            ldc -1.0
            aload 0 /* this */
            getfield org.apache.lucene.classification.BooleanPerceptronClassifier.bias:Ljava/lang/Double;
            invokevirtual java.lang.Double.doubleValue:()D
            aload 2 /* output */
            invokevirtual java.lang.Long.doubleValue:()D
            dsub
            invokestatic java.lang.Math.abs:(D)D
            dmul
            aload 0 /* this */
            getfield org.apache.lucene.classification.BooleanPerceptronClassifier.bias:Ljava/lang/Double;
            invokevirtual java.lang.Double.doubleValue:()D
            ddiv
            invokestatic java.lang.Math.exp:(D)D
            dsub
            dstore 3 /* score */
        start local 3 // double score
        21: .line 217
            new org.apache.lucene.classification.ClassificationResult
            dup
            aload 2 /* output */
            invokevirtual java.lang.Long.longValue:()J
            l2d
            aload 0 /* this */
            getfield org.apache.lucene.classification.BooleanPerceptronClassifier.bias:Ljava/lang/Double;
            invokevirtual java.lang.Double.doubleValue:()D
            dcmpl
            iflt 22
            iconst_1
            goto 23
      StackMap locals: org.apache.lucene.classification.BooleanPerceptronClassifier java.lang.String java.lang.Long double
      StackMap stack: new 21 new 21
        22: iconst_0
      StackMap locals: org.apache.lucene.classification.BooleanPerceptronClassifier java.lang.String java.lang.Long double
      StackMap stack: new 21 new 21 int
        23: invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            dload 3 /* score */
            invokespecial org.apache.lucene.classification.ClassificationResult.<init>:(Ljava/lang/Object;D)V
            areturn
        end local 3 // double score
        end local 2 // java.lang.Long output
        end local 1 // java.lang.String text
        end local 0 // org.apache.lucene.classification.BooleanPerceptronClassifier this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   24     0               this  Lorg/apache/lucene/classification/BooleanPerceptronClassifier;
            0   24     1               text  Ljava/lang/String;
            1   24     2             output  Ljava/lang/Long;
            3   16     5        tokenStream  Lorg/apache/lucene/analysis/TokenStream;
            6   14     6  charTermAttribute  Lorg/apache/lucene/analysis/tokenattributes/CharTermAttribute;
            9   12     7                  s  Ljava/lang/String;
           10   12     8                  d  Ljava/lang/Long;
           21   24     3              score  D
      Exception table:
        from    to  target  type
           3    14      15  any
           2    17      17  any
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/lang/String;)Lorg/apache/lucene/classification/ClassificationResult<Ljava/lang/Boolean;>;
    MethodParameters:
      Name  Flags
      text  

  public java.util.List<org.apache.lucene.classification.ClassificationResult<java.lang.Boolean>> getClasses(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.apache.lucene.classification.BooleanPerceptronClassifier this
        start local 1 // java.lang.String text
         0: .line 223
            aconst_null
            areturn
        end local 1 // java.lang.String text
        end local 0 // org.apache.lucene.classification.BooleanPerceptronClassifier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/lucene/classification/BooleanPerceptronClassifier;
            0    1     1  text  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/lang/String;)Ljava/util/List<Lorg/apache/lucene/classification/ClassificationResult<Ljava/lang/Boolean;>;>;
    MethodParameters:
      Name  Flags
      text  

  public java.util.List<org.apache.lucene.classification.ClassificationResult<java.lang.Boolean>> getClasses(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // org.apache.lucene.classification.BooleanPerceptronClassifier this
        start local 1 // java.lang.String text
        start local 2 // int max
         0: .line 229
            aconst_null
            areturn
        end local 2 // int max
        end local 1 // java.lang.String text
        end local 0 // org.apache.lucene.classification.BooleanPerceptronClassifier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/lucene/classification/BooleanPerceptronClassifier;
            0    1     1  text  Ljava/lang/String;
            0    1     2   max  I
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/lang/String;I)Ljava/util/List<Lorg/apache/lucene/classification/ClassificationResult<Ljava/lang/Boolean;>;>;
    MethodParameters:
      Name  Flags
      text  
      max   
}
Signature: Ljava/lang/Object;Lorg/apache/lucene/classification/Classifier<Ljava/lang/Boolean;>;
SourceFile: "BooleanPerceptronClassifier.java"
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  public Occur = org.apache.lucene.search.BooleanClause$Occur of org.apache.lucene.search.BooleanClause
  public Builder = org.apache.lucene.search.BooleanQuery$Builder of org.apache.lucene.search.BooleanQuery
  public final INPUT_TYPE = org.apache.lucene.util.fst.FST$INPUT_TYPE of org.apache.lucene.util.fst.FST