About This Content

February 24, 2005

License

The Eclipse Foundation makes available all content in this plug-in ("Content").
Unless otherwise indicated below, the Content is provided to you under the
terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy
of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For
purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the
Content is being redistributed by another party ("Redistributor") and different
terms and conditions may apply to your use of any object code in the Content.
Check the Redistributor's license that was provided with the Content. If no
such license exists, contact the Redistributor. Unless otherwise indicated
below, the terms and conditions of the EPL still apply to any source code in
the Content.

Disassembler

This plug-in contains a bytecode disassembler ("Disassembler") that can produce
a listing of the Java assembler mnemonics ("Assembler Mnemonics") for a Java
method. If you use the Disassembler to view the Assembler Mnemonics for a
method, you should ensure that doing so will not violate the terms of any
licenses that apply to your use of that method, as such licenses may not permit
you to reverse engineer, decompile, or disassemble method bytecodes.

