<?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 id="ClassNode0" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>TransformStream</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>374.71280028618764</double> 
     <double>246.7337520453866</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="InterfaceNode0" class="com.horstmann.violet.InterfaceNode"> 
    <void property="methods"> 
     <void property="text"> 
      <string>get_size()
read()
open()
close()
is_repeatable()</string> 
     </void> 
    </void> 
    <void property="name"> 
     <void property="text"> 
      <string>«interface»
Stream</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>576.3280239753375</double> 
     <double>43.34897573453627</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode1" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>FileStream</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>741.9465965652432</double> 
     <double>246.8166228690261</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object class="com.horstmann.violet.PackageNode"> 
    <void method="addChild"> 
     <object id="ClassNode2" class="com.horstmann.violet.ClassNode"> 
      <void property="name"> 
       <void property="text"> 
        <string>CompressionFilter</string> 
       </void> 
      </void> 
     </object> 
    </void> 
    <void method="addChild"> 
     <object id="ClassNode3" class="com.horstmann.violet.ClassNode"> 
      <void property="name"> 
       <void property="text"> 
        <string>EncryptionFilter</string> 
       </void> 
      </void> 
     </object> 
    </void> 
    <void method="addChild"> 
     <object id="ClassNode4" class="com.horstmann.violet.ClassNode"> 
      <void property="name"> 
       <void property="text"> 
        <string>ExtAppFilter</string> 
       </void> 
      </void> 
     </object> 
    </void> 
    <void method="addChild"> 
     <object id="InterfaceNode1" class="com.horstmann.violet.InterfaceNode"> 
      <void property="methods"> 
       <void property="text"> 
        <string>filter(in, out)</string> 
       </void> 
      </void> 
      <void property="name"> 
       <void property="text"> 
        <string>«interface»
Filter</string> 
       </void> 
      </void> 
     </object> 
    </void> 
    <void property="name"> 
     <string>Filters</string> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>270.0</double> 
     <double>480.0</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="NoteNode0" class="com.horstmann.violet.NoteNode"> 
    <void property="text"> 
     <void property="text"> 
      <string>A Stream to read data from an abstract
file represented by a SourceFile</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>781.6101730552666</double> 
     <double>137.2161620284267</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="NoteNode1" class="com.horstmann.violet.NoteNode"> 
    <void property="text"> 
     <void property="text"> 
      <string>A stream to get data from an arbitrary file
descritor. size must be know in advance.</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>580.8730162779191</double> 
     <double>392.3137084989848</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode5" class="com.horstmann.violet.ClassNode"> 
    <void property="attributes"> 
     <void property="text"> 
      <string>fd : int
size : off_t</string> 
     </void> 
    </void> 
    <void property="name"> 
     <void property="text"> 
      <string>FdStream</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>565.61818228198</double> 
     <double>253.24264068711926</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object idref="ClassNode2"/> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>281.2426406871193</double> 
     <double>620.6274169979695</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object idref="ClassNode3"/> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>429.51546936508925</double> 
     <double>624.9910026589843</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object idref="ClassNode4"/> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>568.2426406871186</double> 
     <double>624.6274169979695</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="NoteNode2" class="com.horstmann.violet.NoteNode"> 
    <void property="text"> 
     <void property="text"> 
      <string>A Filter do a tranformation on a stream of data.
The main difference with TransformSources is that
a Filter can be applied to several sources.
NOTES: 
- filter() method still to define
- A filter_changes_size() method can be useful
</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>724.6274169979696</double> 
     <double>510.3015151901651</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode6" class="com.horstmann.violet.ClassNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>FilteredStream</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>439.0</double> 
     <double>357.0</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="ClassNode7" class="com.horstmann.violet.ClassNode"> 
    <void property="attributes"> 
     <void property="text"> 
      <string>size : off_t
lba: off_t</string> 
     </void> 
    </void> 
    <void property="name"> 
     <void property="text"> 
      <string>CutOutStream</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>321.0</double> 
     <double>358.0</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="NoteNode3" class="com.horstmann.violet.NoteNode"> 
    <void property="text"> 
     <void property="text"> 
      <string>This can be implemented as a Filter, but
it has no sense to have the same cut out
filter to several sources, so this is a better
place.</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>67.0</double> 
     <double>276.0</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="NoteNode4" class="com.horstmann.violet.NoteNode"> 
    <void property="text"> 
     <void property="text"> 
      <string>A stream that applies some transformation
to the contents of another stream.</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>122.0</double> 
     <double>183.0</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object idref="InterfaceNode1"/> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>437.57046683437824</double> 
     <double>509.23933115391503</double> 
    </void> 
   </object> 
  </void> 
  <void method="addNode"> 
   <object id="InterfaceNode2" class="com.horstmann.violet.InterfaceNode"> 
    <void property="name"> 
     <void property="text"> 
      <string>«interface»
SourceFile</string> 
     </void> 
    </void> 
   </object> 
   <object class="java.awt.geom.Point2D$Double"> 
    <void method="setLocation"> 
     <double>920.6530291048848</double> 
     <double>248.90158697766475</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="ClassNode1"/> 
   <object idref="InterfaceNode0"/> 
  </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="endLabel"> 
     <string>1</string> 
    </void> 
    <void property="startArrowHead"> 
     <object class="com.horstmann.violet.ArrowHead" field="BLACK_DIAMOND"/> 
    </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="ClassNode5"/> 
   <object idref="InterfaceNode0"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.NoteEdge"/> 
   <object idref="ClassNode5"/> 
   <object idref="NoteNode1"/> 
  </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> 
   </object> 
   <object idref="ClassNode7"/> 
   <object idref="ClassNode0"/> 
  </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> 
   </object> 
   <object idref="ClassNode6"/> 
   <object idref="ClassNode0"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.NoteEdge"/> 
   <object idref="ClassNode7"/> 
   <object idref="NoteNode3"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.NoteEdge"/> 
   <object idref="ClassNode0"/> 
   <object idref="NoteNode4"/> 
  </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="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="ClassNode3"/> 
   <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="ClassNode4"/> 
   <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="ClassNode6"/> 
   <object idref="InterfaceNode1"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.NoteEdge"/> 
   <object idref="InterfaceNode1"/> 
   <object idref="NoteNode2"/> 
  </void> 
  <void method="connect"> 
   <object class="com.horstmann.violet.NoteEdge"/> 
   <object idref="ClassNode1"/> 
   <object idref="NoteNode0"/> 
  </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="ClassNode1"/> 
   <object idref="InterfaceNode2"/> 
  </void> 
 </object> 
</java>