public void print(List<String> IdsToStrings,String pad) {
     Iterator<T> biIter=BigramCounts.keySet().iterator();
     T myValue;
     UnigramCountsModel<K> model;
     int getVal;
     if (pad==null) {
       pad="";
     }
	 while (biIter.hasNext()) {
	   myValue=biIter.next();
 	   model=BigramCounts.get(myValue);
       if ((IdsToStrings!=null) && (myValue instanceof Integer)) {
         getVal=((Integer)myValue).intValue();
         System.out.println(pad+"Bigram<"+myValue.getClass().getName()+">:"+IdsToStrings.get(getVal)+"|+|");
       }
       else if (myValue instanceof BigramModel) {
         System.out.println(pad+"Bigram<"+myValue.getClass().getName()+">:"+((BigramModel)myValue).toString(IdsToStrings)+"|+|");	
        }
       else {
         System.out.println(pad+"Bigram<"+myValue.getClass().getName()+">:"+myValue+"|+|");
       }
 	   model.print(IdsToStrings,pad+pad);
	 }
   }