@Override
  public void writeAll(ShapeChangeResult r) {

    if (printed || diagnosticsOnly) {
      return;
    }

    Properties outputFormat = OutputPropertiesFactory.getDefaultMethodProperties("xml");
    outputFormat.setProperty("indent", "yes");
    outputFormat.setProperty("{http://xml.apache.org/xalan}indent-amount", "2");
    outputFormat.setProperty("encoding", "UTF-8");

    /*
     * Uses OutputStreamWriter instead of FileWriter to set character
     * encoding (see doc in Serializer.setWriter and FileWriter)
     */
    try {
      File repXsd = new File(outputDirectoryFile, outputFilename);

      BufferedWriter writer =
          new BufferedWriter(new OutputStreamWriter(new FileOutputStream(repXsd), "UTF-8"));

      Serializer serializer = SerializerFactory.getSerializer(outputFormat);
      serializer.setWriter(writer);
      serializer.asDOMSerializer().serialize(document);

      writer.close();

      r.addResult(getTargetID(), outputDirectory, outputFilename, schemaTargetNamespace);

    } catch (IOException ioe) {

      r.addError(this, 3, outputFilename, ioe.getMessage());
    }

    printed = true;
  }