private void makeParsers() {
    if (pd == null) {
      throw new IllegalArgumentException("Error loading parser data: pd null");
    }
    Numberer.setNumberers(pd.numbs);
    BinaryGrammar bg = pd.bg;
    bg.splitRules();
    UnaryGrammar ug = pd.ug;
    Lexicon lex = pd.lex;
    DependencyGrammar dg = pd.dg;
    //  This checks to see if commandline options for the arabic tokenizer, in which case they
    //      override the serialized versions.
    if(pd.pt.tlpParams.treebankLanguagePack() instanceof ArabicTreebankLanguagePack){
      ArabicTreebankLanguagePack tlp = ((ArabicTreebankLanguagePack) op.tlpParams.treebankLanguagePack());
      if ( tlp.getTokenizerFactory() != null ){
        try {
          ((ArabicTreebankLanguagePack) pd.pt.tlpParams.treebankLanguagePack()).setTokenizerFactory(tlp.getTokenizerFactory());
        } catch( Exception e){
          System.err.println(" Attempt to apply command line options to serialized parser failed; " + e.toString() );
        }
      }
    }
    op = pd.pt;
    if (op.doPCFG) {
      if (Test.iterativeCKY) {
        pparser = new IterativeCKYPCFGParser(bg, ug, lex, op);
      } else {
        pparser = new ExhaustivePCFGParser(bg, ug, lex, op);
      }
    }
    if (op.doDep) {
      dg.setLexicon(lex);
      if ( ! Test.useFastFactored) {
        dparser = new ExhaustiveDependencyParser(dg, lex, op);
      }
      if (op.doPCFG) {
        if (Test.useFastFactored) {
          MLEDependencyGrammar mledg = (MLEDependencyGrammar) dg;
          int numToFind = 1;
          if (Test.printFactoredKGood > 0) {
            numToFind = Test.printFactoredKGood;
          }
          bparser = new FastFactoredParser(pparser, mledg, op, numToFind);
        } else {
          Scorer scorer = new TwinScorer(pparser, dparser);
          //Scorer scorer = parser;
          if (Test.useN5) {
            bparser = new BiLexPCFGParser.N5BiLexPCFGParser(scorer, pparser, dparser, bg, ug, dg, lex, op);
          } else {
            bparser = new BiLexPCFGParser(scorer, pparser, dparser, bg, ug, dg, lex, op);
          }
        }
      }
    }
    fallbackToPCFG = true;

    debinarizer = new Debinarizer(op.forceCNF);
    subcategoryStripper = op.tlpParams.subcategoryStripper();
  }