@Override
  public String toString() {
    final XMLBuffer result = new XMLBuffer();

    result.addLineSeparator();
    result.addLineSeparator();

    Class<? extends GlueAuxiliary> lastAuxiliaryClass = null;
    for (GlueAuxiliary auxiliary : document.getHeader()) {
      if ((lastAuxiliaryClass != null) && (lastAuxiliaryClass != auxiliary.getClass())) {
        // We insert an extra empty line to separate
        // sequences of processing instructions, comments ...
        result.addLineSeparator();
      }
      serializeAuxiliary(auxiliary, result);
      result.addLineSeparator();
      lastAuxiliaryClass = auxiliary.getClass();
    }

    if (lastAuxiliaryClass != null) {
      result.addLineSeparator();
    }

    serializeElement(document.getRootElement(), result);
    result.addLineSeparator();

    return result.toString();
  }
 public GlueSerializer(GlueDocument document) {
   assert document.getRootElement() != null;
   this.document = document;
 }