<?xml version="1.0" encoding="UTF-8"?> 
<java version="1.6.0" class="java.beans.XMLDecoder"> 
 <object class="com.horstmann.violet.ClassDiagramGraph"> 
  <void method="addNode"> 
   <object class="com.horstmann.violet.PackageNode"> 
    <void method="addChild"> 
     <object id="InterfaceNode0" class="com.horstmann.violet.InterfaceNode"> 
      <void property="name"> 
       <void property="text"> 
        <string>«interface»
BurnSource</string> 
       </void> 
      </void> 
     </object> 
    </void> 
    <void property="name"> 
     <string>libburn</string> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>600.0</double> 
     <double>50.0</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object idref="InterfaceNode0"/> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>612.4370214406964</double> 
     <double>81.3237865499184</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode0" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>Ecma119Source</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>604.1172144213822</double> 
     <double>242.59825146055505</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode1" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>WriterState</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>861.1034292438676</double> 
     <double>244.31119796826698</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode2" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>FilesWriterSt</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>984.2531292100068</double> 
     <double>359.95094883087904</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode3" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>VolDescWriterSt</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>717.2457054234224</double> 
     <double>357.4185959653686</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode4" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>DirInfoWriterSt</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>854.6043620021998</double> 
     <double>355.85097462036043</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode5" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>Ecma119Image</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>392.3294860655768</double> 
     <double>240.39714472372754</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="NoteNode0" class="com.horstmann.violet.NoteNode"> 
    <void property="text"> 
     <void property="text"> 
      <string>The context data for image burn sources, contains
references to the tree, creation options...</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>261.45257180386454</double> 
     <double>85.80450046553075</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode6" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>Ecma119Node</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>291.8219414851778</double> 
     <double>612.806815288254</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="InterfaceNode1" class="com.horstmann.violet.InterfaceNode"> 
    <void property="methods"> 
     <void property="text"> 
      <string>init()
write_voldesc()
write_dir_info()</string> 
     </void> 
    </void> 
    <void property="name"> 
     <void property="text"> 
      <string>«interface»
ImageWriter</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>401.9520048709197</double> 
     <double>344.8700633507891</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode7" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>JolietNode</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>409.0872475609359</double> 
     <double>614.8200784564067</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode8" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>FileRegistry</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>718.2810974616434</double> 
     <double>459.0339463910502</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode9" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>Ecma119Writer</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>273.51763645062584</double> 
     <double>489.95333138112096</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode10" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>JolietWriter</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>404.3304191009253</double> 
     <double>485.1965029211101</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode11" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>ElToritoWriter</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>512.5482665661723</double> 
     <double>485.19650292111</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode12" class="com.horstmann.violet.ClassNode"> 
    <void property="attributes"> 
     <void property="text"> 
      <string>size : off_t
block : uint32_t</string> 
     </void> 
    </void> 
    <void property="name"> 
     <void property="text"> 
      <string>IsoFile</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>720.659511691649</double> 
     <double>568.4410009713001</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="InterfaceNode2" class="com.horstmann.violet.InterfaceNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>«interface»
Stream</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>909.7434429770816</double> 
     <double>580.3330721213274</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="NoteNode1" class="com.horstmann.violet.NoteNode"> 
    <void property="text"> 
     <void property="text"> 
      <string>ImageWriter goal is to encapsulate the output
of image blocks related to one &quot;specification&quot;,
i.e. we will have an implementation for ECMA-119/RR,
other for Joliet...

Note that having different implementations for things that 
need to be written in the same block has no utility, i.e. RR 
and ECMA-119 must share its Writer implementation.

Note also that while this provides considerable encapsulation
the provided abstraction is really partial: In the relation
with WriterState the encapsulation is quite good, each
concrete state know what method to call here (notice that
this interface is also quite coupled with state). However,
with respect to Ecma119Image the abstration only refers
to implementation, as the Ecma119Image needs to know
about the ImageWriter implementations. This can&apos;t be 
avoided, as Ecma119Image has to be responsible of the
instantation in the correct order and following the user 
needs.

</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>2.3784142300054896</double> 
     <double>160.54296052536733</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="NoteNode2" class="com.horstmann.violet.NoteNode"> 
    <void property="text"> 
     <void property="text"> 
      <string>The files are registered into the file registry, that will take care
about the written of content.</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>286.59891471565567</double> 
     <double>708.7674405416217</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="NoteNode3" class="com.horstmann.violet.NoteNode"> 
    <void property="text"> 
     <void property="text"> 
      <string>Each state will invoque property method in each of
the ImageWriters. Some writers can return without
outputting anything. It is possible that when dealing
with UDF or other specification we would need new
states and methods in ImageWriter</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>765.8493820617523</double> 
     <double>132.001989765302</double> 
    </void> 
   </object> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="bentStyle"> 
     <object class="com.horstmann.violet.BentStyle" field="VHV"/> 
    </void> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/> 
    </void> 
    <void property="lineStyle"> 
     <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> 
    </void> 
   </object> 
   <object idref="ClassNode0"/> 
   <object idref="InterfaceNode0"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="bentStyle"> 
     <object class="com.horstmann.violet.BentStyle" field="VHV"/> 
    </void> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/> 
    </void> 
    <void property="lineStyle"> 
     <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> 
    </void> 
   </object> 
   <object idref="ClassNode3"/> 
   <object idref="ClassNode1"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="bentStyle"> 
     <object class="com.horstmann.violet.BentStyle" field="VHV"/> 
    </void> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/> 
    </void> 
    <void property="lineStyle"> 
     <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> 
    </void> 
   </object> 
   <object idref="ClassNode4"/> 
   <object idref="ClassNode1"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="bentStyle"> 
     <object class="com.horstmann.violet.BentStyle" field="VHV"/> 
    </void> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/> 
    </void> 
    <void property="lineStyle"> 
     <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> 
    </void> 
   </object> 
   <object idref="ClassNode2"/> 
   <object idref="ClassNode1"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="bentStyle"> 
     <object class="com.horstmann.violet.BentStyle" field="HVH"/> 
    </void> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="V"/> 
    </void> 
    <void property="startArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="DIAMOND"/> 
    </void> 
   </object> 
   <object idref="ClassNode0"/> 
   <object idref="ClassNode1"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.NoteEdge"/> 
   <object idref="ClassNode5"/> 
   <object idref="NoteNode0"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="V"/> 
    </void> 
    <void property="lineStyle"> 
     <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> 
    </void> 
   </object> 
   <object idref="ClassNode0"/> 
   <object idref="ClassNode5"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="bentStyle"> 
     <object class="com.horstmann.violet.BentStyle" field="VHV"/> 
    </void> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/> 
    </void> 
    <void property="lineStyle"> 
     <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> 
    </void> 
   </object> 
   <object idref="ClassNode10"/> 
   <object idref="InterfaceNode1"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="bentStyle"> 
     <object class="com.horstmann.violet.BentStyle" field="VHV"/> 
    </void> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/> 
    </void> 
    <void property="lineStyle"> 
     <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> 
    </void> 
   </object> 
   <object idref="ClassNode9"/> 
   <object idref="InterfaceNode1"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="bentStyle"> 
     <object class="com.horstmann.violet.BentStyle" field="VHV"/> 
    </void> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/> 
    </void> 
    <void property="lineStyle"> 
     <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> 
    </void> 
   </object> 
   <object idref="ClassNode11"/> 
   <object idref="InterfaceNode1"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="bentStyle"> 
     <object class="com.horstmann.violet.BentStyle" field="HVH"/> 
    </void> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="V"/> 
    </void> 
    <void property="endLabel"> 
     <string>*</string> 
    </void> 
    <void property="startArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="BLACK_DIAMOND"/> 
    </void> 
   </object> 
   <object idref="ClassNode5"/> 
   <object idref="InterfaceNode1"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="bentStyle"> 
     <object class="com.horstmann.violet.BentStyle" field="HVH"/> 
    </void> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="V"/> 
    </void> 
   </object> 
   <object idref="ClassNode9"/> 
   <object idref="ClassNode6"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="bentStyle"> 
     <object class="com.horstmann.violet.BentStyle" field="HVH"/> 
    </void> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="V"/> 
    </void> 
   </object> 
   <object idref="ClassNode10"/> 
   <object idref="ClassNode7"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="bentStyle"> 
     <object class="com.horstmann.violet.BentStyle" field="HVH"/> 
    </void> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="V"/> 
    </void> 
    <void property="endLabel"> 
     <string>*</string> 
    </void> 
   </object> 
   <object idref="ClassNode8"/> 
   <object idref="ClassNode12"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="bentStyle"> 
     <object class="com.horstmann.violet.BentStyle" field="HVH"/> 
    </void> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="V"/> 
    </void> 
   </object> 
   <object idref="ClassNode12"/> 
   <object idref="InterfaceNode2"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="V"/> 
    </void> 
    <void property="lineStyle"> 
     <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> 
    </void> 
   </object> 
   <object idref="ClassNode5"/> 
   <object idref="ClassNode8"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="bentStyle"> 
     <object class="com.horstmann.violet.BentStyle" field="VH"/> 
    </void> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="V"/> 
    </void> 
    <void property="lineStyle"> 
     <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> 
    </void> 
   </object> 
   <object idref="ClassNode2"/> 
   <object idref="ClassNode8"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.ClassRelationshipEdge"> 
    <void property="endArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="V"/> 
    </void> 
    <void property="lineStyle"> 
     <object class="com.horstmann.violet.LineStyle" field="DOTTED"/> 
    </void> 
   </object> 
   <object idref="InterfaceNode1"/> 
   <object idref="ClassNode8"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.NoteEdge"/> 
   <object idref="InterfaceNode1"/> 
   <object idref="NoteNode1"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.NoteEdge"/> 
   <object idref="ClassNode6"/> 
   <object idref="NoteNode2"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.NoteEdge"/> 
   <object idref="ClassNode7"/> 
   <object idref="NoteNode2"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.NoteEdge"/> 
   <object idref="ClassNode8"/> 
   <object idref="NoteNode2"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.NoteEdge"/> 
   <object idref="ClassNode1"/> 
   <object idref="NoteNode3"/> 
  </void> 
 </object> 
</java> 
