<?xml version = "1.0" encoding = "ISO-8859-1" ?>
<!--
   ====================================================================
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
   ====================================================================
-->
<!DOCTYPE argo SYSTEM "argo.dtd" >
<argo>
  <documentation>
    <authorname></authorname>
    <version></version>
    <description>
      
    </description>
  </documentation>
  
  <searchpath href="PROJECT_DIR" />
  <member
    type="xmi"
    name="poi.xmi"
  />
  <member
    type="pgml"
    name="POIFSClassDiagram.pgml"
  />
  <member
    type="pgml"
    name="projectmain.pgml"
  />
  <member
    type="pgml"
    name="readFileFromFilesystemSequenceDiagram.pgml"
  />
  <member
    type="pgml"
    name="readFileSystemDirectorySequenceDiagram.pgml"
  />
  <member
    type="pgml"
    name="writeFilesystemSequenceDiagram.pgml"
  />
  <member
    type="pgml"
    name="poifsAnalysisClasses.pgml"
  />
  <member
    type="pgml"
    name="POIFSInitialization.pgml"
  />
  <member
    type="pgml"
    name="HSSFOperationalUseCases.pgml"
  />
  <member
    type="pgml"
    name="HSSFSerializerUseCases.pgml"
  />
  <member
    type="pgml"
    name="HSSFUseCases.pgml"
  />
  <member
    type="pgml"
    name="POIUseCases.pgml"
  />
  <member
    type="pgml"
    name="analysismain.pgml"
  />
  <member
    type="pgml"
    name="readFilesystemSequenceDiagram.pgml"
  />
  <member
    type="pgml"
    name="PropertyTableClassDiagram.pgml"
  />
  <member
    type="pgml"
    name="utilClasses.pgml"
  />
  <member
    type="pgml"
    name="POIFSAddDocument.pgml"
  />
  <member
    type="pgml"
    name="BlockClassDiagram.pgml"
  />
  <member
    type="pgml"
    name="POIFSPropertyTablePreWrite.pgml"
  />
  <member
    type="pgml"
    name="POIFSRootPropertyPreWrite.pgml"
  />
  <member
    type="pgml"
    name="POIFSWriteFilesystem.pgml"
  />
  <member
    type="pgml"
    name="POIFSLifeCycle.pgml"
  />
  <member
    type="pgml"
    name="HSSFSerializerClassDiagram.pgml"
  />
  <historyfile name="" />
  <stats>
    {}
  </stats>
</argo>
