/*     */ public CompiledEstimator(ObjectInput in)
     /*     */ throws ClassNotFoundException, IOException
       /*     */ {
   /* 144 */ this.mTokenCategorizer = ((TokenCategorizer) in.readObject());
   /*     */
   /* 146 */ this.mTagSymbolTable = ((SymbolTable) in.readObject());
   /* 147 */ this.mTokenSymbolTable = ((SymbolTable) in.readObject());
   /*     */
   /* 150 */ this.mTagTrie = new EstimatorTrie(in);
   /* 151 */ this.mTokenTrie = new EstimatorTrie(in);
   /* 152 */ this.mLogUniformVocabEstimate = in.readDouble();
   /*     */
   /* 154 */ int numSymbols = this.mTagSymbolTable.numSymbols();
   /* 155 */ this.mConvertToInterior = new int[numSymbols];
   /* 156 */ this.mCannotFollow = new boolean[numSymbols][numSymbols];
   /* 157 */ int numTags = this.mTagSymbolTable.numSymbols();
   /* 158 */ List starts = new ArrayList();
   /* 159 */ List interiors = new ArrayList();
   /* 160 */ for (int tagID = 0; tagID < numTags; tagID++) {
     /* 161 */ String tag = idToTag(tagID);
     /* 162 */ this.mConvertToInterior[tagID] = tagToInteriorID(tag);
     /* 163 */ if (tagID != this.mConvertToInterior[tagID]) {
       /* 164 */ interiors.add(Integer.valueOf(this.mConvertToInterior[tagID]));
       /* 165 */ starts.add(Integer.valueOf(tagID));
       /*     */ }
     /* 167 */ for (int tagMinus1ID = 0; tagMinus1ID < numTags; tagMinus1ID++) {
       /* 168 */ this.mCannotFollow[tagID][tagMinus1ID] =
           Tags.illegalSequence(idToTag(tagMinus1ID), tag);
       /*     */ }
     /*     */ }
   /* 171 */ this.mStart = convertToIntArray(starts);
   /* 172 */ this.mInterior = convertToIntArray(interiors);
   /*     */ }