/**
  * add a new AbstractNum and return its AbstractNumID
  *
  * @param abstractNum
  */
 public BigInteger addAbstractNum(XWPFAbstractNum abstractNum) {
   int pos = abstractNums.size();
   ctNumbering.addNewAbstractNum();
   abstractNum.getAbstractNum().setAbstractNumId(BigInteger.valueOf(pos));
   ctNumbering.setAbstractNumArray(pos, abstractNum.getAbstractNum());
   abstractNums.add(abstractNum);
   return abstractNum.getCTAbstractNum().getAbstractNumId();
 }
 /**
  * get AbstractNum by abstractNumID
  *
  * @param abstractNumID
  * @return abstractNum with abstractNumId if no abstractNum exists with that abstractNumID null
  *     will be returned
  */
 public XWPFAbstractNum getAbstractNum(BigInteger abstractNumID) {
   for (XWPFAbstractNum abstractNum : abstractNums) {
     if (abstractNum.getAbstractNum().getAbstractNumId().equals(abstractNumID)) {
       return abstractNum;
     }
   }
   return null;
 }
 /**
  * Compare AbstractNum with abstractNums of this numbering document. If the content of abstractNum
  * equals with an abstractNum of the List in numbering the BigInteger Value of it will be
  * returned. If no equal abstractNum is existing null will be returned
  *
  * @param abstractNum
  * @return BigInteger
  */
 public BigInteger getIdOfAbstractNum(XWPFAbstractNum abstractNum) {
   CTAbstractNum copy = (CTAbstractNum) abstractNum.getCTAbstractNum().copy();
   XWPFAbstractNum newAbstractNum = new XWPFAbstractNum(copy, this);
   int i;
   for (i = 0; i < abstractNums.size(); i++) {
     newAbstractNum.getCTAbstractNum().setAbstractNumId(BigInteger.valueOf(i));
     newAbstractNum.setNumbering(this);
     if (newAbstractNum.getCTAbstractNum().valueEquals(abstractNums.get(i).getCTAbstractNum())) {
       return newAbstractNum.getCTAbstractNum().getAbstractNumId();
     }
   }
   return null;
 }