public class org.apache.lucene.classification.BM25NBClassifier implements org.apache.lucene.classification.Classifier<org.apache.lucene.util.BytesRef>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.lucene.classification.BM25NBClassifier
  super_class: java.lang.Object
{
  private final org.apache.lucene.index.IndexReader indexReader;
    descriptor: Lorg/apache/lucene/index/IndexReader;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final java.lang.String classFieldName;
    descriptor: Ljava/lang/String;
    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 org.apache.lucene.search.IndexSearcher indexSearcher;
    descriptor: Lorg/apache/lucene/search/IndexSearcher;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.lucene.search.Query query;
    descriptor: Lorg/apache/lucene/search/Query;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(org.apache.lucene.index.IndexReader, org.apache.lucene.analysis.Analyzer, org.apache.lucene.search.Query, java.lang.String, java.lang.String[]);
    descriptor: (Lorg/apache/lucene/index/IndexReader;Lorg/apache/lucene/analysis/Analyzer;Lorg/apache/lucene/search/Query;Ljava/lang/String;[Ljava/lang/String;)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=4, locals=6, args_size=6
        start local 0 // org.apache.lucene.classification.BM25NBClassifier 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.String classFieldName
        start local 5 // java.lang.String[] textFieldNames
         0: .line 92
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 93
            aload 0 /* this */
            aload 1 /* indexReader */
            putfield org.apache.lucene.classification.BM25NBClassifier.indexReader:Lorg/apache/lucene/index/IndexReader;
         2: .line 94
            aload 0 /* this */
            new org.apache.lucene.search.IndexSearcher
            dup
            aload 0 /* this */
            getfield org.apache.lucene.classification.BM25NBClassifier.indexReader:Lorg/apache/lucene/index/IndexReader;
            invokespecial org.apache.lucene.search.IndexSearcher.<init>:(Lorg/apache/lucene/index/IndexReader;)V
            putfield org.apache.lucene.classification.BM25NBClassifier.indexSearcher:Lorg/apache/lucene/search/IndexSearcher;
         3: .line 95
            aload 0 /* this */
            getfield org.apache.lucene.classification.BM25NBClassifier.indexSearcher:Lorg/apache/lucene/search/IndexSearcher;
            new org.apache.lucene.search.similarities.BM25Similarity
            dup
            invokespecial org.apache.lucene.search.similarities.BM25Similarity.<init>:()V
            invokevirtual org.apache.lucene.search.IndexSearcher.setSimilarity:(Lorg/apache/lucene/search/similarities/Similarity;)V
         4: .line 96
            aload 0 /* this */
            aload 5 /* textFieldNames */
            putfield org.apache.lucene.classification.BM25NBClassifier.textFieldNames:[Ljava/lang/String;
         5: .line 97
            aload 0 /* this */
            aload 4 /* classFieldName */
            putfield org.apache.lucene.classification.BM25NBClassifier.classFieldName:Ljava/lang/String;
         6: .line 98
            aload 0 /* this */
            aload 2 /* analyzer */
            putfield org.apache.lucene.classification.BM25NBClassifier.analyzer:Lorg/apache/lucene/analysis/Analyzer;
         7: .line 99
            aload 0 /* this */
            aload 3 /* query */
            putfield org.apache.lucene.classification.BM25NBClassifier.query:Lorg/apache/lucene/search/Query;
         8: .line 100
            return
        end local 5 // java.lang.String[] textFieldNames
        end local 4 // java.lang.String classFieldName
        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.BM25NBClassifier this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0            this  Lorg/apache/lucene/classification/BM25NBClassifier;
            0    9     1     indexReader  Lorg/apache/lucene/index/IndexReader;
            0    9     2        analyzer  Lorg/apache/lucene/analysis/Analyzer;
            0    9     3           query  Lorg/apache/lucene/search/Query;
            0    9     4  classFieldName  Ljava/lang/String;
            0    9     5  textFieldNames  [Ljava/lang/String;
    MethodParameters:
                Name  Flags
      indexReader     
      analyzer        
      query           
      classFieldName  
      textFieldNames  

  public org.apache.lucene.classification.ClassificationResult<org.apache.lucene.util.BytesRef> assignClass(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/apache/lucene/classification/ClassificationResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.lucene.classification.BM25NBClassifier this
        start local 1 // java.lang.String inputDocument
         0: .line 104
            aload 0 /* this */
            aload 1 /* inputDocument */
            invokevirtual org.apache.lucene.classification.BM25NBClassifier.assignClassNormalizedList:(Ljava/lang/String;)Ljava/util/List;
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.lucene.classification.ClassificationResult
            areturn
        end local 1 // java.lang.String inputDocument
        end local 0 // org.apache.lucene.classification.BM25NBClassifier this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lorg/apache/lucene/classification/BM25NBClassifier;
            0    1     1  inputDocument  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/lang/String;)Lorg/apache/lucene/classification/ClassificationResult<Lorg/apache/lucene/util/BytesRef;>;
    MethodParameters:
               Name  Flags
      inputDocument  

  public java.util.List<org.apache.lucene.classification.ClassificationResult<org.apache.lucene.util.BytesRef>> getClasses(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.apache.lucene.classification.BM25NBClassifier this
        start local 1 // java.lang.String text
         0: .line 109
            aload 0 /* this */
            aload 1 /* text */
            invokevirtual org.apache.lucene.classification.BM25NBClassifier.assignClassNormalizedList:(Ljava/lang/String;)Ljava/util/List;
            astore 2 /* assignedClasses */
        start local 2 // java.util.List assignedClasses
         1: .line 110
            aload 2 /* assignedClasses */
            invokestatic java.util.Collections.sort:(Ljava/util/List;)V
         2: .line 111
            aload 2 /* assignedClasses */
            areturn
        end local 2 // java.util.List assignedClasses
        end local 1 // java.lang.String text
        end local 0 // org.apache.lucene.classification.BM25NBClassifier this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    3     0             this  Lorg/apache/lucene/classification/BM25NBClassifier;
            0    3     1             text  Ljava/lang/String;
            1    3     2  assignedClasses  Ljava/util/List<Lorg/apache/lucene/classification/ClassificationResult<Lorg/apache/lucene/util/BytesRef;>;>;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/lang/String;)Ljava/util/List<Lorg/apache/lucene/classification/ClassificationResult<Lorg/apache/lucene/util/BytesRef;>;>;
    MethodParameters:
      Name  Flags
      text  

  public java.util.List<org.apache.lucene.classification.ClassificationResult<org.apache.lucene.util.BytesRef>> getClasses(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.apache.lucene.classification.BM25NBClassifier this
        start local 1 // java.lang.String text
        start local 2 // int max
         0: .line 116
            aload 0 /* this */
            aload 1 /* text */
            invokevirtual org.apache.lucene.classification.BM25NBClassifier.assignClassNormalizedList:(Ljava/lang/String;)Ljava/util/List;
            astore 3 /* assignedClasses */
        start local 3 // java.util.List assignedClasses
         1: .line 117
            aload 3 /* assignedClasses */
            invokestatic java.util.Collections.sort:(Ljava/util/List;)V
         2: .line 118
            aload 3 /* assignedClasses */
            iconst_0
            iload 2 /* max */
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
            areturn
        end local 3 // java.util.List assignedClasses
        end local 2 // int max
        end local 1 // java.lang.String text
        end local 0 // org.apache.lucene.classification.BM25NBClassifier this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    3     0             this  Lorg/apache/lucene/classification/BM25NBClassifier;
            0    3     1             text  Ljava/lang/String;
            0    3     2              max  I
            1    3     3  assignedClasses  Ljava/util/List<Lorg/apache/lucene/classification/ClassificationResult<Lorg/apache/lucene/util/BytesRef;>;>;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/lang/String;I)Ljava/util/List<Lorg/apache/lucene/classification/ClassificationResult<Lorg/apache/lucene/util/BytesRef;>;>;
    MethodParameters:
      Name  Flags
      text  
      max   

  private java.util.List<org.apache.lucene.classification.ClassificationResult<org.apache.lucene.util.BytesRef>> assignClassNormalizedList(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=8, args_size=2
        start local 0 // org.apache.lucene.classification.BM25NBClassifier this
        start local 1 // java.lang.String inputDocument
         0: .line 129
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* assignedClasses */
        start local 2 // java.util.List assignedClasses
         1: .line 131
            aload 0 /* this */
            getfield org.apache.lucene.classification.BM25NBClassifier.indexReader:Lorg/apache/lucene/index/IndexReader;
            aload 0 /* this */
            getfield org.apache.lucene.classification.BM25NBClassifier.classFieldName:Ljava/lang/String;
            invokestatic org.apache.lucene.index.MultiTerms.getTerms:(Lorg/apache/lucene/index/IndexReader;Ljava/lang/String;)Lorg/apache/lucene/index/Terms;
            astore 3 /* classes */
        start local 3 // org.apache.lucene.index.Terms classes
         2: .line 132
            aload 3 /* classes */
            invokevirtual org.apache.lucene.index.Terms.iterator:()Lorg/apache/lucene/index/TermsEnum;
            astore 4 /* classesEnum */
        start local 4 // org.apache.lucene.index.TermsEnum classesEnum
         3: .line 134
            aload 0 /* this */
            aload 1 /* inputDocument */
            invokevirtual org.apache.lucene.classification.BM25NBClassifier.tokenize:(Ljava/lang/String;)[Ljava/lang/String;
            astore 6 /* tokenizedText */
        start local 6 // java.lang.String[] tokenizedText
         4: .line 135
            goto 8
        start local 5 // org.apache.lucene.util.BytesRef next
         5: .line 136
      StackMap locals: org.apache.lucene.classification.BM25NBClassifier java.lang.String java.util.List org.apache.lucene.index.Terms org.apache.lucene.index.TermsEnum org.apache.lucene.util.BytesRef java.lang.String[]
      StackMap stack:
            aload 5 /* next */
            getfield org.apache.lucene.util.BytesRef.length:I
            ifle 8
         6: .line 137
            new org.apache.lucene.index.Term
            dup
            aload 0 /* this */
            getfield org.apache.lucene.classification.BM25NBClassifier.classFieldName:Ljava/lang/String;
            aload 5 /* next */
            invokespecial org.apache.lucene.index.Term.<init>:(Ljava/lang/String;Lorg/apache/lucene/util/BytesRef;)V
            astore 7 /* term */
        start local 7 // org.apache.lucene.index.Term term
         7: .line 138
            aload 2 /* assignedClasses */
            new org.apache.lucene.classification.ClassificationResult
            dup
            aload 7 /* term */
            invokevirtual org.apache.lucene.index.Term.bytes:()Lorg/apache/lucene/util/BytesRef;
            aload 0 /* this */
            aload 7 /* term */
            invokevirtual org.apache.lucene.classification.BM25NBClassifier.calculateLogPrior:(Lorg/apache/lucene/index/Term;)D
            aload 0 /* this */
            aload 6 /* tokenizedText */
            aload 7 /* term */
            invokevirtual org.apache.lucene.classification.BM25NBClassifier.calculateLogLikelihood:([Ljava/lang/String;Lorg/apache/lucene/index/Term;)D
            dadd
            invokespecial org.apache.lucene.classification.ClassificationResult.<init>:(Ljava/lang/Object;D)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 7 // org.apache.lucene.index.Term term
        end local 5 // org.apache.lucene.util.BytesRef next
         8: .line 135
      StackMap locals: org.apache.lucene.classification.BM25NBClassifier java.lang.String java.util.List org.apache.lucene.index.Terms org.apache.lucene.index.TermsEnum top java.lang.String[]
      StackMap stack:
            aload 4 /* classesEnum */
            invokevirtual org.apache.lucene.index.TermsEnum.next:()Lorg/apache/lucene/util/BytesRef;
            dup
            astore 5 /* next */
        start local 5 // org.apache.lucene.util.BytesRef next
         9: ifnonnull 5
        10: .line 142
            aload 0 /* this */
            aload 2 /* assignedClasses */
            invokevirtual org.apache.lucene.classification.BM25NBClassifier.normClassificationResults:(Ljava/util/List;)Ljava/util/ArrayList;
            areturn
        end local 6 // java.lang.String[] tokenizedText
        end local 5 // org.apache.lucene.util.BytesRef next
        end local 4 // org.apache.lucene.index.TermsEnum classesEnum
        end local 3 // org.apache.lucene.index.Terms classes
        end local 2 // java.util.List assignedClasses
        end local 1 // java.lang.String inputDocument
        end local 0 // org.apache.lucene.classification.BM25NBClassifier this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   11     0             this  Lorg/apache/lucene/classification/BM25NBClassifier;
            0   11     1    inputDocument  Ljava/lang/String;
            1   11     2  assignedClasses  Ljava/util/List<Lorg/apache/lucene/classification/ClassificationResult<Lorg/apache/lucene/util/BytesRef;>;>;
            2   11     3          classes  Lorg/apache/lucene/index/Terms;
            3   11     4      classesEnum  Lorg/apache/lucene/index/TermsEnum;
            5    8     5             next  Lorg/apache/lucene/util/BytesRef;
            9   11     5             next  Lorg/apache/lucene/util/BytesRef;
            4   11     6    tokenizedText  [Ljava/lang/String;
            7    8     7             term  Lorg/apache/lucene/index/Term;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/lang/String;)Ljava/util/List<Lorg/apache/lucene/classification/ClassificationResult<Lorg/apache/lucene/util/BytesRef;>;>;
    MethodParameters:
               Name  Flags
      inputDocument  

  private java.util.ArrayList<org.apache.lucene.classification.ClassificationResult<org.apache.lucene.util.BytesRef>> normClassificationResults(java.util.List<org.apache.lucene.classification.ClassificationResult<org.apache.lucene.util.BytesRef>>);
    descriptor: (Ljava/util/List;)Ljava/util/ArrayList;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=13, args_size=2
        start local 0 // org.apache.lucene.classification.BM25NBClassifier this
        start local 1 // java.util.List assignedClasses
         0: .line 153
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* returnList */
        start local 2 // java.util.ArrayList returnList
         1: .line 154
            aload 1 /* assignedClasses */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 16
         2: .line 155
            aload 1 /* assignedClasses */
            invokestatic java.util.Collections.sort:(Ljava/util/List;)V
         3: .line 157
            aload 1 /* assignedClasses */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.lucene.classification.ClassificationResult
            invokevirtual org.apache.lucene.classification.ClassificationResult.getScore:()D
            dstore 3 /* smax */
        start local 3 // double smax
         4: .line 159
            dconst_0
            dstore 5 /* sumLog */
        start local 5 // double sumLog
         5: .line 161
            aload 1 /* assignedClasses */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 8
            goto 8
      StackMap locals: org.apache.lucene.classification.BM25NBClassifier java.util.List java.util.ArrayList double double top java.util.Iterator
      StackMap stack:
         6: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.lucene.classification.ClassificationResult
            astore 7 /* cr */
        start local 7 // org.apache.lucene.classification.ClassificationResult cr
         7: .line 163
            dload 5 /* sumLog */
            aload 7 /* cr */
            invokevirtual org.apache.lucene.classification.ClassificationResult.getScore:()D
            dload 3 /* smax */
            dsub
            invokestatic java.lang.Math.exp:(D)D
            dadd
            dstore 5 /* sumLog */
        end local 7 // org.apache.lucene.classification.ClassificationResult cr
         8: .line 161
      StackMap locals:
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
         9: .line 166
            dload 3 /* smax */
            dstore 7 /* loga */
        start local 7 // double loga
        10: .line 167
            dload 7 /* loga */
            dload 5 /* sumLog */
            invokestatic java.lang.Math.log:(D)D
            dadd
            dstore 7 /* loga */
        11: .line 170
            aload 1 /* assignedClasses */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 15
      StackMap locals: org.apache.lucene.classification.BM25NBClassifier java.util.List java.util.ArrayList double double double top java.util.Iterator
      StackMap stack:
        12: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.lucene.classification.ClassificationResult
            astore 9 /* cr */
        start local 9 // org.apache.lucene.classification.ClassificationResult cr
        13: .line 171
            aload 9 /* cr */
            invokevirtual org.apache.lucene.classification.ClassificationResult.getScore:()D
            dload 7 /* loga */
            dsub
            dstore 11 /* scoreDiff */
        start local 11 // double scoreDiff
        14: .line 172
            aload 2 /* returnList */
            new org.apache.lucene.classification.ClassificationResult
            dup
            aload 9 /* cr */
            invokevirtual org.apache.lucene.classification.ClassificationResult.getAssignedClass:()Ljava/lang/Object;
            checkcast org.apache.lucene.util.BytesRef
            dload 11 /* scoreDiff */
            invokestatic java.lang.Math.exp:(D)D
            invokespecial org.apache.lucene.classification.ClassificationResult.<init>:(Ljava/lang/Object;D)V
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 11 // double scoreDiff
        end local 9 // org.apache.lucene.classification.ClassificationResult cr
        15: .line 170
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        end local 7 // double loga
        end local 5 // double sumLog
        end local 3 // double smax
        16: .line 175
      StackMap locals: org.apache.lucene.classification.BM25NBClassifier java.util.List java.util.ArrayList
      StackMap stack:
            aload 2 /* returnList */
            areturn
        end local 2 // java.util.ArrayList returnList
        end local 1 // java.util.List assignedClasses
        end local 0 // org.apache.lucene.classification.BM25NBClassifier this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   17     0             this  Lorg/apache/lucene/classification/BM25NBClassifier;
            0   17     1  assignedClasses  Ljava/util/List<Lorg/apache/lucene/classification/ClassificationResult<Lorg/apache/lucene/util/BytesRef;>;>;
            1   17     2       returnList  Ljava/util/ArrayList<Lorg/apache/lucene/classification/ClassificationResult<Lorg/apache/lucene/util/BytesRef;>;>;
            4   16     3             smax  D
            5   16     5           sumLog  D
            7    8     7               cr  Lorg/apache/lucene/classification/ClassificationResult<Lorg/apache/lucene/util/BytesRef;>;
           10   16     7             loga  D
           13   15     9               cr  Lorg/apache/lucene/classification/ClassificationResult<Lorg/apache/lucene/util/BytesRef;>;
           14   15    11        scoreDiff  D
    Signature: (Ljava/util/List<Lorg/apache/lucene/classification/ClassificationResult<Lorg/apache/lucene/util/BytesRef;>;>;)Ljava/util/ArrayList<Lorg/apache/lucene/classification/ClassificationResult<Lorg/apache/lucene/util/BytesRef;>;>;
    MethodParameters:
                 Name  Flags
      assignedClasses  

  private java.lang.String[] tokenize(java.lang.String);
    descriptor: (Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=11, args_size=2
        start local 0 // org.apache.lucene.classification.BM25NBClassifier this
        start local 1 // java.lang.String text
         0: .line 186
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 2 /* result */
        start local 2 // java.util.Collection result
         1: .line 187
            aload 0 /* this */
            getfield org.apache.lucene.classification.BM25NBClassifier.textFieldNames:[Ljava/lang/String;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 18
      StackMap locals: org.apache.lucene.classification.BM25NBClassifier java.lang.String java.util.Collection top int int java.lang.String[]
      StackMap stack:
         2: aload 6
            iload 4
            aaload
            astore 3 /* textFieldName */
        start local 3 // java.lang.String textFieldName
         3: .line 188
            aconst_null
            astore 7
            aconst_null
            astore 8
         4: aload 0 /* this */
            getfield org.apache.lucene.classification.BM25NBClassifier.analyzer:Lorg/apache/lucene/analysis/Analyzer;
            aload 3 /* textFieldName */
            aload 1 /* text */
            invokevirtual org.apache.lucene.analysis.Analyzer.tokenStream:(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/lucene/analysis/TokenStream;
            astore 9 /* tokenStream */
        start local 9 // org.apache.lucene.analysis.TokenStream tokenStream
         5: .line 189
            aload 9 /* tokenStream */
            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
            astore 10 /* charTermAttribute */
        start local 10 // org.apache.lucene.analysis.tokenattributes.CharTermAttribute charTermAttribute
         6: .line 190
            aload 9 /* tokenStream */
            invokevirtual org.apache.lucene.analysis.TokenStream.reset:()V
         7: .line 191
            goto 9
         8: .line 192
      StackMap locals: org.apache.lucene.classification.BM25NBClassifier java.lang.String java.util.Collection java.lang.String int int java.lang.String[] java.lang.Throwable java.lang.Throwable org.apache.lucene.analysis.TokenStream org.apache.lucene.analysis.tokenattributes.CharTermAttribute
      StackMap stack:
            aload 2 /* result */
            aload 10 /* charTermAttribute */
            invokeinterface org.apache.lucene.analysis.tokenattributes.CharTermAttribute.toString:()Ljava/lang/String;
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
         9: .line 191
      StackMap locals:
      StackMap stack:
            aload 9 /* tokenStream */
            invokevirtual org.apache.lucene.analysis.TokenStream.incrementToken:()Z
            ifne 8
        10: .line 194
            aload 9 /* tokenStream */
            invokevirtual org.apache.lucene.analysis.TokenStream.end:()V
        end local 10 // org.apache.lucene.analysis.tokenattributes.CharTermAttribute charTermAttribute
        11: .line 195
            aload 9 /* tokenStream */
            ifnull 17
            aload 9 /* tokenStream */
            invokevirtual org.apache.lucene.analysis.TokenStream.close:()V
            goto 17
      StackMap locals: org.apache.lucene.classification.BM25NBClassifier java.lang.String java.util.Collection java.lang.String int int java.lang.String[] java.lang.Throwable java.lang.Throwable org.apache.lucene.analysis.TokenStream
      StackMap stack: java.lang.Throwable
        12: astore 7
            aload 9 /* tokenStream */
            ifnull 13
            aload 9 /* tokenStream */
            invokevirtual org.apache.lucene.analysis.TokenStream.close:()V
        end local 9 // org.apache.lucene.analysis.TokenStream tokenStream
      StackMap locals:
      StackMap stack:
        13: aload 7
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: astore 8
            aload 7
            ifnonnull 15
            aload 8
            astore 7
            goto 16
      StackMap locals:
      StackMap stack:
        15: aload 7
            aload 8
            if_acmpeq 16
            aload 7
            aload 8
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        16: aload 7
            athrow
        end local 3 // java.lang.String textFieldName
        17: .line 187
      StackMap locals: org.apache.lucene.classification.BM25NBClassifier java.lang.String java.util.Collection top int int java.lang.String[]
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        18: iload 4
            iload 5
            if_icmplt 2
        19: .line 197
            aload 2 /* result */
            aload 2 /* result */
            invokeinterface java.util.Collection.size:()I
            anewarray java.lang.String
            invokeinterface java.util.Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            areturn
        end local 2 // java.util.Collection result
        end local 1 // java.lang.String text
        end local 0 // org.apache.lucene.classification.BM25NBClassifier this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   20     0               this  Lorg/apache/lucene/classification/BM25NBClassifier;
            0   20     1               text  Ljava/lang/String;
            1   20     2             result  Ljava/util/Collection<Ljava/lang/String;>;
            3   17     3      textFieldName  Ljava/lang/String;
            5   13     9        tokenStream  Lorg/apache/lucene/analysis/TokenStream;
            6   11    10  charTermAttribute  Lorg/apache/lucene/analysis/tokenattributes/CharTermAttribute;
      Exception table:
        from    to  target  type
           5    11      12  any
           4    14      14  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      text  

  private double calculateLogLikelihood(java.lang.String[], org.apache.lucene.index.Term);
    descriptor: ([Ljava/lang/String;Lorg/apache/lucene/index/Term;)D
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=9, args_size=3
        start local 0 // org.apache.lucene.classification.BM25NBClassifier this
        start local 1 // java.lang.String[] tokens
        start local 2 // org.apache.lucene.index.Term term
         0: .line 201
            dconst_0
            dstore 3 /* result */
        start local 3 // double result
         1: .line 202
            aload 1 /* tokens */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 5
      StackMap locals: org.apache.lucene.classification.BM25NBClassifier java.lang.String[] org.apache.lucene.index.Term double top int int java.lang.String[]
      StackMap stack:
         2: aload 8
            iload 6
            aaload
            astore 5 /* word */
        start local 5 // java.lang.String word
         3: .line 203
            dload 3 /* result */
            aload 0 /* this */
            aload 2 /* term */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 5 /* word */
            aastore
            invokevirtual org.apache.lucene.classification.BM25NBClassifier.getTermProbForClass:(Lorg/apache/lucene/index/Term;[Ljava/lang/String;)D
            invokestatic java.lang.Math.log:(D)D
            dadd
            dstore 3 /* result */
        end local 5 // java.lang.String word
         4: .line 202
            iinc 6 1
      StackMap locals:
      StackMap stack:
         5: iload 6
            iload 7
            if_icmplt 2
         6: .line 205
            dload 3 /* result */
            dreturn
        end local 3 // double result
        end local 2 // org.apache.lucene.index.Term term
        end local 1 // java.lang.String[] tokens
        end local 0 // org.apache.lucene.classification.BM25NBClassifier this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lorg/apache/lucene/classification/BM25NBClassifier;
            0    7     1  tokens  [Ljava/lang/String;
            0    7     2    term  Lorg/apache/lucene/index/Term;
            1    7     3  result  D
            3    4     5    word  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      tokens  
      term    

  private double getTermProbForClass(org.apache.lucene.index.Term, java.lang.String[]);
    descriptor: (Lorg/apache/lucene/index/Term;[Ljava/lang/String;)D
    flags: (0x0082) ACC_PRIVATE, ACC_VARARGS
    Code:
      stack=9, locals=12, args_size=3
        start local 0 // org.apache.lucene.classification.BM25NBClassifier this
        start local 1 // org.apache.lucene.index.Term classTerm
        start local 2 // java.lang.String[] words
         0: .line 209
            new org.apache.lucene.search.BooleanQuery$Builder
            dup
            invokespecial org.apache.lucene.search.BooleanQuery$Builder.<init>:()V
            astore 3 /* builder */
        start local 3 // org.apache.lucene.search.BooleanQuery$Builder builder
         1: .line 210
            aload 3 /* builder */
            new org.apache.lucene.search.BooleanClause
            dup
            new org.apache.lucene.search.TermQuery
            dup
            aload 1 /* classTerm */
            invokespecial org.apache.lucene.search.TermQuery.<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
         2: .line 211
            aload 0 /* this */
            getfield org.apache.lucene.classification.BM25NBClassifier.textFieldNames:[Ljava/lang/String;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 10
      StackMap locals: org.apache.lucene.classification.BM25NBClassifier org.apache.lucene.index.Term java.lang.String[] org.apache.lucene.search.BooleanQuery$Builder top int int java.lang.String[]
      StackMap stack:
         3: aload 7
            iload 5
            aaload
            astore 4 /* textFieldName */
        start local 4 // java.lang.String textFieldName
         4: .line 212
            aload 2 /* words */
            dup
            astore 11
            arraylength
            istore 10
            iconst_0
            istore 9
            goto 8
      StackMap locals: org.apache.lucene.classification.BM25NBClassifier org.apache.lucene.index.Term java.lang.String[] org.apache.lucene.search.BooleanQuery$Builder java.lang.String int int java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         5: aload 11
            iload 9
            aaload
            astore 8 /* word */
        start local 8 // java.lang.String word
         6: .line 213
            aload 3 /* builder */
            new org.apache.lucene.search.BooleanClause
            dup
            new org.apache.lucene.search.TermQuery
            dup
            new org.apache.lucene.index.Term
            dup
            aload 4 /* textFieldName */
            aload 8 /* word */
            invokespecial org.apache.lucene.index.Term.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            invokespecial org.apache.lucene.search.TermQuery.<init>:(Lorg/apache/lucene/index/Term;)V
            getstatic org.apache.lucene.search.BooleanClause$Occur.SHOULD: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
        end local 8 // java.lang.String word
         7: .line 212
            iinc 9 1
      StackMap locals:
      StackMap stack:
         8: iload 9
            iload 10
            if_icmplt 5
        end local 4 // java.lang.String textFieldName
         9: .line 211
            iinc 5 1
      StackMap locals: org.apache.lucene.classification.BM25NBClassifier org.apache.lucene.index.Term java.lang.String[] org.apache.lucene.search.BooleanQuery$Builder top int int java.lang.String[]
      StackMap stack:
        10: iload 5
            iload 6
            if_icmplt 3
        11: .line 216
            aload 0 /* this */
            getfield org.apache.lucene.classification.BM25NBClassifier.query:Lorg/apache/lucene/search/Query;
            ifnull 13
        12: .line 217
            aload 3 /* builder */
            aload 0 /* this */
            getfield org.apache.lucene.classification.BM25NBClassifier.query:Lorg/apache/lucene/search/Query;
            getstatic org.apache.lucene.search.BooleanClause$Occur.MUST:Lorg/apache/lucene/search/BooleanClause$Occur;
            invokevirtual org.apache.lucene.search.BooleanQuery$Builder.add:(Lorg/apache/lucene/search/Query;Lorg/apache/lucene/search/BooleanClause$Occur;)Lorg/apache/lucene/search/BooleanQuery$Builder;
            pop
        13: .line 219
      StackMap locals: org.apache.lucene.classification.BM25NBClassifier org.apache.lucene.index.Term java.lang.String[] org.apache.lucene.search.BooleanQuery$Builder
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.classification.BM25NBClassifier.indexSearcher:Lorg/apache/lucene/search/IndexSearcher;
            aload 3 /* builder */
            invokevirtual org.apache.lucene.search.BooleanQuery$Builder.build:()Lorg/apache/lucene/search/BooleanQuery;
            iconst_1
            invokevirtual org.apache.lucene.search.IndexSearcher.search:(Lorg/apache/lucene/search/Query;I)Lorg/apache/lucene/search/TopDocs;
            astore 4 /* search */
        start local 4 // org.apache.lucene.search.TopDocs search
        14: .line 220
            aload 4 /* search */
            getfield org.apache.lucene.search.TopDocs.totalHits:Lorg/apache/lucene/search/TotalHits;
            getfield org.apache.lucene.search.TotalHits.value:J
            lconst_0
            lcmp
            ifle 15
            aload 4 /* search */
            getfield org.apache.lucene.search.TopDocs.scoreDocs:[Lorg/apache/lucene/search/ScoreDoc;
            iconst_0
            aaload
            getfield org.apache.lucene.search.ScoreDoc.score:F
            goto 16
      StackMap locals: org.apache.lucene.search.TopDocs
      StackMap stack:
        15: fconst_1
      StackMap locals:
      StackMap stack: float
        16: f2d
            dreturn
        end local 4 // org.apache.lucene.search.TopDocs search
        end local 3 // org.apache.lucene.search.BooleanQuery$Builder builder
        end local 2 // java.lang.String[] words
        end local 1 // org.apache.lucene.index.Term classTerm
        end local 0 // org.apache.lucene.classification.BM25NBClassifier this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   17     0           this  Lorg/apache/lucene/classification/BM25NBClassifier;
            0   17     1      classTerm  Lorg/apache/lucene/index/Term;
            0   17     2          words  [Ljava/lang/String;
            1   17     3        builder  Lorg/apache/lucene/search/BooleanQuery$Builder;
            4    9     4  textFieldName  Ljava/lang/String;
            6    7     8           word  Ljava/lang/String;
           14   17     4         search  Lorg/apache/lucene/search/TopDocs;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      classTerm  
      words      

  private double calculateLogPrior(org.apache.lucene.index.Term);
    descriptor: (Lorg/apache/lucene/index/Term;)D
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.apache.lucene.classification.BM25NBClassifier this
        start local 1 // org.apache.lucene.index.Term term
         0: .line 224
            new org.apache.lucene.search.TermQuery
            dup
            aload 1 /* term */
            invokespecial org.apache.lucene.search.TermQuery.<init>:(Lorg/apache/lucene/index/Term;)V
            astore 2 /* termQuery */
        start local 2 // org.apache.lucene.search.TermQuery termQuery
         1: .line 225
            new org.apache.lucene.search.BooleanQuery$Builder
            dup
            invokespecial org.apache.lucene.search.BooleanQuery$Builder.<init>:()V
            astore 3 /* bq */
        start local 3 // org.apache.lucene.search.BooleanQuery$Builder bq
         2: .line 226
            aload 3 /* bq */
            aload 2 /* termQuery */
            getstatic org.apache.lucene.search.BooleanClause$Occur.MUST:Lorg/apache/lucene/search/BooleanClause$Occur;
            invokevirtual org.apache.lucene.search.BooleanQuery$Builder.add:(Lorg/apache/lucene/search/Query;Lorg/apache/lucene/search/BooleanClause$Occur;)Lorg/apache/lucene/search/BooleanQuery$Builder;
            pop
         3: .line 227
            aload 0 /* this */
            getfield org.apache.lucene.classification.BM25NBClassifier.query:Lorg/apache/lucene/search/Query;
            ifnull 5
         4: .line 228
            aload 3 /* bq */
            aload 0 /* this */
            getfield org.apache.lucene.classification.BM25NBClassifier.query:Lorg/apache/lucene/search/Query;
            getstatic org.apache.lucene.search.BooleanClause$Occur.MUST:Lorg/apache/lucene/search/BooleanClause$Occur;
            invokevirtual org.apache.lucene.search.BooleanQuery$Builder.add:(Lorg/apache/lucene/search/Query;Lorg/apache/lucene/search/BooleanClause$Occur;)Lorg/apache/lucene/search/BooleanQuery$Builder;
            pop
         5: .line 230
      StackMap locals: org.apache.lucene.search.TermQuery org.apache.lucene.search.BooleanQuery$Builder
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.classification.BM25NBClassifier.indexSearcher:Lorg/apache/lucene/search/IndexSearcher;
            aload 3 /* bq */
            invokevirtual org.apache.lucene.search.BooleanQuery$Builder.build:()Lorg/apache/lucene/search/BooleanQuery;
            iconst_1
            invokevirtual org.apache.lucene.search.IndexSearcher.search:(Lorg/apache/lucene/search/Query;I)Lorg/apache/lucene/search/TopDocs;
            astore 4 /* topDocs */
        start local 4 // org.apache.lucene.search.TopDocs topDocs
         6: .line 231
            aload 4 /* topDocs */
            getfield org.apache.lucene.search.TopDocs.totalHits:Lorg/apache/lucene/search/TotalHits;
            getfield org.apache.lucene.search.TotalHits.value:J
            lconst_0
            lcmp
            ifle 7
            aload 4 /* topDocs */
            getfield org.apache.lucene.search.TopDocs.scoreDocs:[Lorg/apache/lucene/search/ScoreDoc;
            iconst_0
            aaload
            getfield org.apache.lucene.search.ScoreDoc.score:F
            f2d
            invokestatic java.lang.Math.log:(D)D
            goto 8
      StackMap locals: org.apache.lucene.search.TopDocs
      StackMap stack:
         7: dconst_0
      StackMap locals:
      StackMap stack: double
         8: dreturn
        end local 4 // org.apache.lucene.search.TopDocs topDocs
        end local 3 // org.apache.lucene.search.BooleanQuery$Builder bq
        end local 2 // org.apache.lucene.search.TermQuery termQuery
        end local 1 // org.apache.lucene.index.Term term
        end local 0 // org.apache.lucene.classification.BM25NBClassifier this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Lorg/apache/lucene/classification/BM25NBClassifier;
            0    9     1       term  Lorg/apache/lucene/index/Term;
            1    9     2  termQuery  Lorg/apache/lucene/search/TermQuery;
            2    9     3         bq  Lorg/apache/lucene/search/BooleanQuery$Builder;
            6    9     4    topDocs  Lorg/apache/lucene/search/TopDocs;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      term  
}
Signature: Ljava/lang/Object;Lorg/apache/lucene/classification/Classifier<Lorg/apache/lucene/util/BytesRef;>;
SourceFile: "BM25NBClassifier.java"
InnerClasses:
  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