<html>

<!--
    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.
-->

<!-- 
Author: Ruslan Scherbakov
-->

<title>
    JPDA generated documentation
</title>

<body>

<h1>JPDA generated documentation</h1>

<p>
JDWP Agent components (HTML format)
<ul>
    <li><a href="jdwp/generic/html/index.html">generic</a>
        - list of JDWP generic and JDWP transport constants and structures
    </li>
    <li><a href="jdwp/core/html/index.html">core</a> 
        - JDWP agent core containing management of threads, commands, packets, etc.
    </li>
    <li><a href="jdwp/commands/html/index.html">commands</a> 
        - implementation of JDWP commands
    </li>
    <li><a href="jdwp/transport/html/index.html">transport</a> 
        - implementation of JDWP transport
    </li>
    <li><a href="jdwp/test/html/index.html">test</a> 
        - JDWP unit tests
    </li>
</ul>
</p>

</body>
</html>
