<!--

  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.

-->

<html>
<body>

This package and its subpackages contain a support library
for manipulating ActionScript bytecode (ABC).

<p>
ABC is the bytecode executed by the ActionScript Virtual Machine
in Flash Player.
The format and semantics of ABC is described in the document
<a href="http://learn.adobe.com/wiki/display/AVM2/ActionScript+Virtual+Machine+2"><i>ActionScript Virtual Machine 2 (AVM2) Overview</i></a>.
This library uses a set of visitor-pattern interfaces to
expose the structure of ABC.
</p>

<p>
The immediate contents of this package are classes for reading and writing ABC,
such as <code>ABCParser</code> and <codde>ABCEmitter</code>.
</p>

</body>
</html>
