code: public boolean add(Object o) {
      	if (isAddedCompletely()) {
      		throw new IllegalStateException("This LargeElement has already been added to the Document.");
      	}
          try {
              Element element = (Element) o;
              if (element.type() == Element.SECTION) {
                  Section section = (Section) o;
                  section.setNumbers(++subsections, numbers);
                  return super.add(section);
              }
              else if (o instanceof MarkedSection && ((MarkedObject)o).element.type() == Element.SECTION) {
              	MarkedSection mo = (MarkedSection)o;
              	Section section = (Section)mo.element;
              	section.setNumbers(++subsections, numbers);
              	return super.add(mo);
              }
              else if (element.isNestable()) {
              	return super.add(o);
              }
              else {
                  throw new ClassCastException("You can't add a " + element.getClass().getName() + " to a Section.");
              }
          }
          catch(ClassCastException cce) {
              throw new ClassCastException("Insertion of illegal Element: " + cce.getMessage());
          }
      }
docs: Adds a <CODE>Paragraph</CODE>, <CODE>List</CODE>, <CODE>Table</CODE> or another <CODE>Section</CODE>
  to this <CODE>Section</CODE>.
  
  @param	o   	an object of type <CODE>Paragraph</CODE>, <CODE>List</CODE>, <CODE>Table</CODE> or another <CODE>Section</CODE>
  @return	a boolean
  @throws	ClassCastException if the object is not a <CODE>Paragraph</CODE>, <CODE>List</CODE>, <CODE>Table</CODE> or <CODE>Section</CODE>